k8s集群部署,部署集群,版本1.24
目录
收起
1.24版本发布及变动
1.24.3版本集群部署-kubeadm方式
主机资源介绍
主机名修改
修改主机解析文件
关闭防火墙
关闭selinux
时间同步
升级内核
配置内核转发及网桥过滤
安装ipset及ipvsadm
关闭swap分区
docker及cri-dockerd安装
k8s集群部署
calico网络插件安装
dashboard安装
1.24版本发布及变动
在今年的5月3日,正式发布了1.24版本,目前已经迭代到了1.24.3版本,今天的话,就是完整的介绍下1.24.3版本的一个kuebadm安装方式
这个版本最大的一个变动就是Kubernetes 正式移除对 Dockershim 的支持,讨论很久的 “弃用 Dockershim” 也终于在这个版本画上了句号。


1.24.3版本集群部署-kubeadm方式
主机资源介绍
ip | CPU | 内存 | 磁盘 | 主机名 | 系统 |
192.168.78.10 | 4C | 8G | 50G | k8s-master1 | centos7.8 |
192.168.78.11 | 4C | 8G | 50G | k8s-worker1 | centos7.8 |
192.168.78.12 | 4C | 8G | 50G | k8s-worker2 | centos7.8 |
三台主机的话,都是虚拟机,vmvare直接克隆的,虚拟机生成这里就不介绍了

主机名修改
三台主机分别执行如下修改主机名,并修改/etc/hosts文件
#192.168.78.10
hostnamectl set-hostname k8s-master1
#192.168.78.11
hostnamectl set-hostname k8s-worker1
#192.168.78.12
hostnamectl set-hostname k8s-worker2
修改主机解析文件
三台均需修改
#vim /etc/hosts
192.168.78.10 k8s-master1
192.168.78.11 k8s-worker1
192.168.78.12 k8s-worker2
关闭防火墙
三台均需修改
# systemctl disable firewalld
# systemctl stop firewalld
关闭selinux
三台均需修改
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
时间同步
#yum install ntpdate
#ntpdate time1.aliyun.com
#也可以直接加到定时任务中
crontab -e
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
升级内核
三台主机均需操作
操作前查看目前内核版本

#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# yum --enablerepo="elrepo-kernel" -y install kernel-ml.x86_64
#设置grub2默认引导为0
# grub2-set-default 0
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
升级后

配置内核转发及网桥过滤
三台均需操作
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
#加载br_netfilter模块
# modprobe br_netfilter
#查看是否加载
# lsmod | grep br_netfilter
br_netfilter 22256 0
bridge 151336 1 br_netfilter
加载网桥过滤及内核转发配置文件
# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
安装ipset及ipvsadm
三台均需操作
安装ipset及ipvsadm
# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授权、运行、检查是否加载
# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack
关闭swap分区
#swapoff -a
docker及cri-dockerd安装
docker-ce安装
yum -y install docker-ce
docker服务启动
systemctl enable --now docker
修改cgroup启动方式
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
修改后重启docker
# systemctl restart docker
cri-dockerd安装 rpm方式
#
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
#rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
#systemctl restart cri-dockerd
#systemctl enable cri-dockerd
k8s集群部署
yum源准备
vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum安装
# yum -y install kubeadm kubelet kubectl
修改kubelet cgroup启动方式与docker一致
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置kubelet开机启动
#systemctl enable kubelet
kubeadm 初始化
使用阿里云镜像,指定镜像源
#kubeadm init --apiserver-advertise-address=192.168.78.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.3 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket unix:///var/run/cri-dockerd.sock
输出如下字样表示初始化完成
Your Kubernetes control-plane has initialized successfully!
可以继续往下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
根据打印出的node join方式加入节点
kubeadm join 192.168.78.10:6443 --token cjvznn.pbaaarwmnx273ta0 --discovery-token-ca-cert-hash sha256:929942f5e9f58a32fc644f50147ff6095dd30e60b3245573ba0baeeb60caa4a5 --cri-socket unix:///var/run/cri-dockerd.sock
calico网络插件安装
执行到上面可以看到node节点是非health的,coredns也是异常的
获取calico yaml文件
wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate
修改如下配置为初始化中的--pod-network-cidr地址,注意格式
- name: CALICO_IPV4POOL_CIDR
value: "10.224.0.0/16"
然后apply
kubectl apply -f calico.yaml
到这里基本就部署完成了
可以看下目前的节点情况及pod启动情况
dashboard安装
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml
修改service的type为nodeport
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #新加
ports:
- port: 443
targetPort: 8443
nodePort: 30001 #新加
selector:
k8s-app: kubernetes-dashboard
查看状态
kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-8c47d4b5d-fzcf6 1/1 Running 0 2m34s
kubernetes-dashboard-5676d8b865-fp26b 1/1 Running 0 2m34s
新建admin
#创建dashboard管理用户
kubectl create serviceaccount dashboard-admin -n kube-system
#绑定集群角色
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取token,指定过期时间
kubectl -n kube-system create token dashboard-admin --duration 3153600000s
结果:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjJmeGxodjJ3N3lqMnNHNXpLbUVPVFNEcHl3U2UxZkQxaEg1dW90Q0lxdUkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjo0ODEzNzgwMTM3LCJpYXQiOjE2NjAxODAxMzcsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJkYXNoYm9hcmQtYWRtaW4iLCJ1aWQiOiI1ZWRjNTRlMS1iNmFjLTQ4NGQtYjI1OS03NDE1ZTQyMjI0ZWUifX0sIm5iZiI6MTY2MDE4MDEzNywic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.vh4RX9RAeqGsgn_eeFYZbTPU08CqiviTYTwzRIf0ygQ0FnreWGwX1oHiRN1eYxyPMwS5staCF6HNPeh8zZKxuSlGN5KfReuyjmN7XJdgLzSo1_iEvnHJ5kd8OFfiK7ArqMDwfU0_EmyWpnxJUMGkPHsJ1qzr_RgBtXqCJo9-00ueQyBD9NlIX-aaSndmz4ukumH9ESGDu96GzltFbMEsVWiC2XrHoxnGQuyuV30Y0CxUPghSEOwvBWHRulGJD9jiUbvW2-g7CYPekdfpZMB7zUoe9eKu-nfcxExLNeWoGM4DbcITTWTtkQGnpz_yQ8mP1DXtxSI7LLki6QquF36aEA
界面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)