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}}"
八、附录
热门推荐
我国最大粮仓北大荒,辛苦开发半个世纪,如今为何要退耕还“荒”
耳膜穿孔手术:目的、适应证、禁忌证及手术方式详解
艺术漆的施工工艺与维护保养
小米手机解锁BootLoader详细教程
南宁市美食探秘:必尝的十大地方特色佳肴
功能训练之到底什么是“核心”?核心稳定性VS核心力量 — 核心篇
谷歌浏览器下载文件操作指南:设置、权限与常见问题解决
不懂法国鹅肝,就不是一个正宗的 “吃货”
对流换热分析的高级应用
2025版最新如何建立完善的安全生产体系?从零基础到精通,收藏这篇就够了!
粉刺、闭口、痘痘……这些都是痤疮吗?
骨盆骨折后,怎样选择卧位更舒适且利于恢复?
绯花玉仙人球养护指南:品种特点、日常养护与繁殖技巧
植物的光周期:影响植物生长的关键因素
艺术开卷|点石斋画报中的志怪图谱
夏天花式闹肚子 先搞清原因再说
“周公恐惧流言日,王莽谦恭未篡时。向使当初身便死,一生真伪
“肺”常关爱!呼吸康复训练帮助患者畅享呼吸
古老文物的“青春密码”——网红博物馆邀你感受“文化+科技”魅力
去天安门广场参观是否需要预约?
源码讲解kafka 如何使用零拷贝技术(zero-copy)
自然意象与人文精神的诗意融合——中国古典山水画
湖北宜昌一高中生自制折叠屏手机,B站浏览量超400万
汗渍发黄怎么办?教你5个妙招,衣服、床单瞬间洁净如新
流浪地球成现实!中国组建行星防御系统!
如何有效降低噪音,打造宁静舒适的空间?
DeepSeek引爆市场!上市公司火速辟谣与其关联公司幻方量化的关系
户口本丢失如何补办,详细流程及注意事项
NBA历史外籍球员中最强的10大球星
大拇指腱鞘炎锻炼方法:重获灵活与无痛的秘诀