k8s v1.9.9 二进制部署高可用(1)平台规划和初始配置
前提概要:
##########文档已验证,按照步骤可完整实现##########
1.文档内部分命令前面加了$符号,避免带换行符号的命令使人混淆。
2.Troubleshooting方面,,请仔细检查配置文件是否配置正确,而后参考命令“tail -f /var/log/messages” 或者“journalctl -u 服务名”
1、环境规划如下
2、机器硬件要求
-每台机器 2 GB 或更多的 RAM
-2 CPU 核或更多,Master节点要求必须2核
-集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
-节点之中不可以有重复的主机名、MAC 地址或 product_uuid
-禁用交换分区。为了保证 kubelet 正常工作,必须禁用交换分区
3、初始化配置
#各节点设置主机名
hostnamectl set-hostname master-ha-10
hostnamectl set-hostname master-ha-11
hostnamectl set-hostname master-ha-12
hostnamectl set-hostname node-13
hostnamectl set-hostname node-14
#各节点配置域名解析hosts文件
cat >> /etc/hosts <<EOF
10.0.0.10 master-ha-10
10.0.0.11 master-ha-11
10.0.0.12 master-ha-12
10.0.0.10 etcd1
10.0.0.11 etcd2
10.0.0.12 etcd3
10.0.0.13 node-13
10.0.0.14 node-14
EOF
#设置10.0.0.10的root账户可以无密码登录所有节点的root账户,
如果没有特殊指明,本文档的所有操作均在10.0.0.10节点上执行,然后远程分发文件和执行命令
ssh-keygen -t rsa
ssh-copy-id root@10.0.0.10
ssh-copy-id root@10.0.0.11
ssh-copy-id root@10.0.0.12
ssh-copy-id root@10.0.0.13
ssh-copy-id root@10.0.0.14
#安装依赖包
yum install -y vim net-tools wget ntpdate epel-release conntrack ipset sysstat curl iptables libseccomp
#在每台机器上关闭防火墙,清理防火墙规则,设置默认转发策略:
systemctl stop firewalld
systemctl disable firewalld
#如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区。同时注释 /etc/fstab 中相应的条目,防止开机自动挂载 swap 分区:
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied:
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
#加载内核模块
modprobe br_netfilter
modprobe ip_vs_rr
#优化内核参数
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
sysctl -p /etc/sysctl.d/kubernetes.conf
注:
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
必须关闭 tcp_tw_recycle,否则和 NAT 冲突,会导致服务不通;
关闭 IPV6,防止触发 docker BUG;
#更新系统时间。
ntpdate ntp1.aliyun.com #重启失效,写一个定时任务吧。
crontab -e
5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
crontab -l
设置系统时区
#调整系统 TimeZone
timedatectl set-timezone Asia/Shanghai
#将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
#关闭无关的服务
systemctl stop postfix && sudo systemctl disable postfix
所有节点都重启下
init 6