问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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}}"

八、附录

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号