自學Kubernetes,沒有練習環境,指路
https://www.katacoda.com/courses/kubernetes/getting-started-with-kubeadm
有很多可以用來學習的scenarios, 只是k8s的版本比較低,但僅用來練習也夠了
可以單node 集群,也可以多nodes 集群
很簡單的配置1個master 1個worker的步驟:
1. kubeadm init --token=102952.1a7dd4cc8d1f4cc5 --kubernetes-version $(kubeadm version -o short), 這里的版本號是默認的1.14.10。kubeadm的版本號是1.14.X, --kubernetes-version $(kubeadm version -o short)寫成其他版本號會報錯
2.按照提示:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.安裝calico,這個是CNI插件,用來實現pod間的通信,否則節點會顯示notReady
1)下載calico.yaml文件: https://docs.projectcalico.org/v3.10/manifests/calico.yaml
2)kubectl apply -f calico.yaml
在這里遇到了問題,用最新版本的calico.yaml文件會報錯:
unable to recognize "calico.yaml": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1
原因是kubenetes的版本太老,與calico最新版不兼容,用v3.10的calico版本解決了這個問題
4. 在worker節點上,執行:
kubeadm join 172.17.0.33:6443 --token 102952.1a7dd4cc8d1f4cc5 \
> --discovery-token-ca-cert-hash sha256:e25d1baae4af73e325db302ab808ab6c67af6197f870d5001ed1603bb952364a
以上這步是將worker節點加入集群
5.在Master節點上檢查檢查node的狀態:
kubectl get nodes
報錯:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
在Master上執行:
sudo cp /etc/kubernetes/admin.conf $HOME/ sudo chown $(id -u):$(id -g) $HOME/admin.conf export KUBECONFIG=$HOME/admin.conf
6.再次kubectl get nodes 可以顯示節點了
7.在worker節點上執行 kubectl get nodes
報錯:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
解決方法:
1)將主節點(master節點)中的【/etc/kubernetes/admin.conf】文件拷貝到從節點相同目錄下:
scp -r /etc/kubernetes/admin.conf @node_ip:/etc/kubernetes/admin.conf
2) 配置環境變量:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
3) 立即生效
source ~/.bash_profile