官方文档:https://kubernetes.io/docs/setup/independent/high-availability/
关闭防火墙
1 2
| systemctl stop firewalld systemctl disable firewalld
|
禁用selinux
1 2 3
| # Set SELinux in permissive mode (effectively disabling it) setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
|
启用net.bridge.bridge-nf-call-ip6tables和net.bridge.bridge-nf-call-iptables
1 2 3 4 5 6
| cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF sysctl --system
|
禁用swap
1 2 3 4
| swapoff -a
修改/etc/fstab 文件,注释掉 SWAP 的自动挂载. 使用free -m确认swap已经关闭。
|
加载ipvs相关模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/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 modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
|
上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。接下来还需要确保各个节点上已经安装了ipset软件包。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm。
1
| yum install ipset ipvsadm -y
|
安装 docke
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 安装docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-18.06*
# 增加加速器 tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://bv55mwyn.mirror.aliyuncs.com"] } EOF
# 启动docker systemctl enable docker && systemctl start docker
|
安装kubeadm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 添加阿里云仓库 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
# 安装kubeadm yum install -y kubelet-1.13.4 kubeadm-1.13.4 kubectl-1.13.4
# 启动kubectl systemctl enable kubelet && systemctl start kubelet
|
部署master节点
注意这里执行初始化用到了- -image-repository选项,指定初始化需要的镜像源从阿里云镜像仓库拉取。
Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加–image-repository参数
1 2 3 4
| kubeadm init \ --image-repository registry.cn-shenzhen.aliyuncs.com/hyman0603 \ --kubernetes-version v1.13.4 \ --pod-network-cidr=10.244.0.0/16
|
KUBE-代理使用IPVS转发
开启路由转发
1 2 3 4
| cat >> /etc/sysctl.conf << EOF net.ipv4.ip_forward=1 EOF sysctl -p
|
修改ConfigMap的kube-system/kube-proxy中的config.conf
1 2
| kubectl edit cm kube-proxy -n kube-system # 39行 mode: "" -> mode: "ipvs"
|
重启所有工作节点的kube-proxy pod
1
| kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
|
查看是否生效
1
| kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
|
查看ipvs规则