1.环境#
1 | 192.168.31.211 - vhost1 - 控制节点 |
2 安装docker registry本地镜像仓库#
由于官方镜像地址在国内访问不了,需要搭建本地镜像仓库,从网上找寻相关镜像文件下载并导入(见尾部 5.资源)
主机:test
1 | docker run --restart=always -d -p 15000:5000 -v /var/lib/registry:/var/lib/registry registry |
配置http访问(即不需要https)
1 | cat /etc/docker/daemon.json |
1 | { |
3.集群主机配置及所需软件安装#
主机:vhost1, vhost2, vhost3
3.1 配置先决条件#
1 | cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf |
设置所需的 sysctl 参数,参数在重新启动后保持不变
1 | cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf |
应用 sysctl 参数而不重新启动
1 | sudo sysctl --system |
3.2 安装kubeadm, kubectl, kubelet#
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
3.3 安装containerd#
3.3.1 下载并安装containerd#
1 | tar Cxzvf /usr/local containerd-1.6.15-linux-amd64.tar.gz |
3.3.2 下载并安装runc#
1 | install -m 755 runc.amd64 /usr/local/sbin/runc |
3.3.3 验证#
1 | # ctr container list |
如果出现如下错误信息
1 | WARN[0000] runtime connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. |
执行修复
1 | crictl config runtime-endpoint unix:///run/containerd/containerd.sock |
3.3.4 下载并安装CNI插件#
1 | mkdir -p /opt/cni/bin |
3.3.5 配置systemd cgroup驱动#
1 | mkdir /etc/containerd |
1 | # vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] |
3.3.6 修改沙窗(pause)镜像地址#
1 | vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri"] |
3.3.7 配置containerd使用http#
1 | vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri".registry] |
3.3.8 重启containerd#
1 | systemctl restart containerd |
4.启动集群#
4.1 使用kubeadm初始化集群#
主机:vhost1
1 | kubeadm init --image-repository=registry.aliyuncs.com/google_containers |
1 | [init] Using Kubernetes version: v1.26.0 |
4.2 安装Pod网络附加组件#
主机:vhost1
下载calico.yaml
1 | export KUBECONFIG=/etc/kubernetes/admin.conf |
4.3 其他节点加入集群#
主机:vhost2, vhost3
1 | # kubeadm join 192.168.31.211:6443 --token 9pk20q.rk8jrrx5valnw0di --discovery-token-ca-cert-hash sha256:0c2746c2e25ebb8543c5e905454a54887562bafacf69465fc7a83d6159bf3a1c |
1 | [preflight] Running pre-flight checks |
4.4 验证及其他命令#
主机:vhost1
4.4.1 查询集群节点看是否启动成功#
1 | kubectl get nodes |
1 | NAME STATUS ROLES AGE VERSION |
4.4.2 令牌相关#
1 | kubeadm token list |
默认情况下,令牌会在 24 小时后过期。如果要在当前令牌过期后将节点加入集群, 则可以通过在控制平面节点上运行以下命令来创建新令牌:
1 | kubeadm token create |
如果你没有 –discovery-token-ca-cert-hash 的值,则可以通过在控制平面节点上执行以下命令链来获取它:
1 | openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' |
4.4.3 重启集群#
1 | # 重置 |
5.资源#
- kubernetes_v1.26.0_安装资源.zip - https://pan.baidu.com/s/1KxAeY2sU86VLRJNIizbxdQ?pwd=ky5h
6.资料#
- 国内环境如何在 Ubuntu 部署 Kuberentes v1.26 - 约美网 (cdyszyxy.cn) - http://www.cdyszyxy.cn/cwtj/616625.html
- 解决k8s 1.24 kubeadm init执行失败的问题 | 飞翔的种子 (liuyusong.cn) - https://liuyusong.cn/2022/06/20/k8s-1.24-failed-to-init/
- 容器运行时 | Kubernetes - https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/
- containerd/getting-started.md at main · containerd/containerd · GitHub - https://github.com/containerd/containerd/blob/main/docs/getting-started.md
- 安装扩展(Addons) | Kubernetes - https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/addons/
- kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站 (aliyun.com)- https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11B6aDlo