一、前期準(zhǔn)備
準(zhǔn)備兩臺(tái) Ubuntu18.04 至少雙核雙線程
| 主機(jī)名 | IP | 說(shuō)明 |
|---|
| master | 192.168.20.5 | k8s管理節(jié)點(diǎn) | | node | 192.168.20.6 | k8s工作節(jié)點(diǎn) |
二、修改主機(jī)名、更新host
編輯 /etc/hostname 修改主機(jī)名。
將 /etc/cloud/cloud.cfg 中的 preserve_hostname: false 改為 preserve_hostname: true,否則重啟后主機(jī)名仍會(huì)恢復(fù)。
在 master 的 /etc/hosts 中進(jìn)行如下修改:
127.0.1.1 master
192.168.20.5 master
192.168.20.6 node
在 node 的 /etc/hosts 中進(jìn)行如下修改:
127.0.1.1 node
192.168.20.5 master
192.168.20.6 node
安裝 docker
參考:https://blog.csdn.net/k_young1997/article/details/104325159
修改 docker 驅(qū)動(dòng)
在 /etc/docker/daemon.json 中添加:
'exec-opts': ['native.cgroupdriver=systemd']
重啟 docker:
systemctl restart docker
查看 docker 驅(qū)動(dòng):
root@master:/# docker info | grep 'Cgroup Driver'
Cgroup Driver: systemd
kubernetes 官方建議 docker 驅(qū)動(dòng)采用 systemd,當(dāng)然可以不修改,只是kubeadm init時(shí)會(huì)有
warning([WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https:///docs/setup/cri/)
可以忽略,生產(chǎn)環(huán)境建議修改,因?yàn)楦€(wěn)定。
備注:
以上操作需在兩臺(tái)主機(jī)上執(zhí)行
三、關(guān)閉防火墻、swap
1.防火墻
sudo ufw disable
2.關(guān)閉 swap
Kubernetes 1.8開始要求必須禁用Swap,如果不關(guān)閉,默認(rèn)配置下kubelet將無(wú)法啟動(dòng)。
將 /etc/fstab 中的這一行注釋掉
/swap.img none swap sw 0 0
執(zhí)行
sudo swapoff -a
備注:
以上兩個(gè)步驟需要在兩臺(tái)主機(jī)執(zhí)行
四、安裝 kubelet、kubeadm、kubectl
1.添加阿里源
由于國(guó)外網(wǎng)站訪問較慢容易卡死,所以需要添加源。
在 /etc/apt/sources.list 中添加:
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
添加源的 key :
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
更新源:
sudo apt-get update
備注:
1.以上操作需在兩臺(tái)主機(jī)上執(zhí)行
2.若不添加源的 key ,在更新源時(shí)會(huì)有如下報(bào)錯(cuò):
Err:3 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
2.開始安裝
在 兩臺(tái) 服務(wù)器安裝 kubelet、kubeadm、kubectl
sudo apt-get install -y kubelet kubeadm kubectl
查看版本號(hào):
root@master:/# kubelet --version
Kubernetes v1.19.3
啟動(dòng) kubelet:
systemctl start kubelet
五、部署主(管理)節(jié)點(diǎn)
以下操作僅在 master 主機(jī)上執(zhí)行
1.查看 kubernetes 所需鏡像列表
獲取最新版所需鏡像列表
kubeadm config images list
結(jié)果:
隨著不斷更新,獲取到的版本信息會(huì)有不同
k8s.gcr.io/kube-apiserver:v1.19.3
k8s.gcr.io/kube-controller-manager:v1.19.3
k8s.gcr.io/kube-scheduler:v1.19.3
k8s.gcr.io/kube-proxy:v1.19.3
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0
2.執(zhí)行 init
kubeadm init --kubernetes-version=v1.19.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
當(dāng)出現(xiàn)如下內(nèi)容時(shí)**(要保存下來(lái),后邊有用)**,執(zhí)行成功:
kubeadm join 192.168.20.5:6443 --token gmhz6l.q4zvle4gqceoy4tp --discovery-token-ca-cert-hash sha256:bad772999ca7a8de85eb64a0fe570ae3cef92781e2e2bf9f9f6cbc793f1087f1
備注:
kubeadm init 命令默認(rèn)會(huì)去 k8s.gcr.io 倉(cāng)庫(kù)拉取鏡像,由于是國(guó)外網(wǎng)站基本不能拉下鏡像。可以通過(guò) --image-repository 參數(shù)指定為阿里鏡像即可。
3.失敗重試
若執(zhí)行失敗,可執(zhí)行如下命令,清除執(zhí)行 init 產(chǎn)生的垃圾
kubeadm reset
rm -rf /etc/kubernetes
4.非root用戶操作 kubectl
部署成功后,如果我們想使用非root用戶操作 kubectl,可以使用以下命令,這也是 kubeadm init 輸出的一部分
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
六、node節(jié)點(diǎn)執(zhí)行join
1.在node節(jié)點(diǎn)執(zhí)行命令
kubeadm join 192.168.20.5:6443 --token blolnk.f5g0d2nf1uqmak48 --discovery-token-ca-cert-hash sha256:a7e4bee8d61d2c70f394512ea3e170a529470700ccab065125a50e58d15db1d9
備注:
該命令在執(zhí)行完 init 命令后會(huì)打印出,也即 5.2 的成功標(biāo)志。
2.查看節(jié)點(diǎn)狀態(tài)
在 master 節(jié)點(diǎn)查看節(jié)點(diǎn)狀態(tài):
root@master:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 50m v1.19.3
node NotReady <none> 3m52s v1.19.3
可以看到所有節(jié)點(diǎn)都處于 未就緒 狀態(tài)。
七、搭建 flannel 網(wǎng)絡(luò)集群
kubectl apply -f https://raw./coreos/flannel/master/Documentation/kube-flannel.yml
此時(shí)再次查看節(jié)點(diǎn)狀態(tài),全部已就緒:
root@master:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 79m v1.19.3
node Ready <none> 33s v1.19.3
備注:
如果出現(xiàn)以下報(bào)錯(cuò):
Unable to connect to the server: read tcp 192.168.20.5:37246->151.101.228.133:443: read: connection reset by peer
可以安裝 apt-get install ca-certificates 和 apt-get install ssl-cert 解決。
參考資料:
https://www.cnblogs.com/xiaoxuebiye/p/11256292.html
https://www.cnblogs.com/rainingnight/p/using-kubeadm-to-create-a-cluster-1-13.html
https://www.cnblogs.com/rainingnight/p/using-kubeadm-to-create-a-cluster.html
|