跳转至

主机规划

K8S 集群主机环境说明

1. 主机操作系统说明

序号 操作系统及版本 备注
1 CentOS7u9

2. 主机软、硬件配置说明

主机名 IP 地址 规格 软件
hpa-1 192.168.3.30 2C / 4G / 1024GB Haproxy & Keepalived (VIP: 192.168.3.200)
hpa-2 192.168.3.31 2C / 4G / 1024GB Haproxy & Keepalived
etcd-1 192.168.3.40 2C / 4G / 1024GB etcd
etcd-2 192.168.3.41 8C / 4G / 1024GB etcd
etcd-3 192.168.3.42 8C / 4G / 1024GB etcd
k8s-master01 192.168.3.50 2C / 4G / 1024GB kubectl、(apiserver、controller-manager、scheduler)
k8s-master02 192.168.3.51 2C / 4G / 1024GB kubectl、(apiserver、controller-manager、scheduler)
k8s-master03 192.168.3.52 2C / 4G / 1024GB kubectl、(apiserver、controller-manager、scheduler)
k8s-worker01 192.168.3.60 2C / 4G / 1024GB kubelet、kube-proxy、Docker-ce、cri-dockerd
k8s-worker02 192.168.3.61 2C / 4G / 1024GB kubelet、kube-proxy、Docker-ce、cri-dockerd

image-20240712192920462

1. 主机准备(所有主机都执行)

1. 主机都执行, X 为 上表中的主机名
hostnamectl set-hostname XXX
1. 编辑 vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.3.41"
PREFIX="24"
GATEWAY="192.168.1.99"
DNS1="119.29.29.29"
DNS2="8.8.8.8"
2. 重启服务
systemctl restart network
1. 设置主机主机名对应
cat >> /etc/hosts <<'EOF'
192.168.3.40 etcd-1
192.168.3.41 etcd-2
192.168.3.42 etcd-3
192.168.3.50 k8s-master01
192.168.3.51 k8s-master02
192.168.3.52 k8s-master03
192.168.3.60 k8s-worker01
192.168.3.61 k8s-worker02
EOF
1. 在 g1 主机操作,然后 copy 到其它主机即可。
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' && cd /root/.ssh && cp id_rsa.pub authorized_keys && cd ../
scp -r /root/.ssh g2:/root
scp -r /root/.ssh g3:/root
1. 复制当前的 CentOS 7 存储库文件,以便在必要时可以恢复更改:
cp -v /etc/yum.repos.d/CentOS-Base.repo{,-backup}
2. vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=https://vault.centos.org/7.9.2009/os/$basearch
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
baseurl=https://vault.centos.org/7.9.2009/updates/$basearch
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://vault.centos.org/7.9.2009/extras/$basearch
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://vault.centos.org/7.9.2009/centosplus/$basearch
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
3. 执行命令
yum clean all && yum makecache

2. 安全设置(三台机器都执行)

1. 关闭 firewalld 防火墙。
systemctl disable firewalld && systemctl stop firewalld
firewall-cmd --state
not running
1. 所有主机均要修改,修改后,请重启系统让修改生效。。
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
1. 下载时间同步。
yum -y install ntpdate
2. 增加时间同步。
crontab -l
0 */1 * * * ntpdate time1.aliyun.com
1. 部署。
 yum -y install ipvsadm ipset sysstat conntrack libseccomp
2. 配置 ipvsadm 模块加载方式。
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
3. 授权、运行、检查是否加载。
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

3. 开启主机内核路由转发

配置内核加载br_netfilteriptables放行ipv6ipv4的流量,确保集群内的容器能够正常通信。

1. 添加网桥过滤及内核转发配置文件。
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
vm.swappiness = 0
EOF
2. 加载 br_netfilter 模块。
modprobe br_netfilter
3. 查看是否加载。
lsmod | grep br_netfilter

4. 关闭主机SWAP分区

修改完成后需要重启操作系统,如不重启,可临时关闭,命令为 swapoff -a

1. 永远关闭 swap 分区,需要重启操作系统。
cat /etc/fstab
删除  /dev/mapper/centos-swap swap                    swap    defaults        0 0

5. K8S 集群节点间免密登录配置

在 k8s-master01 节点上创建即可 ,复制公钥到其它节点。

ssh-keygen
# 将 SSH 公钥复制到其他节点
for HOST in k8s-master01 k8s-master02 k8s-master03 k8s-worker01 k8s-worker02; do
  ssh-copy-id root@$HOST
done