因爲一些莫可名狀的原因,國內網絡使用 Kubeadm 頗有難度,這裏大概說一下過程中的一些坑。
主體流程遵循官網指南:https://kubernetes.io/docs/getting-started-guides/kubeadm/
1/4 準備工作
這裏用包管理的方式安裝 kubeadm、Docker 等組件。需要注意一點點的是,如果用的非 Root 用戶,要注意 sudo 的時候的環境代理設置問題。或者乾脆在 apt/yum 的配置文件中寫入代理服務器。
另外這裏安裝 Docker 之後,注意給 Docker 配置代理。或者可以直接想法子搞到下面列表中的鏡像,並導入 Docker 之中:
鏡像準備
下面提到的鏡像基於目前的 1.6.2 版本,每次更新都會有不同。
Image | Ver | Component |
---|---|---|
gcr.io/google_containers/kube-proxy-amd64 | v1.6.2 | Kubernetes |
gcr.io/google_containers/kube-controller-manager-amd64 | v1.6.2 | Kubernetes |
gcr.io/google_containers/kube-apiserver-amd64 | v1.6.2 | Kubernetes |
gcr.io/google_containers/kube-scheduler-amd64 | v1.6.2 | Kubernetes |
gcr.io/google_containers/etcd-amd64 | 3.0.17 | Kubernetes |
gcr.io/google_containers/pause-amd64 | 3.0 | Kubernetes |
gcr.io/google_containers/k8s-dns-sidecar-amd64 | 1.14.1 | DNS |
gcr.io/google_containers/k8s-dns-kube-dns-amd64 | 1.14.1 | DNS |
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 | 1.14.1 | DNS |
gcr.io/google_containers/etcd | 2.2.1 | Calico |
quay.io/calico/node | v1.1.3 | Calico |
quay.io/calico/cni | v1.8.0 | Calico |
quay.io/calico/kube-policy-controller | v0.5.4 | Calico |
2/4 Master 初始化
kubeadm init
這裏的幾個問題:
- 如果準備採用 flannel 插件,需要
-pod-network-cidr 10.244.0.0/16
參數 - Ubuntu 下可能會出現無限等待 Node 加入的情況,可能的原因是 /etc/resolv.conf 中有關於 localhost 的 search 記錄,刪掉這行就能解決。
- 如果準備採用 Calico 插件,那麼要注意 Calico 的 YAML 中的 ip pool 跟集羣設置一致。
- 如果不是預先準備好的備份,過程會比較長,耐心。。
Init 成功之後會出一堆文本信息,其中包含幾點內容,最好保存下來:
- 自動生成的 kubectl config 文件,可以複製到 ~/.kube/config 中作爲缺省 kubectl 使用。
- 把新節點加入集羣的方法。
另外這裏還有個提示——沒有安裝 Pod Network。
3/4 安裝 Pod Network
這一步很重要,所有的應用包括 Kube DNS 在內,都依賴於此。
如上文所示,準備使用的是 Calico,這裏值得注意的一坑是,不同版本的 Kubernetes 會有不同的 Calico 安裝,1.6 版本應該使用的是:kubectl apply -f http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/
還有一些其他的安裝方式可以參考。
Calico 的注意事項
- 他的 ETCD 服務器要求裝在 Master 所在的 Node 上,使用的是 nodeSelector 的方式,選擇標籤:
node-role.kubernetes.io/master: ""
。 - 上文提到的 pod network cidr 和 ip pool 的一致性問題
-
--service-cidr
和 IP Pool 不能重疊
4/4 加入節點
在其他 Node 上做好準備工作之後,用kubeadm init
命令中提到的kubeadmin join
方法加入集羣。
本文轉自中文社區-kubeadm 安裝 Kubernetes 1.6.2 過程中的一些坑