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}}"
八、附录
热门推荐
泰山观日出攻略:最佳观赏位置全解析
2025罕见病公益援助计划在陕启动 渐冻症、SMA患者获多项免费医援
编码器在电机控制系统中的重要性
乳胶漆的施工步骤和注意事项有哪些
如何替代原有数据库
通信工程学习:什么是TDMA时分多址
古装影视服化道,向历史更近一步
眼图仪参数理解和一些测量指标
2025年双春年迁坟好吗?传统习俗与现代观念的碰撞
岱庙:泰山脚下的历史与神韵
Origin软件中的非线性拟合方法详解
吃了它躺着就能变瘦?“减肥话梅”中检出不明成分添加物
魔兽世界11.1渣客大师的磁力机甲坐骑获取攻略
颈椎病的病因及治疗
银行电子银行业务客户体验提升策略
《史记与中国文学》在美国学术出版社出版发行
马斯克遭抱团反对 手机直连星链之战白热化
16家券商划定2025年工作重点:服务实体经济、推动业务模式改革
腐竹的营养价值及功效
新生儿硬肿症的护理查房
子女留学费用怎么退税?如何办理退税流程?
鸡心果树苗的栽培与管理指南
和田玉和翡翠的区别是什么?这两个玉石有何不同?
存储器系统的完整讲解
如何查找欧洲文献数据库
疫情期间离职的注意事项与权益保障策略
银行的定期存款利率调整对企业短期资金配置的影响?
电磁脉冲武器的发展现状与未来展望
手机变焦怎么用?这3种自带模式,拍出来真好看!
浙江湖州:倡导建设“文明养犬”社区