当前位置: 首页 > news >正文

部署Kubernetes 1.32版

1.1 部署环境(1主2从)

名称IP地址操作系统配置
k8s-master10.0.0.110RockyLinux 9.54核8G
k8s-node110.0.0.111RockyLinux 9.54核8G
k8s-node210.0.0.112RockyLinux 9.54核8G

1.2 关闭防火墙和SELinux

# 关闭防火墙并设置为开机自动关闭
systemctl disable --now firewalld
# 关闭SELinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 临时关闭SELinux
setenforce 0

1.3 修改主机名

master节点:
hostnamectl set-hostname k8s-master
node1节点:
hostnamectl set-hostname k8s-node1
node2节点:
hostnamectl set-hostname k8s-node2

1.4 配置hosts文件 所有机器

cat >> /etc/hosts <<EOF
10.0.0.110   k8s-master 
10.0.0.111   k8s-node1
10.0.0.112   k8s-node2
EOF

1.5 时间同步
可选步骤,主要是让三个节点的时间同步。

yum install -y chrony
sed -ri 's/^pool.*/#&/' /etc/chrony.conf
cat >> /etc/chrony.conf << EOF
pool ntp1.aliyun.com iburst
EOF
systemctl restart chronyd
chronyc sources
# 修改时区,如果之前是这个时区就不用修改
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone

1.6 关闭交换分区
kubernetes强制要求禁止

# 关闭当前交换分区
swapoff -a
# 禁止开机自动启动交换分区
sed -ri 's/.*swap.*/#&/' /etc/fstab

1.7 内核参数优化

将桥接的IPv4流量传递到iptables的链
# 加载内核模块
cat << EOF > /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# 加载
modprobe overlay
modprobe br_netfilter
cat >> /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 加载生效
sysctl -p /etc/sysctl.d/kubernetes.conf
sysctl --system
lsmod | grep br_netfilter  # 查看是否加载完成

1.8 配置免密登录
可选操作,主要便于批量管理

sh-keygen  # 连续回车三次
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.110
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.111
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.112测试登录
ssh root@10.0.0.111
无需密码登录即成功

1.9 安装ipvs转发支持
在kubernetes中Service有两种代理模型,一种是基于iptables的,一种是基于ipvs,两者对比ipvs的性能要高。默认使用iptables,所以要手动加载ipvs。

# 安装依赖包
yum install -y conntrack ipvsadm libseccomp 
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4  
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules 
# 执行脚本
/etc/sysconfig/modules/ipvs.modules
# 验证ipvs模块
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.10 安装docker,containerd

# 获取阿里云YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装yum-config-manager配置工具
yum -y install yum-utils# 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce版本
yum install -y docker-ce
# 启动并设置开机自启动
systemctl enable --now docker# 查看版本号
docker --version
# 查看版本具体信息
docker version# Docker镜像源设置
# 修改文件 /etc/docker/daemon.json,没有这个文件就创建
# 添加以下内容后,重启docker服务:
cat >/etc/docker/daemon.json<<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://docker.1panel.live",
"https://hub.littlediary.cn",
"https://docker.kejilion.pro",
"https://docker.1ms.run",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://docker-0.unsee.tech",
"https://dockerpull.cn"]
}
EOF# 加载启动Docker
systemctl enable --now docker
# 查看
systemctl status docker containerd

说明:
1、dockerd实际真实调用的还是containerd的api接口,containerd是dockerd和runC之间的一个中间交流组件。所以启动docker服务的时候,也会启动containerd服务的。

2、kubernets自v1.24.0后,就不再使用docker.shim,替换采用containerd作为容器运行时端点。因此需要安装containerd(在docker的基础下安装),上面安装docker的时候就自动安装了containerd了。这里的docker只是作为客户端而已。容器引擎还是containerd。

3、其实也可以直接安装container.io,而不用安装docker

1.11 配置containerd

# containerd生成配置文件
containerd config default > /etc/containerd/config.toml
# 配置containerd cgroup 驱动程序为systemd
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
# 将 sandbox_image 镜像源设置为阿里云google_containers镜像源
sed -i "s#registry.k8s.io/pause:3.8#registry.aliyuncs.com/google_containers/pause:3.10#g"       /etc/containerd/config.toml
# 配置crictl连接containerd
cat >> /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# 启动containerd并设置开机自启动
systemctl enable --now containerd
# 查看containerd状态
systemctl status containerd

安装kubernetes集群
2.1 配置阿里云上k8s的yum源
在所有节点上执行:

cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/
enabled=1
gpgcheck=0
EOF
## 查看所有的可用版本
yum list kubelet --showduplicates | sort -r |grep 1.32

2.2 安装kubectl,kubelet和kubeadm
所有节点执行:

# 若不指定版本默认安装最高版本
yum install -y kubectl-1.32.9 kubelet-1.32.9 kubeadm-1.32.9
# kubectl是命令行工具。kubeadm仅是一个集群搭建工具,不涉及启动。kubelet是一个守护进程程序,由kubeadm在搭建过程中自动启动,这里仅设置开机启动即可。
systemctl enable kubelet
# 准备k8s-1.32.9 所需要的镜像
kubeadm config images list --kubernetes-version=v1.32.9
# 可以提前把镜像下载好,这样安装快(可选步骤)
crictl pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.32.9
crictl pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.32.9
crictl pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.32.9
crictl pull registry.aliyuncs.com/google_containers/kube-proxy:v1.32.9
crictl pull registry.aliyuncs.com/google_containers/pause:3.10
crictl pull registry.aliyuncs.com/google_containers/etcd:3.5.16-0
crictl pull registry.aliyuncs.com/google_containers/coredns:v1.11.3

2.3 集群初始化(在master上执行)

kubeadm init --kubernetes-version=v1.32.9 \
--pod-network-cidr=192.168.0.0/16  \
--apiserver-advertise-address=10.0.0.110 \
--service-cidr=10.224.0.0/16 \
--image-repository=registry.aliyuncs.com/google_containers

–apiserver-advertise-address 集群apiServer地址(master节点IP即可) --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 --kubernetes-version K8s版本,与上面安装的一致 --service-cidr 集群内部虚拟网络,Pod统一访问入口 --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

安装成功会输出以下内容:

our Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 10.0.0.110:6443 --token 8nlzcn.iq9ohzqjcfefdp0g \--discovery-token-ca-cert-hash sha256:7c1d9a8cd03ac34de32226f13416f0d3b3b30322704d7845365e94f63f27eff3

2.4 重置后再初始化(可选)
若集群初始化失败,可以通过排障后重新初始化

kubeadm reset -f
rm -fr ~/.kube/  /etc/kubernetes/* /var/lib/etcd/*

2.5 配置环境变量
这里是从上面初始化时输出的信息,直接复制过来就行,在master节点上操作

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 临时生效(退出当前窗口重连环境变量失效)
export KUBECONFIG=/etc/kubernetes/admin.conf
# 永久生效(推荐)
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source  ~/.bash_profile

2.6 node工作节点加入k8s集群
根据master节点最后输出的内容,【不要复制我的,以你maser输出的为主】直接在node节点上执行

kubeadm join 10.0.0.110:6443 --token 8nlzcn.iq9ohzqjcfefdp0g \--discovery-token-ca-cert-hash sha256:7c1d9a8cd03ac34de32226f13416f0d3b3b30322704d7845365e94f63f27eff3

如果没有令牌,可以通过在控制平面节点上运行以下命令来获取令牌:

kubeadm token list

默认情况下, 令牌会在24小时后过期。如果要在当前令牌过期后将节点加入集群, 则可以通过在控制平面节点上运行以下命令来创建新令牌:

kubeadm token create --print-join-command

2.7 查看节点状态

[root@k8s-master ~]# kubectl get node
NAME         STATUS      ROLES           AGE   VERSION
k8s-master   NotReady    control-plane   35m   v1.32.9
k8s-node1    NotReady    <none>          12s   v1.32.9
k8s-node2    NotReady    <none>          36s   v1.32.9

发现节点是NotReady状态,说明集群还不可以使用,还需要安装网络插件。
2.8 安装网络插件(master节点操作)

网络组件有很多种,只需要部署其中一个即可,推荐Calico。
Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。
Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。
此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

下载calico的yaml文件

curl -o /root/calico.yaml https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml

修改calico.yaml
下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。

修改仓库
将docker.io修改为quay.io

安装calico
kubectl apply -f calico.yaml

2.9 给node节点打标签(可选)

kubectl label nodes k8s-node1 node-role.kubernetes.io/worker=worker
kubectl label nodes k8s-node2 node-role.kubernetes.io/worker=worker

2.10 验证集群

查看集群信息

kubectl cluster-info

查看pod运行状态

kubectl get pods -A

在这里插入图片描述
至此,集群已搭建完成

http://www.dtcms.com/a/554671.html

相关文章:

  • 从“合规”到“价值跃迁”,检测报告在信创产业中的角色升级
  • Unlock Music 多种音乐免费解锁使用教程
  • python进阶教程9:生成器和迭代器
  • 遵义网站优化达州seo排名
  • 网站建设图片按钮网站建设及维护涉及哪些内容
  • Java初学有必要深入多线程编程吗?
  • 深度学习之实验三 手写数字识别
  • 嵌入式面试技巧合集20251031
  • 万州做网站wordpress强大用户中心
  • 专业教育网站建设下载app安装
  • 网站上传用什么软件做视频创意设计素材
  • 招商加盟网站大全汇总网站制作工作室
  • C++ 输出流(Output Stream)全解析
  • 网站建设基础包括做电影网站怎么拿到版权
  • Git的设计哲学:为何选择快照,而非增量
  • 【设计模式】# 外观模式(Facade)大白话讲解!
  • 做百度推广网站被攻击原创主题 wordpress
  • 网站上那些兼职网页怎么做wordpress文章发布编辑器
  • 网站内容相同算侵权吗中国建设银行网站江苏分行
  • Kubernetes 中 Service 与 Pod 详解总结
  • 网站源码下载免费源码黄页推广是什么
  • 最小调整顺序次数
  • 羽毛球赛事在哪里看seo云优化公司
  • 校园网网站建设费用网站开发支持环境
  • rdpwsx!WsxIcaStackIoControl调试记录其中Class: ff Enable: 3f
  • puppeteer配置登录页面自动化测试
  • 手机可以创建网站吗广州网站公司推荐
  • 国内知名摄影网站百度指数功能模块有哪些
  • 小程序网站建设的公司网站怎么做的支付宝接口
  • 「PPG信号处理——(3)基于PPG的脉象分析与中医诊疗研究」2025年10月31日