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

安装部署k8s高可用集群(Stacked etcd)

框架:

禁用 Swap 分区

执行以下命令立即关闭所有 swap 分区:

swapoff -a

永久禁用 swap,通过注释/etc/fstab中的配置:

sed -i.bak '/ swap /s/^/#/' /etc/fstab

禁用防火墙

停止并禁用防火墙服务:

systemctl stop firewalld systemctl disable firewalld systemctl mask firewalld

配置 SELinux

临时将 SELinux 设置为 permissive 模式:

setenforce 0

永久修改 SELinux 配置:

sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

验证 SELinux 状态:

getenforce

配置主机名解析

将以下内容追加到/etc/hosts文件中:

cat >> /etc/hosts <<EOF 172.31.69.166 k8s-lb01 172.31.69.160 k8s-master01 172.31.69.161 k8s-master02 172.31.69.162 k8s-master03 172.31.69.163 k8s-worker01 172.31.69.164 k8s-worker02 172.31.69.165 k8s-worker03 EOF

加载 Kubernetes 内核模块

创建/etc/modules-load.d/k8s.conf文件并加载模块:

cat > /etc/modules-load.d/k8s.conf <<EOF overlay br_netfilter EOF modprobe overlay modprobe br_netfilter

配置内核网络参数

创建/etc/sysctl.d/k8s.conf文件并应用配置:

cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system

安装 Containerd

安装依赖:

dnf install -y yum-utils device-mapper-persistent-data lvm2

配置 Docker CE 阿里源:

cat > /etc/yum.repos.d/docker-ce.repo <<'EOF' [docker-ce-stable] name=Docker CE Stable - \$basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/\$basearch/stable enabled=1 gpgcheck=0 EOF

安装 Containerd:

dnf clean all dnf makecache dnf install -y containerd.io

生成 Containerd 配置文件:

mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml

确认使用 systemd cgroup:

grep -n "SystemdCgroup" /etc/containerd/config.toml

修改为阿里源:

sed -i "s#sandbox = 'registry.k8s.io/pause:[^']*'#sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10.2'#" /etc/containerd/config.toml

启动 Containerd:

systemctl enable --now containerd systemctl restart containerd systemctl status containerd --no-pager

安装 Kubernetes 组件

配置 Kubernetes 软件源:

cat > /etc/yum.repos.d/kubernetes.repo <<'EOF' [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni EOF

或使用清华源:

cat > /etc/yum.repos.d/kubernetes.repo <<'EOF' [kubernetes] name=Kubernetes baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/core:/stable:/v1.36/rpm/ enabled=1 gpgcheck=0 exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni EOF

安装组件:

dnf clean all dnf makecache dnf install -y kubelet kubeadm kubectl cri-tools --disableexcludes=kubernetes

启动 kubelet:

systemctl enable --now kubelet

配置crictl

cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 120 debug: false EOF

检查版本:

kubeadm version kubelet --version kubectl version --client crictl version

部署 HAProxy

k8s-lb01节点安装 HAProxy:

dnf install -y haproxy

编辑配置文件:

cat > /etc/haproxy/haproxy.cfg <<'EOF' global log /dev/log local0 log /dev/log local1 notice daemon maxconn 4096 defaults log global mode tcp option tcplog option dontlognull timeout connect 10s timeout client 1m timeout server 1m frontend k8s_apiserver bind *:6443 default_backend k8s_control_plane backend k8s_control_plane balance roundrobin option tcp-check server k8s-master01 172.31.69.160:6443 check server k8s-master02 172.31.69.161:6443 check server k8s-master03 172.31.69.162:6443 check EOF

检查配置:

haproxy -c -f /etc/haproxy/haproxy.cfg

启动 HAProxy:

systemctl enable --now haproxy systemctl status haproxy --no-pager

检查端口:

ss -lntp | grep 6443

初始化第一台 Master

k8s-master01节点执行以下命令预拉镜像:

kubeadm config images pull \ --image-repository=registry.aliyuncs.com/google_containers

初始化集群:

kubeadm init \ --control-plane-endpoint "172.31.69.166:6443" \ --apiserver-advertise-address=172.31.69.160 \ --pod-network-cidr=10.244.0.0/16 \ --upload-certs \ --image-repository=registry.aliyuncs.com/google_containers

配置kubectl

mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config

查看节点状态:

kubectl get nodes -o wide kubectl get pods -A -o wide

安装 Flannel 网络插件

应用 Flannel 配置:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

查看 Flannel 状态:

kubectl -n kube-flannel get pods -o wide kubectl get nodes -o wide

目标状态为k8s-master01显示Ready,并且kube-flannelPod 运行正常。

http://www.jsqmd.com/news/947154/

相关文章:

  • AD大电流开窗翻车实录:从‘阻焊缺失’到完美Region的完整避坑指南
  • 别再让空压机‘抽风’了!手把手教你设置SMC继电器的迟滞模式(附参数避坑指南)
  • 计算机毕业设计之基于Hadoop的短视频推荐系统的设计与实现
  • 边缘AI赋能物联网,芯科科技推动智能边缘创新
  • 南平市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 国产USB千兆网卡方案,可直接替代瑞昱RTL8153
  • 手把手教学:在Altium Designer里把动态铺铜‘变成’阻焊开窗的完整流程(附GIF动图)
  • 信阳市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 武汉市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 南通市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 海易纳:中国开窗机应急照明疏散领域实力派品牌 - GrowthUME
  • Gemini 3.1 Pro 实测:长上下文推理速度翻倍的技术真相
  • 2025亲测降AI率工具推荐:免费降AIGC实用指南
  • 秦皇岛市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 邢台市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 别再只懂AM了!用Python+Matplotlib手把手仿真FM调频信号(附完整代码)
  • 新手必看:用Keil的Debug功能精确测量51单片机流水灯延时(附STC89C52配置)
  • 惠州市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 用Python和jieba分析年报可读性:从会计词典处理到结果导出的完整实战
  • Obsidian 多端同步终极方案:坚果云官方插件 Nutstore Sync 深度测评指南
  • 吉安市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 通辽市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 告别迷茫!SX1261/2 LoRa芯片寄存器配置保姆级流程(附完整代码片段)
  • 告别重复造轮子:用快马AI一键生成微信小程序后台管理模块代码
  • 南阳市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 用ESP8266 DIY一个智能WiFi门铃:AP模式下的简易访客检测与LED提醒
  • 青岛市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 当HEVC遇上老协议:一文读懂FLV封装为何‘排斥’H265,以及我们如何用FFmpeg‘打补丁’
  • 徐州市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • Codex Skill 保姆级教程 1:Computer Use — 让 AI 接管整台电脑