一、部署CNI網絡
獲取最新更新以及文章用到的軟件包,請移步點擊:查看更新
1、先准備好CNI二進制文件:
下載地址:https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz
2、解壓二進制包並移動到默認工作目錄:
mkdir /opt/cni/bin tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin
3、部署CNI網絡:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.12.0-amd64#g" kube-flannel.yml
4、默認鏡像地址無法訪問,修改為docker hub鏡像倉庫。
kubectl apply -f kube-flannel.yml kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-flannel-ds-amd64-2pc95 1/1 Running 0 72s kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready <none> 41m v1.20.4
部署好網絡插件,Node准備就緒。
5、授權apiserver訪問kubelet
cat > apiserver-to-kubelet-rbac.yaml << EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults name: system:kube-apiserver-to-kubelet rules: - apiGroups: - "" resources: - nodes/proxy - nodes/stats - nodes/log - nodes/spec - nodes/metrics - pods/log verbs: - "*" --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:kube-apiserver namespace: "" roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:kube-apiserver-to-kubelet subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: kubernetes EOF kubectl apply -f apiserver-to-kubelet-rbac.yaml
二、模式修改為IPVS
注意:使用flannel的k8s集群允許修改成ipvs模式(測試通沒沒問題),使用Calico的k8s集群需要內核升級到4.1。
1、開啟內核參數
cat >> /etc/sysctl.conf << EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF
sysctl -p #生效
2、開啟ipvs支持
yum update -y # 可做可不做,如果CentOS 7內核大於3.10 yum install -y ipset ipvsadm conntrack conntrack-tools 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_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
3、配置kube-proxy服務
vi /usr/lib/systemd/system/kube-proxy.service # 修改服務文件 # ExecStart選項的末尾添加下面兩行 --proxy-mode=ipvs \ --masquerade-all=true
4、修改kube-proxy配置文件
# systemctl status kube-proxy.service 查看配置文件保存地址 vi kube-proxy-config.yml # 末尾添加下面兩行,啟用ipvs,使用rr輪詢 mode: ipvs scheduler: "rr"
5、重啟服務,查看結果
# 重啟kube-proxy systemctl daemon-reload systemctl restart kube-proxy systemctl status kube-proxy
# 查看轉發
ipvsadm -L -n
6、加上網段文件
[root@k8s-master1 ~]# cat /run/flannel/subnet.env FLANNEL_NETWORK=10.244.0.0/16 FLANNEL_SUBNET=10.244.1.1/24 FLANNEL_MTU=1450 FLANNEL_IPMASQ=true