用 kubeadm –config 建立 k8s 叢集

NO IMAGE

用 kubeadm –config 建立 k8s 叢集

(金慶的專欄 2018.5)

利用阿里雲的yum映象和docker映象,可以不用代理直接安裝建立 k8s 叢集。

K8s 版本為 v1.10.3

參考:

https://blog.csdn.net/u010209217/article/details/78533936
Kubernetes 1.7.5部署以及kubernates-dashboard 1.7安裝

https://www.cnblogs.com/liangDream/p/7358847.html
CentOS7.3利用kubeadm安裝kubernetes1.7.3完整版(官方文件填坑篇)

https://yq.aliyun.com/articles/66474
阿里雲快速部署Kubernetes – VPC環境

Docker 已安裝。

採用阿里雲的yum源映象,直接安裝:

yum -y install kubectl kubeadm kubelet

vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf, 為kubelet新增一個額外的引數,
這樣kubelet就不會在啟動pod的時候去牆外的k8s倉庫拉取pause-amd64:3.0映象了
–pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0

export KUBE_REPO_PREFIX 的方式指定kube映象庫已在1.8版本後無效,需要改為配置檔案中配置 imageRepository。

kubeadm.yaml 示例:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
advertiseAddress: "10.20.79.10"
networking:
podSubnet: "10.244.0.0/16"
kubernetesVersion: "v1.10.3"
imageRepository: "registry.cn-hangzhou.aliyuncs.com/google_containers"

初始化命令為:

kubeadm init --config kubeadm.yaml

其他注意點:

需要開啟 kubelet.service, 不然檢查會報警告:

systemctl enable kubelet && systemctl start kubelet

需要關閉 swap:

[ERROR Swap]: running with swap on is not supported. Please disable 
swap
swapoff -a

可以檢視 ls -ltr /etc/kubernetes/manifests/
yaml檔案列表,每個檔案都會寫著映象的地址和版本

[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
[ERROR Port-10250]: Port 10250 is in use

kubeadm會自動檢查當前環境是否有上次命令執行的“殘留”。如果有,必須清理後再行執行init。我們可以通過”kubeadm reset”來清理環境,以備重來。

journalctl -xeu kubelet
用來檢視kubelet執行有什麼錯誤。

failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"

需要修改 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload && systemctl restart kubelet