当前位置: 首页 > 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.zskr.cn/news/1458668.html

相关文章:

  • 南宁市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 新余市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 别再让空压机‘抽风’了!手把手教你设置SMC继电器的迟滞模式(附参数避坑指南)
  • NIPAP开源IPAM系统:高效管理海量IP地址的终极解决方案
  • 国产USB千兆网卡方案,可直接替代瑞昱RTL8153
  • 手把手教学:在Altium Designer里把动态铺铜‘变成’阻焊开窗的完整流程(附GIF动图)
  • 信阳市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 秦皇岛市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 邢台市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • Obsidian 多端同步终极方案:坚果云官方插件 Nutstore Sync 深度测评指南
  • 通辽市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 用ESP8266 DIY一个智能WiFi门铃:AP模式下的简易访客检测与LED提醒
  • 清远市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • GL3224读卡器DIY避坑指南:手把手教你搞定W25Q16固件升级(附完整电路图)
  • 铜川市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 内江市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • C#上位机+51单片机PID电机闭环调速全套工程(含串口通信、液晶显示与EEPROM参数存储)
  • Grok 4技术深度解析:工具调用、工程妥协与AI人设驯化
  • 讲真的2026年天津水泥稳定碎石 5家靠谱源头厂家值得推荐 - 本地品牌推荐
  • 从MAC地址到网络通信:深入浅出图解STM32F407的以太网数据流(附LAN8720调试日志)
  • 英特尔COMPUTEX2026发声:Agentic AI时代,CPU、GPU算力配比将重塑!
  • AI+搜索系统融合实战手册(从零部署到Query理解跃迁)
  • 白山市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 2026年天津沥青混凝土推荐指南:从选材到施工全面解析 - 本地品牌推荐
  • 告别音频接口混乱:用FPGA实现16通道TDM音频传输的保姆级教程(附Verilog代码)
  • 从‘最强大脑’到你的电脑:用Python脚本自动生成你的专属数字编码记忆库
  • Grok 4架构深度解析:语义锚定、逻辑缝合与知识注入
  • SpringBoot+Vue仓库管理系统源码+论文
  • 三菱FX3U/3UC软元件保姆级详解:从X/Y到R寄存器,新手避坑指南
  • 2026工业粘接密封解决方案认准惠州三岛新材料,覆盖UV全系列胶、耐高温胶水、高导热硅脂多品类胶粘剂研发生产 - 栗子测评