三公机器人

牛牛机器人,三公撑船机器人,微信牛牛机器人

提供Kubernetes v1.36.0二进制高可用部署方案 三公撑船机器人

一、安装概述

本指南提供Kubernetes v1.36.0二进制高可用部署方案,支持IPv4/IPv6双栈,涵盖etcd、API Server、Controller Manager

等核心组件手动安装,同时包含Calico/Cilium网络插件、CoreDNS、Metrics Server、MetalLB等完整生态组件部署说明。

二、环境准备

2.1 节点规划

主机名称

IP地址

节点角色

预装软件

Master01

192.168.1.31

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master02

192.168.1.32

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master03

192.168.1.33

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Node01

192.168.1.34

node节点

kubelet、kube-proxy、nfs-client、nginx

Node02

192.168.1.35

node节点

kubelet、kube-proxy、nfs-client、nginx

VIP

192.168.1.36

虚拟IP

-

2.2 软件版本

组件名称

版本号

cni_plugins_version

v1.9.1

cri_containerd_cni_version

2.3.0

crictl_version

v1.36.0

cri_dockerd_version

0.4.3

etcd_version

v3.6.11

cfssl_version

1.6.5

kubernetes_server_version

1.36.0

docker_version

29.4.3

runc_version

1.5.0

kernel_version

6.16.4

helm_version

4.1.4

nginx_version

1.30.0

2.3 网段规划

  • IPv4

    • 物理主机:192.168.1.0/24

    • service:10.96.0.0/16

    • pod:172.16.0.0/16

  • IPv6

    • 物理主机:fc00::/8

    • service:fd00:1111::/112

    • pod:fd00:2222::/112

三、基础系统配置

3.1 设置主机名

在各个节点分别执行以下命令设置主机名:

# Master01节点
hostnamectl set-hostname k8s-master01
# Master02节点
hostnamectl set-hostname k8s-master02
# Master03节点
hostnamectl set-hostname k8s-master03
# Node01节点
hostnamectl set-hostname k8s-node01
# Node02节点
hostnamectl set-hostname k8s-node02

3.2 配置YUM源

# 备份原YUM源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 配置阿里云YUM源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 配置epel源
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# 清理并更新YUM缓存
yum clean all && yum makecache fast

3.3 系统参数优化

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 关闭swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 配置内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 生效内核参数
sysctl --system

四、组件安装

4.1 下载安装包

在Master01节点执行以下命令下载所有安装包:

# 创建安装包目录
mkdir -p /opt/k8s/packages && cd /opt/k8s/packages
# 下载etcd安装包
wget https://github.com/etcd-io/etcd/releases/download/v3.6.11/etcd-v3.6.11-linux-amd64.tar.gz
# 下载Kubernetes组件包
wget https://github.com/cby-chen/Kubernetes/releases/download/v1.36.0/kubernetes-v1.36.0.tar
# 下载CNI插件
wget https://github.com/containernetworking/plugins/releases/download/v1.9.1/cni-plugins-linux-amd64-v1.9.1.tgz

4.2 安装etcd集群

4.2.1 分发etcd二进制文件

# 解压etcd安装包
tar -zxvf etcd-v3.6.11-linux-amd64.tar.gz
# 分发到所有master节点
for node in k8s-master01 k8s-master02 k8s-master03; do
   scp etcd-v3.6.11-linux-amd64/etcd* root@$node:/usr/local/bin/
done

4.2.2 配置etcd服务

# 创建etcd配置目录
mkdir -p /etc/etcd /var/lib/etcd
# 生成etcd证书(使用cfssl工具)
cat > ca-config.json << EOF
{
 "signing": {
   "default": {
     "expiry": "87600h"
   },
   "profiles": {
     "www": {
       "expiry": "87600h",
       "usages": [
         "signing",
         "key encipherment",
         "server auth",
         "client auth"
       ]
     }
   }
 }
}
EOF
# 生成etcd证书和密钥(具体命令略)

4.2.3 启动etcd服务

# 创建etcd服务文件
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd \\
 --name=k8s-master01 \\
 --initial-advertise-peer-urls=https://192.168.1.31:2380 \\
 --listen-peer-urls=https://192.168.1.31:2380 \\
 --listen-client-urls=https://192.168.1.31:2379,https://127.0.0.1:2379 \\
 --advertise-client-urls=https://192.168.1.31:2379 \\
 --initial-cluster-token=etcd-cluster-0 \\
 --initial-cluster=k8s-master01=https://192.168.1.31:2380,k8s-master02=https://192.168.1.32:2380,k8s-master03=https://192.168.1.33:2380 \\
 --initial-cluster-state=new \\
 --data-dir=/var/lib/etcd \\
 --cert-file=/etc/etcd/etcd.pem \\
 --key-file=/etc/etcd/etcd-key.pem \\
 --peer-cert-file=/etc/etcd/etcd.pem \\
 --peer-key-file=/etc/etcd/etcd-key.pem \\
 --trusted-ca-file=/etc/etcd/ca.pem \\
 --peer-trusted-ca-file=/etc/etcd/ca.pem
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
# 启动etcd服务
systemctl daemon-reload && systemctl start etcd && systemctl enable etcd

4.3 安装Kubernetes Master组件

4.3.1 安装kube-apiserver

# 解压Kubernetes安装包
tar -zxvf kubernetes-v1.36.0.tar
# 分发kube-apiserver二进制文件
for node in k8s-master01 k8s-master02 k8s-master03; do
   scp kubernetes/server/bin/kube-apiserver root@$node:/usr/local/bin/
done
# 创建kube-apiserver配置文件和服务文件(具体配置略)
# 启动kube-apiserver服务
systemctl daemon-reload && systemctl start kube-apiserver && systemctl enable kube-apiserver

4.3.2 安装kube-controller-manager

# 分发kube-controller-manager二进制文件
for node in k8s-master01 k8s-master02 k8s-master03; do
   scp kubernetes/server/bin/kube-controller-manager root@$node:/usr/local/bin/
done
# 创建kube-controller-manager配置文件和服务文件(具体配置略)
# 启动kube-controller-manager服务
systemctl daemon-reload && systemctl start kube-controller-manager && systemctl enable kube-controller-manager

4.3.3 安装kube-scheduler

# 分发kube-scheduler二进制文件
for node in k8s-master01 k8s-master02 k8s-master03; do
   scp kubernetes/server/bin/kube-scheduler root@$node:/usr/local/bin/
done
# 创建kube-scheduler配置文件和服务文件(具体配置略)
# 启动kube-scheduler服务
systemctl daemon-reload && systemctl start kube-scheduler && systemctl enable kube-scheduler

4.4 安装Kubernetes Node组件

4.4.1 安装kubelet

# 分发kubelet二进制文件到所有节点
for node in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02; do
   scp kubernetes/server/bin/kubelet root@$node:/usr/local/bin/
done
# 创建kubelet配置文件和服务文件(具体配置略)
# 启动kubelet服务
systemctl daemon-reload && systemctl start kubelet && systemctl enable kubelet

4.4.2 安装kube-proxy

# 分发kube-proxy二进制文件到所有节点
for node in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02; do
   scp kubernetes/server/bin/kube-proxy root@$node:/usr/local/bin/
done
# 创建kube-proxy配置文件和服务文件(具体配置略)
# 启动kube-proxy服务
systemctl daemon-reload && systemctl start kube-proxy && systemctl enable kube-proxy

四、网络组件安装

4.1 安装Calico网络插件

# 下载Calico配置文件
curl -O https://docs.projectcalico.org/manifests/calico.yaml
# 修改Calico配置(如Pod CIDR等)
sed -i 's/192.168.0.0\/16/172.16.0.0\/16/' calico.yaml
# 应用Calico配置
kubectl apply -f calico.yaml

4.2 安装CoreDNS

# 下载CoreDNS配置文件
curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns/coredns/coredns.yaml.base
# 修改CoreDNS配置(略)
# 应用CoreDNS配置
kubectl apply -f coredns.yaml.base

五、集群验证

5.1 查看节点状态

kubectl get nodes

预期所有节点状态为Ready

5.2 查看组件状态

kubectl get componentstatuses

预期所有组件状态为Healthy

5.3 测试Pod创建

# 创建测试Pod
kubectl run nginx --image=nginx:latest
# 查看Pod状态
kubectl get pods

预期Pod状态为Running。 


Powered By Z-BlogPHP 1.7.3

三公机器人,牛牛机器人,三公撑船机器人,微信牛牛机器人