自学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