- Kubernetes: docker 容器管理工具,目前公有雲間公認且推廣技術,地端虛擬機可由kubeadm、kubectl、kubelet達到公有雲上執行的效果。
- kubeadm: k8s用於引導群集的命令
- kubelet: 負責啟動Pod跟容器間的操作
- kubectl: 執行k8s命令
- 作業環境
安裝kubeadm、kubectl、kubelet
1
2
3
4
5
6
7
8apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg |
apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectlkubeadm初始化
- 先取得kubeadm token
1
kubeadm token generate
- 先取得kubeadm token
用取得的token來啟動kubeadm
- pod-network-cidr 10.244.0.0/16 為預設值,若要改動記得修改kubeadm.ymal裡面的配置
1
2
3
4
5kubeadm init \
--pod-network-cidr 10.244.0.0/16 \
--token '取得的Token' \
--apiserver-advertise-address 10.9.10.104 \
--ignore-preflight-errors=Swap
- pod-network-cidr 10.244.0.0/16 為預設值,若要改動記得修改kubeadm.ymal裡面的配置
為kubeadm新增憑證捷徑且賦予權限
1
2mkdir ~/.kube && cp /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -g) ~/.kube/config若有需要做叢集,k8s pod 間網路的溝通須由代理完成,這邊使用flannel實作
1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
執行完後檢查flannel是否正常執行
1
kubectl get pod -n kube-system
kubeadm init 後系統會提示nodes加入master的指令,可直接複製貼上於node機器上執行(要先安裝好kubeadm、kubectl、kubelet)
1
2kubeadm join ............................................. \
--ignore-preflight-errors=Swap安裝過程中或是爾後部屬yaml檔為正常啟動可以檢查k8s Log來查看問題
- 由’get pod’來觀察取得有問題的容器名稱
- 再由’describe’來訂閱容器執行時的log
1
2kubectl get pod -n 'Pod Name Space'
kubectl describe pod 'Pod Name' -n 'Pod Name Space'
若有發生node連不到master的話可以嘗試在kubeadm reset前先刪除flannel暫存資料
1 | rm -rf /var/lib/cni/flannel/* && rm -rf /var/lib/cni/networks/cbr0/* && ip link delete cni0 |