centos7.9 + kubekey4.0.5安装k8s及kubesphere

本次计划安装k8s v1.28.15,它需要的系统内核必须 >= 5.4,所以要先升有centos的内核。

由于ElRepo在线源已经停止服务,所以不能通过在线仓库升级内核,需要通过下载离线包的方式升级内核。

 

【下载离线 RPM 包安装(在线源彻底不通时)】

centeos7安装6.9内核,逐条执行下面这 3 条wget令 (5.4与6.9内核安装期中一个即可)

#国内高速Coreix镜像,6.9.x主线
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-6.9.7-1.el7.elrepo.x86_64.rpm
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-devel-6.9.7-1.el7.elrepo.x86_64.rpm
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-headers-6.9.7-1.el7.elrepo.x86_64.rpm
# 2. 下载完直接安装,先删除旧headers
rpm -e --nodeps kernel-headers
yum localinstall -y *.rpm
# 3. 安装完设置默认启动 + 重启
#设置序号0为默认内核
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
# 查看内核 
uname -a

 

查看默认内核

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

 

【安装k8s前期准备】

 

准备三台centos服务器,每台服务器做好准备工作,每台执行以下命令:

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

# 关闭 selinux
setenforce 0 
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 关闭虚拟内存 swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab # 重启生效 # systemctl reboot # 查看虚拟内存,swap那一行全部为0表示虚所内存已关闭 free -h # 给k8s的每个节点设置主机名,最好配三台电脑,每台电脑分别命名为: hostnamectl set-hostname k8s-master-01 hostnamectl set-hostname k8s-worker-01 hostnamectl set-hostname k8s-worker-02 # 刷新bash环境 exec bash # 查看主机名 hostname

 

设置时间同步

# 设置时区(东八区)
timedatectl set-timezone Asia/Shanghai

# 启动 chrony 时间同步
systemctl enable --now chronyd

# 立即同步一次
chronyc -a makestep

# 开启系统 NTP 自动同步
timedatectl set-ntp true

# 关闭 VMware 时间同步(避免冲突),非虚拟机不需要设置
vmware-toolbox-cmd timesync disable 2>/dev/null

 

查看时间同步状态

# 查看时间
date
hwclock

#查看chrony是否运行
systemctl status chronyd
#查看时间同步状态
timedatectl
# 或查看同步状态
timedatectl status
# 看 chrony 状态
chronyc sources

 

********** 不要用下面老旧的方法设置时间同步 **********
yum install ntpdate -y
ntpdate time.windows.com

 

添加hosts

# 添加hosts,ip需要修改成你自己机器的内网ip(在终端里执行命令,有几个k8s节点就添加几个,每个k8s节点做同样的设置)
# 如果只有k8s-master-01节点,就只添加一个

cat >> /etc/hosts << EOF
172.29.132.65 k8s-master-01
172.29.132.66 k8s-worker-01
172.29.132.67 k8s-worker-02 EOF # 查看hosts cat /etc/hosts

 

允许 iptables 检查桥接流量,每个k8s节点都要配置。

# 这是 K8s 必须配置的内核网络参数,目的是:
# 让 Linux 内核能正确转发、过滤容器之间的网络流量
# 不配置 → K8s 集群无法通信、Pod 不通、Service 失效。
cat << EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
#开启ip转发
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

# 让上面的内核参数立即生效
sudo sysctl --system
# 让ip转发强制生效(CentOS7 专用)
echo 1 > /proc/sys/net/ipv4/ip_forward

 

SSH 免密登录(仅部署节点执行,多节点集群必须)

# 生成密钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 批量推送至所有节点(替换为你的节点IP)
ssh-copy-id root@172.29.132.66
ssh-copy-id root@172.29.132.67
ssh-copy-id root@172.29.132.68
# 测试连通
ssh root@192.168.1.101 hostname

 

【软件准备(所有节点)】

软件名称 是否安装
socat 必须安装
conntrack 必须安装

conntrack-tools

必须安装
ebtables 可选,但推荐安装
ipset 可选,但推荐安装
ipvsadm 可选,但推荐安装

 

 
 
 
 
 
 
 
 
 
 
# 每台节点都要安装
yum -y install socat conntrack conntrack-tools ebtables ipset ipvsadm

 

【安装kubekey 4.0】 

方案1,在线安装:

# 建目录
mkdir -p /srv/kubekey
cd /srv/kubekey

# 国内加速下载 kk(默认最新版,当前 v4.0.5)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -

# 加执行权限
chmod +x kk

 

 

查看kubekey是否有安装成功,有版本输出说明安装成功

/srv/kubekey/kk version

 

将kk复制到/usr/local/kk,可以在任意目录使用 kk

cd /srv/kubekey
cp kk /usr/local/bin/
chmod +x /usr/local/bin/kk

 

验证kubekey版本

cd /
kk version

 

安装kubekey方案2:下载离线包

mkdir -p /srv/kubekey
wget -P /srv/kubekey https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v4.0.5/kubekey-v4.0.5-linux-amd64.tar.gz
tar -zxvf /srv/kubekey/kubekey-v4.0.5-linux-amd64.tar.gz -C /srv/kubekey/
chmod +x /srv/kubey/kk 
cp /srv/kubekey/kk /usr/local/bin/ kk version

 

查看支持的版本(kubekey 4.0.x 已经不支持这条命令了)

./kk version --show-supported-k8s

 

 如果是kybekey 4.0.x及以上,写个脚本查看支持的版本

#!/bin/bash
VERSIONS=(1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36)
for v in "${VERSIONS[@]}"; do
  /usr/local/bin/kk create config --with-kubernetes v$v.0 -o /tmp >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    echo "✅ v$v.x 支持"
  else
    echo "❌ v$v.x 不支持"
  fi
  rm -f /tmp/config-sample.yaml
done

 

image

  

创建两个yaml文件:【集群组件配置文件】 和 【节点清单配置文件】

mkdir -p /data/kubekey 
cd /data/kubekey
# 指定k8s版本创建组件配置文件
kk create config --with-kubernetes v1.34.1 -o k8s-config.yaml
# 用最新版本创建组件配置文件
# kk create config -o k8s-config.yaml
# 创建节点清单配置文件
kk create inventory -o k8s-inventory.yaml

 

提醒:kubekey 3.x.x,用这条命令生成配置文件:  kk create config -f kk-k8s.yaml 。

 

修改 k8s-inventory.yaml 文件,增加节点清单

inventory.yaml 配置样板(3个master节点,2个工作节点):

apiVersion: kubekey.kubesphere.io/v1
kind: Inventory
metadata:
  name: prod-k8s-cluster   这个名字可以改,遵守命名规范即可
spec:
  hosts:
    # Master 01
    k8s-master-01:       #主机名称
      connector:
        type: ssh
        host: 172.29.132.65    #内网ip
        port: 22
        user: root
        password: "你的服务器root密码"
      internal_ipv4: 172.29.132.65   #内网ip
    # Master 02
    k8s-master-02:
      connector:
        type: ssh
        host: 172.29.132.66
        port: 22
        user: root
        password: "你的服务器root密码"
      internal_ipv4: 172.29.132.66
    # Master 03
    k8s-master-03:
      connector:
        type: ssh
        host: 172.29.132.67
        port: 22
        user: root
        password: "你的服务器root密码"
      internal_ipv4: 172.29.132.67
    # Worker 01
    k8s-worker-01:
      connector:
        type: ssh
        host: 172.29.132.68
        port: 22
        user: root
        password: "你的服务器root密码"
      internal_ipv4: 172.29.132.68
    # Worker 02
    k8s-worker-02:
      connector:
        type: ssh
        host: 172.29.132.69
        port: 22
        user: root
        password: "你的服务器root密码"
      internal_ipv4: 172.29.132.69

  groups:
    k8s_cluster:
      groups:
        - kube_control_plane
        - kube_worker

    # 三台控制平面节点
    kube_control_plane:
      hosts:
        - k8s-master-01
        - k8s-master-02
        - k8s-master-03

    # 所有可运行业务Pod节点(3个master节点可以兼做工作节点,也可以不兼做工作节点)
    kube_worker:
      hosts:
        #- k8s-master-01
        #- k8s-master-02
        #- k8s-master-03
        - k8s-worker-01
        - k8s-worker-02

    # etcd 高可用,3台master复用
    etcd:
      hosts:
        - k8s-master-01
        - k8s-master-02
        - k8s-master-03

 

 先预检环境

kk init os -c k8s-config.yaml -i k8s-inventory.yaml

  

安装k8s集群,预检没有报错就可以安装k8s

#权安装k8s
kk create cluster -c k8s-config.yaml -i k8s-inventory.yaml
#娄装k8s和kubesphere(推荐)
kk create cluster -c k8s-config.yaml -i k8s-inventory.yaml --with-kubesphere v4.2.3

 

经测试,kubekey 4.x必须要centos 8及以上才能安装k8s,kube4在centos7上安装k8s失败,centos7只能用kubekey 3.x安装。

 

验证集群

kubectl get nodes
kubectl get pods -A
#验证能否访问kubesphere
curl -I http://172.29.132.65:30880
curl -I http://172.29.132.66:30880
curl -I http://172.29.132.67:30880

 

已有 K8s 集群后追加 KS(不用重装集群)

export KKZONE=cn
kk addons install -c k8s-config.yaml --with-kubesphere v4.2.3

 

posted @ 2026-06-19 19:06  民工黑猫  阅读(26)  评论(0)    收藏  举报