赞
踩
随着云计算和微服务架构的普及,Kubernetes(K8s)已经成为容器编排的标准工具。它能够自动化应用的部署、扩展和管理,使得开发和运维的工作更加高效和可靠。然而,在一些特定场景下,由于安全性、网络隔离或企业政策等原因,无法直接访问互联网。在这种情况下,需要在离线环境中部署Kubernetes集群。
参考链接:
- #k8s离线部署
- cd k8s_rpm
-
- #都进行了强制安装
- rpm -ivh 0e6cee78a8e883b6dab6fa113d71f911167b293c58b88953ade826dc1a514ff4-kubelet-1.28.0-0.x86_64.rpm --nodeps --force
- rpm -ivh 0f2a2afd740d476ad77c508847bad1f559afc2425816c1f2ce4432a62dfe0b9d-kubernetes-cni-1.2.0-0.x86_64.rpm --nodeps --force
- rpm -ivh 3f5ba2b53701ac9102ea7c7ab2ca6616a8cd5966591a77577585fde1c434ef74-cri-tools-1.26.0-0.x86_64.rpm --nodeps --force
- rpm -ivh 4aa17ffad1fe0dcaa0d37972a13f34a218bbb6dcc39e535a605412b451d2440e-kubectl-1.28.0-0.x86_64.rpm --nodeps --force
- rpm -ivh b7b8fe5a134063b5e5c7794675609bd6a06d334930cfdb4b1ae4e9cdd4f70220-kubeadm-1.28.0-0.x86_64.rpm --nodeps --force
- rpm -ivh conntrack-tools-1.4.4-7.el7.x86_64.rpm --nodeps --force
- rpm -ivh libnetfilter_cthelper-1.0.0-11.el7.x86_64.rpm --nodeps --force
- rpm -ivh libnetfilter_cttimeout-1.0.0-7.el7.x86_64.rpm --nodeps --force
- rpm -ivh libnetfilter_queue-1.0.2-2.el7_2.x86_64.rpm --nodeps --force
- rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm --nodeps --force
-
-
-
- #kubelet配置更新
- vim /etc/sysconfig/kubelet
- KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
- #kubelet加入开机自启
- systemctl enable kubelet
-
- #k8s—node节点启动需要用到的离线镜像
- cd k8s_tar
- docker load -i coredns.tar
- docker load -i etcd.tar
- docker load -i kube-apiserver.tar
- docker load -i kube-controller-manager.tar
- docker load -i kube-proxy.tar
- docker load -i kube-scheduler.tar
- docker load -i pause.tar
-
- #将your_master_IP替换成master节点的地址
-
- kubeadm init \
- --apiserver-advertise-address=your_master_IP \
- --image-repository registry.aliyuncs.com/google_containers \
- --kubernetes-version v1.28.0 \
- --service-cidr=10.96.0.0/12 \
- --pod-network-cidr=10.244.0.0/16 \
- --cri-socket=unix:///var/run/cri-dockerd.sock \
- --ignore-preflight-errors=all
-
-

- --apiserver-advertise-address 集群通告地址
- --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
- --kubernetes-version K8s版本,与上面安装的一致
- --service-cidr 集群内部虚拟网络,Pod统一访问入口
- --pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
- --cri-socket 指定cri-dockerd接口,如果是containerd则使用--cri-socket unix:///run/containerd/containerd.sock
初始化完成后,最后会输出一个join命令,先记住,下面加入节点会用到。
接着,拷贝kubectl使用的连接k8s认证文件到默认路径:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
此时就可以使用kubectl工具管理K8s集群了,例如查看工作节点:
- kubectl get nodes
-
- # NAME STATUS ROLES AGE VERSION
- # k8s-master NotReady control-plane 20s v1.28.0
-
- # 注:由于网络插件还没有部署,节点会处于NotReady状态
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令并手动加上--cri-socket=unix:///var/run/cri-dockerd.sock:
- #此命令为举例,仅为参考
-
- kubeadm join your_master_IP:6443 --token j18dc5.suswnyrc6i7wzzqn --discovery-token-ca-cert-hash sha256:e52e2853720893129ed594984e05ea89965492feee215ab067aa821188bd288d --cri-socket=unix:///var/run/cri-dockerd.sock
为了安全性,上述命令中的token,默认有效期为24小时,当过期后,就无法使用该命令再加入节点了。需要重新生成加入节点命令:
kubeadm token create --print-join-command
- #当初始化中途出现报错时,先重置集群,后重新初始化集群(正在运行的生产环境谨慎使用,会造成整个集群配置与pod格式化造成数据丢失)
- kubeadm reset
- systemctl daemon-reload
- systemctl restart kubelet
- #部署calico插件:
- cd calico_tar
- docker load -i
- docker load -i
- docker load -i
-
- cd ..
- kubectl apply -f calico.yaml
-
-
- #查看部署CNI网络插件进度:
- kubectl get pods -n kube-system
- #再次在Master节点使用kubectl工具查看节点状态:
- kubectl get nodes
- #再次在Master节点使用kubectl工具查看节点
- kubectl get pod -n kube-system
- kubectl get pod -n kube-system -owide
- #查看集群健康状态:
- kubectl get cs
- #查看集群健康状态命令
- kubectl cluster-info
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。