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}}"
八、附录
热门推荐
合同原件与复印件的法律效力及规范化处理方法
石雕四大天王佛像:慈悲与力量的化身
狠狠治愈!春天就要来北京爬这些山!
廊坊徒步的经典户外线路有哪些?廊坊20个景美人少的徒步的好去处推荐
肝肾综合征的表现、诊断标准及病程分期详解
打篮球手指戳伤如何处理
湖南参保居民快收藏,超全门诊“待遇政策包”来了
社交媒体正在改写全球政治
菩提老祖的原形是谁,难怪他不让孙悟空报师门?看他最后去了哪儿
iPad画中画功能使用指南:从入门到精通
氢燃料电池和普通电池有什么区别?
重庆24所重点大学排名及特色介绍:校友会、ESI世界排名全解析
英国湖区有哪些值得一去的湖泊
合成数据能否让AI模型精确可靠?
全面指南:蜀山风景区深度游攻略与实用信息汇总
乐游过大年 | 非遗点亮东方美学!在蜀山体验“精致烟火徽州年”
四川首台商业化人形机器人"天行者1号"亮相,核心零部件本地化率超90%
征信报告出现逾期记录该怎么办,逾期上征信如何消除
银行个人征信记录的维护与信用提升
24元流量卡怎么选?流量套餐科普与避坑指南
拯救者Y7000P硅脂老化?教你如何更换高效的硅脂!
房屋安全鉴定标准是什么
学生数量缩水,生育率下行?深圳教育界:这些或是未来方向
喝苏打水能降尿酸,治疗痛风?真正要喝的是这种饮品
零食都是“罪恶”的吗?吃对时间不发胖
CAD中DWG和DWT文件的区别?
单片机开发C语言让LED闪烁的完整指南
油菜Brassica campestris L.:形态特征、生态习性与栽培要点
智能电表怎么看用电度数?
花开如瀑!石家庄公园广场迎春花开了