主机规划 ¶
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 |
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_netfilter
和iptables
放行ipv6
和ipv4
的流量,确保集群内的容器能够正常通信。
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