1. 安装Docker
修改docker Cgroup Driver 和 kubelet 相同,这里使用 systemd
修改 /etc/docker/daemon.json 后重启docker
"exec-opts": ["native.cgroupdriver=systemd"]
2. 添加kubernetes镜像源
/etc/apt/source.list 最后一行增加
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
安装工具包
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
出现KEY问题,两个KEY都要
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com XXXX
3. 获取镜像
列出kubeadm需要的镜像
kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.21.3
k8s.gcr.io/kube-controller-manager:v1.21.3
k8s.gcr.io/kube-scheduler:v1.21.3
k8s.gcr.io/kube-proxy:v1.21.3
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0
源镜像下载很慢,这里使用dockerhub的镜像代替
主要使用 k8smx/ 下的镜像,也可以使用别的,注意版本就是
docker pull k8smx/kube-apiserver:v1.21.3-rc.0
docker pull k8smx/kube-controller-manager:v1.21.3-rc.0
docker pull k8smx/kube-scheduler:v1.21.3-rc.0
docker pull k8smx/kube-proxy:v1.21.3-rc.0
docker pull k8smx/pause:3.4.1
docker pull k8smx/etcd:3.4.13-0
docker pull coredns/coredns:1.8.0
修改tar和kubeadm config images list 相同
docker tar k8smx/kube-apiserver:v1.21.3-rc.0 k8s.gcr.io/kube-apiserver:v1.21.3
docker tar k8smx/kube-controller-manager:v1.21.3-rc.0 k8s.gcr.io/kube-controller-manager:v1.21.3
docker tar k8smx/kube-scheduler:v1.21.3-rc.0 k8s.gcr.io/kube-scheduler:v1.21.3
docker tar k8smx/kube-proxy:v1.21.3-rc.0 k8s.gcr.io/kube-proxy:v1.21.3
docker tar k8smx/pause:3.4.1 k8s.gcr.io/pause:3.4.1
docker tar k8smx/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker tar coredns/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
以上步骤在集群物理节点上重复
初始化集群
任意一台机器作为 master 执行一下命令
kubeadm init --pod-network-cidr=10.196.0.0/16
注意用于配置 kubectl 连接 kubelet 的指令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
以及带token加入集群的指令
kubeadm join 192.168.31.231:6443 --token ov2m1v.9wo29jgfg8b53ixg \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxx
检查集群节点状态,会发现子节点没有处于 Ready 状态,需要配置网络插件
kubectl get nodes
网络插件
这方面有很多选择,这里使用calico ,直接使用现成的配置文件
calico.yaml下载
kubectl apply -f calico.yaml
再次使用 kubectl get nodes 查看集群节点已经 Ready