生产环境:
- 高可用etcd集群,建立3、5或者7个节点
- 高可用Master
- kube-apiserver无状态,可多实例
- 借助于keepalived进行vip流动实现多实例冗余
- 或在多实例前端通过HAProxy或Nginx反代,并借助于keeplived对代理服务器进行冗余
- kube-scheduler及kube-controller-manager各自只能有一个活动实例,但可以有多个备用
- 各自自带leader选举的功能,并且默认处于启动状态
- 多Node主机,数量越多,冗余能力越强
- ceph、glusterfs、iSCSI、FC SAN及各种云存储等
主机环境预设:
- 借助于NTP服务设定各节点时间精确同步
- 通过DNS完成各节点的主机名解析,也可以使用hosts文件进行
- 关闭各节点的iptables或者firewall服务,并确保它们禁止随系统启动
- 关闭SElinux
- 禁用所有的Swap设备
- 若要使用ipvs模型的proxy,各节点还需要载入ipvs相关各模块
1. NTP时钟同步
若节点可以直接访问互联网,直接启动chronyd系统服务,并设定其随系统启动
$ sudo systemctl start chronyd $ sudo systemctl enable chronyd
不过,建议用户配置本地的时间服务器,节点数量越多时尤其如此。存在可用的本地时间服务器时,修改节点的/etc/chrony.conf配置文件,并将时间服务器指向相应的主机即可,配置格式如下:
# server CHRONY-SERVER-NAME-OR-IP iburst
2. 主机名解析
处于简化配置步骤的目的,使用host文件进行各节点的解析,文件内容如下:
127.20.0.2 k8s-master
127.20.0.3 k8s-node1
127.20.0.4 k8s-node2
...
3. 关闭iptables或firewall
Centos:
$ systemctl stop firewalld
$ systemctl disable firewalld
$ systemctl stop iptables
$ systemctl disable iptables
Ubuntu:
$ sudo service ufw disable
4. 关闭并禁用SELINUX
默认ubuntu是没有SElinux。
Centos若当前启用了SElinux,则需要编辑/etc//selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled
使用getenforce命令查询当前状态,如果结果不是Disabled,则需要进行禁用。
临时禁用可以使用setenforce 0 来临时生效
永久生效需要修改相应的配置文件
5. 禁用Swap设备
# swapoff -a #临时禁用
永久禁用需要修改/etc/fatab,将swap设备注释掉即可
6. 启用ipvs内核模块(可选)
创建内核模块相关脚本文件/etc/sysconfig/modules/ipvs.modules,设定自动载入的内核模块。文件内容如下:
#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_mods_dir | grep -o "^[^.]*");
do
/sbin/modinfo -F filename $i &> /dev/null
if [ $? -eq 0 ];then
/sbin/modprobe $i
fi
done
修改文件权限,并手动为当前系统加载内核模块:
# chmod +x /etc/sysconfig/modules/ipvs.modules
# bash /etc/sysconfig/modules/ipvs.modules