一、环境准备

#1.关闭 Swap 内存,配置完成建议重启一下
vim /etc/fstab    #注释下面相似的一行
#/swapfile     none            swap    sw              0       0

#2.配置免密登录,要求master节点可以直接免密登录工作节点
参考https://blog.csdn.net/Merry_clown/article/details/139736511?spm=1001.2014.3001.5502

#3.安装 docker
apt install docker.io -y

#4.配置docker配置文件
cat << EOF >> /etc/docker/daemon.json
{
  "registry-mirrors": ["https://ej3odski.mirror.aliyuncs.com"],
  "exec-opts": [ "native.cgroupdriver=systemd" ]
}
EOF

#重新启动docker
systemctl daemon-reload && systemctl restart docker

二、部署k8s

#1.安装ssl传输
apt update && apt install -y apt-transport-https

#2.下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 


#3.添加 k8s 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

#4.下载 kubectl,kubeadm以及 kubelet,最新版使用contained
#apt update && apt install -y kubelet kubeadm kubectl
apt-get -y install kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00

三、master节点初始化

#1.初始化 master 节点
kubeadm init \
--apiserver-advertise-address=192.168.100.132 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16

#--apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的master节点ip
#--image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉k8s的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。
#--pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用calico作为 k8s 的网络,所以这里填10.244.0.0/16就好
#--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定。
#--ignore-preflight-errors: 忽略初始化时遇到的错误,比如说我想忽略 cpu 数量不够 2 核引起的错误,就可以用--ignore-preflight-errors=CpuNum。错误名称在初始化错误时会给出来。

#2.看到如下界面,说明初始化成功
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.100.132:6443 --token grbfv4.tyalbpkljc17y53o \
	--discovery-token-ca-cert-hash sha256:b83956f3040a5a622a071294188a1268afcdb9ffed8a2c8849a5f9e9e5c84507 


#复制kubeadm join开头的命令,工作节点加入时要用到
#如果不慎遗失该命令,可以在master节点使用kubeadm token create --print-join-command命令重新生成
#如果在初始化过程中出现了任何Error导致初始化终止了,使用kubeadm reset重置之后再重新进行初始化。

#3.工作节点加入执行以上命令即可
kubeadm join 192.168.100.132:6443 --token grbfv4.tyalbpkljc17y53o \
	--discovery-token-ca-cert-hash sha256:b83956f3040a5a622a071294188a1268afcdb9ffed8a2c8849a5f9e9e5c84507

#4.工作节点执行kubectl get nodes   出现以下问题
#The connection to the server localhost:8080 was refused - did you specify the right host or port?

#解决办法:拷贝master节点的/etc/kubernetes/admin.conf 到工作节点的相同位置
scp /etc/kubernetes/admin.conf 工作节点ip:/etc/kubernetes/

#工作节点执行以下命令即可
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

四、部署calico网络

#1.下载calico.yml
curl -O https://docs.tigera.io/archive/v3.25/manifests/calico.yaml

#2.#修改calico.yaml中的CALICO_IPV4POOL_CIDR  与pod-network-cidr一样
vim calico.yml
- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"   #取消注释,修改内容


#3.修改镜像的源路径,避免下载过慢导致失败,本地上传镜像最好,本文章有calico镜像包
sed -i 's#docker.io/##g' calico.yaml

#4.下载calico镜像失败,可以上传本地镜像,dcoker导入即可,本文有calico.tar
#注意全部节点都需要上传导入镜像
docker load -i calico.tar

#5.k8s执行calico.yaml文件部署网络
kubectl apply -f calico.yaml

#6.查看calico网络部署情况,等待status状态都是 running 即成功
kubectl get all -n kube-system

五、新加入节点

#1.查看controlPlaneEndpoint时否为空,为空补齐
kubectl -n kube-system get cm kubeadm-config -oyaml

    kubernetesVersion: v1.23.17
    controlPlaneEndpoint: 192.168.100.132:6443
	
#2.修改加入controlPlaneEndpoint
kubectl -n kube-system edit cm kubeadm-config



#3.查看集群加入命令,worker节点专用
kubeadm token create --print-join-command

kubeadm join 192.168.126.20:6443 --token mohkc1.d8y7uy2pvdkohbxy \
--discovery-token-ca-cert-hash sha256:10f6069ef4521481aa956b55130aab7a9c3494dff82d0566c5ce9baece9cd7f8
	
#4.新加入master节点,生成key
kubeadm init phase upload-certs --upload-certs

kubeadm join 192.168.126.20:6443 --token mohkc1.d8y7uy2pvdkohbxy \
--discovery-token-ca-cert-hash sha256:10f6069ef4521481aa956b55130aab7a9c3494dff82d0566c5ce9baece9cd7f8 --control-plane --certificate-key 7a670e92aaf5bdfd45f9ffde01911f9cc237c30ae808ea0e911881f19df80f62 --v=5

#5.新的节点加入需要部署网络插件,需要导入calico镜像

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐