Kubernetes 1.31版本部署完整指南
创作时间:
作者:
@小白创作中心
Kubernetes 1.31版本部署完整指南
引用
CSDN
1.
https://blog.csdn.net/weixin_52377412/article/details/142371588
本文将详细介绍如何在CentOS Stream 9系统上部署Kubernetes 1.31版本。从环境准备到集群验证,再到仪表板的部署,每个步骤都配有详细的命令和配置说明。
一、环境准备
1.1 节点规划
- 一台兼容的 Linux 主机(建议使用CentOS Stream 9)
- 每台机器至少2GB RAM(推荐4GB以上)
- CPU至少2核心
- 集群中所有机器网络相互连通
- 节点之间主机名、MAC地址和product_uuid唯一
主机名 | IP地址 | 角色 | CPU/内存 |
|---|---|---|---|
master | 10.45.25.100 | 控制节点 | 4核/4G |
node1 | 10.45.25.101 | 服务运行节点 | 8核/8G |
node2 | 10.45.25.102 | 服务运行节点 | 8核/8G |
1.2 协议和端口
控制面
协议 | 方向 | 端口范围 | 目的 | 使用者 |
|---|---|---|---|---|
TCP | 入站 | 6443 | Kubernetes API 服务器 | 所有 |
TCP | 入站 | 2379-2380 | etcd 服务器客户端 API | kube-apiserver、etcd |
TCP | 入站 | 10250 | kubelet API | 自身、控制面 |
TCP | 入站 | 10259 | kube-scheduler | 自身 |
TCP | 入站 | 10257 | kube-controller-manager | 自身 |
工作节点
协议 | 方向 | 端口范围 | 目的 | 使用者 |
|---|---|---|---|---|
TCP | 入站 | 10250 | kubelet API | 自身、控制面 |
TCP | 入站 | 10256 | kube-proxy | 自身、负载均衡器 |
TCP | 入站 | 30000-32767 | NodePort Services | 所有 |
1.3 关闭防火墙和SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
1.4 关闭交换分区
sudo swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
1.5 安装容器运行时
配置加载内核及IPv4数据包转发
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
sysctl net.ipv4.ip_forward
安装containerd
wget https://github.com/containerd/containerd/releases/download/v1.7.22/containerd-1.7.22-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.7.22-linux-amd64.tar.gz
wget -O /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
systemctl daemon-reload
systemctl enable --now containerd
切换为国内源
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/registry.k8s.io/registry.aliyuncs.com\/google_containers/' /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl daemon-reload
systemctl restart containerd
二、安装kubeadm、kubelet 和 kubectl
添加Kubernetes yum仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
安装kubelet、kubeadm和kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
三、使用kubeadm创建集群
3.1 拉取所需镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
3.2 初始化控制平面节点
kubeadm config print init-defaults > /etc/kubernetes/init-default.yaml
sed -i 's/registry.k8s.io/registry.aliyuncs.com\/google_containers/' /etc/kubernetes/init-default.yaml
sed -i 's/1.2.3.4/10.45.25.100/' /etc/kubernetes/init-default.yaml
kubeadm init --image-repository registry.aliyuncs.com/google_containers
3.3 安装网络插件
Calico
wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.1/manifests/calico.yaml
kubectl apply -f calico.yaml
Flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
kubectl apply -f kube-flannel.yml
四、加入node节点
kubeadm join 10.45.25.100:6443 --token jiokmj.y0rsa5h405xoqiqa \
--discovery-token-ca-cert-hash sha256:fecc31fd4893745db901671e1cf491263f90d72e61b8aec4cbad5b6005e47170
五、验证集群
kubectl get nodes -A
kubectl apply -f nginx.yaml
kubectl get pod,svc
六、启用 kubectl 自动补全
yum install -y bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl
七、部署kubernetes仪表板
使用helm部署
wget https://get.helm.sh/helm-v3.16.1-linux-amd64.tar.gz
tar zxf helm-v3.16.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
kubectl edit svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
创建访问账号
kubectl apply -f dashadm.yaml
kubectl -n kubernetes-dashboard create token admin-user
获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
八、附录
热门推荐
原神片段配音:打造沉浸式游戏体验
带你一文了解什么是金属材料失效分析?
“少校逐月,中校退休”还能实现吗?
怎么检测自己有没有口臭
银行私人银行业务的资产配置方案?
考古人员现场修复唐代龙首!来这个展感受科技考古与文保工作魅力
怎样自己注册光猫
防晒产品必须标识:你了解其中的奥秘吗?
如何进行卫生间的合理装修与功能规划?这种规划有哪些注意事项?
聚焦可持续 | 服装行业“碳”索未来:可持续面料或成行业突破口
如何摆脱"身材焦虑"?
蜀汉五虎将、瓦岗五虎将和梁山五虎将:谁是真五虎,谁在拉虎皮?
一文讲清收继婚的来龙去脉:清朝皇室为何大力禁止这种婚配?
拍不完!2T的云盘都不够我存宠物照片!
案例研究:首张黑洞照片
如何判断是否为痛风的症状
什么是比特币?它如何运作?
AI在焊接行业中的应用
焊接机器人智能化的几项关键技术
拔牙后为何脸肿?冷敷or热敷?一文告诉你答案
曾国藩:历史上的卓越之处与不朽功勋
《哪吒之魔童闹海》中的太乙真人
食物中毒者常见的症状有哪些
物业最怕的三个投诉方法(投诉物业找哪个部门)
掌握数控车床坐标系:综合指南
宽带自助排障全攻略:轻松应对网络故障
泡沫痰背后的健康密码,一文教你如何应对
王自如被曝离职,内网已搜不到?2天前刚现身格力宣讲会,内部人士:有两种可能
心肺复苏术后中医治疗
违约金实际损失如何举证赔偿