使用kubeadm快速安裝k8s

使用kubeadm快速安裝

kubeadm是一種快速安裝kubernetes的方法,最早的安裝方法是完全通過二進制進行安裝,但是隨着k8s技術的發展出現了使用自身管理組件的方法去安裝,說白了就是先安裝一個kubeadm和一個kubelet.接下來的事情就交給kubeadm去做就好了.

安裝kubeadm

使用Centos7安裝需要手動添加源

#!/bin/bash
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
yum install -y bash-completion*
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
systemctl enable kubelet.service

腳本參考博客1

安裝kubernets-master

現在我們的服務器已經擁有了kubeadm和kubelet,現在就可以讓kubeadm來幫助我們完成kubernets的安裝.

編輯kubeadm.yaml

apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.1.12.55
nodeRegistration:
  taints:
  - effect: PreferNoSchedule
    key: node-role.kubernetes.io/master
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.15.0
networking:
  podSubnet: 10.244.0.0/16

kubeadm本質上也是去創建pod,默認情況下kubeadm會幫我們生成如下yaml

$ cd /etc/kubernetes/manifests/
$ ls
etcd.yaml  kube-apiserver.yaml  kube-controller-manager.yaml  kube-scheduler.yaml

這些yaml屬於static pod(在kubelet啓動的時候會自動開啓)

在執行kubeadm的時候指定kubeadm.yaml就是爲了指定生成yaml的方式,上文自定義了本地的ip並且使master節點可以部署pod

開始安裝

在開始安裝之前需要準備一下docker的image,因爲kubeadm默認回去國外倉庫拉取鏡像,由於天朝身處高位所以只能另尋出路.

#!/bin/bash
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
docker pull registry.cn-hangzhou.aliyuncs.com/mirror-suke/flannel:v0.11.0-amd64
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/mirror-suke/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1

做法很簡單就是上阿里雲吧需要的鏡像下載下來然後打上我們需要的tag

接下來直接執行命令安裝即可

$ kubeadm init --config kubeadm.yaml

在執行結果裏會讓我們保存一個token和修改命令的執行權限:

  • 返回給我們的命令可以用來在其他服務器增加node
  • 修改權限是爲了讓我們可以使用kubectl
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

安裝網絡插件

安裝完成後執行命令查看狀態

$ kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   3h14m   v1.15.3
k8s-work01   Ready    <none>   101m    v1.15.3
k8s-work02   Ready    <none>   76m     v1.15.3

如果出現NoReady是因爲我們還需要安裝網絡插件

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

安裝完成之後就會變成Ready的狀態

現在我們的master基本上就已經安裝完成了.

安裝kubenetes-work

work節點安裝相對容易很多,原理和master一樣:

  1. 安裝kubeadm和kubelet
  2. 下載需要的鏡像
  3. 將master返回的命令執行

執行命令查看即可

$ kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   3h14m   v1.15.3
k8s-work01   Ready    <none>   101m    v1.15.3
k8s-work02   Ready    <none>   76m     v1.15.3

Kubectl 多集羣合併

mac命令自動提示


  1. https://www.cnblogs.com/wzxmt/p/11160256.html ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章