二进制文件安装高可用k8s集群(七)集群优化
标签搜索

二进制文件安装高可用k8s集群(七)集群优化

mrui
2025-04-08 / 0 评论 / 46 阅读 / 正在检测是否收录...

master主机安装containerd

为方便主机与各node节点通信,安装containerd,kubelet与kube-proxy,以便于安装cni网络插件。
具体安装方式详见 二进制文件安装高可用k8s集群(六)node部署服务containerd安装与配置

安装kubectl

在master节点,主要通过kubectl命令行工具对k8s集群进行管理,因此需要将安装包中的kubectl可执行文件复制到/usr/bin目录下。

cp /root/kubernetes/server/bin/kubelet /usr/bin/

优化配置信息

在集群的安装过程中,kubeconfig文件被存放在了/etc/kubernetes/目录下,这样就会导致每次使用kubectl命令时,需要搭配--kubeconfig参数指定kubeconfig的路径,比较麻烦。解决方案是把配置文件拷贝到k8s默认的配置目录下。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/kubeconfig $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

导入tab键

方便使用tab键进行命令补全

source <(kubectl completion bash|tee /etc/bash_completion.d/kubectl)

安装网络插件

calico插件的正常启用需要一些本地模块的支持,因此在安装calico插件前,需要先在本地安装一些calico可能会用到的模块

#containerd需要的模块(安装containerd时已配置,此处仅展示)
cat /etc/modules-load.d/containerd.conf 
overlay
br_netfilter
overlay
br_netfilter
nf_conntrack
#配置calico需要用到的模块
vim /etc/modules-load.d/calico.conf
#在文件中输入以下内容
ip_vs
ip_vs_rr
iptable_nat
iptable_filter
vxlan 
ipip

tree /etc/modules-load.d/
/etc/modules-load.d/
├── calico.conf
└── containerd.conf
#加载模块信息使生效
systemctl restart systemd-modules-load
各模块作用说明
  • ip_vs:IP 虚拟服务器(IP Virtual Server) 模块,用于实现传输层(L4)负载均衡,支持多种调度算法。
  • ip_vs_rr:ip_vs 的调度算法之一,表示 轮询调度(Round Robin)。
  • iptable_nat:支持 网络地址转换(NAT) 功能,用于实现 SNAT(源地址转换)和 DNAT(目标地址转换)。
  • iptable_filter:支持 包过滤 功能,用于定义防火墙规则(如允许/拒绝特定流量)。
  • vxlan:支持 VXLAN(Virtual Extensible LAN) 协议,用于在现有网络之上创建虚拟的 Overlay 网络,解决 VLAN ID 数量限制(支持 1600 万个虚拟网络)。
  • ipip:支持 IP-in-IP 隧道协议,通过将原始 IP 数据包封装在另一个 IP 包中实现跨网络通信。
模块在容器中的作用

ip_vs/ip_vs_rr:Kubernetes Service 的负载均衡(IPVS 模式)。
iptable_nat/iptable_filter:Service 流量转发和网络策略(iptables 模式)。
vxlan/ipip:跨节点容器通信(Calico、Flannel 等插件的隧道封装)。

calico模块依赖关系

IPIP 模式:依赖 ipip 模块。
VXLAN 模式:依赖 vxlan 模块。
网络策略:依赖 iptable_filter 和 iptable_nat。
kube-proxy IPVS 模式:依赖 ip_vs 和 ip_vs_rr

安装calico插件

calico插件官网: Calico Documentation
calico插件安装教程: Calico Open Source 3.29 (latest) documentation
calico官网提供了多种安装方式,简便起见这里选用Manifest(静态文件声明)模式进行安装。在这种模式下,calico根据k8s集群的规模提供了两个安装文件以供选择(以50个node节点规模为分界,)。本文选择选择小于50个节点规模的安装方式进行安装

curl https://raw.githubusercontent.com/projectcalico/calico/v3.29.3/manifests/calico.yaml -O
#因为集群指定的pod所使用的地址段为10.244.0.0/16,因此需要修改calico.yaml文件中pod地址段的默认值。
vim calico.yaml
- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"
#找到上面两行内容,大约在6291和6292行,去掉前面的#号和一个空格(yaml格式对缩进要求严格,缩进不对会报错),使得- name行的-号与上面一行的#号对齐,value行的value与name对齐。
kubectl apply -f calico.yaml
#等待一段时间,待新生成的pod都是Running状态,即表示插件安装完成
kubectl get pods -n kube-system 
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-79949b87d-jn4mk   1/1     Running   0          3h11m
calico-node-69plr                         1/1     Running   0          3h11m
calico-node-f6b5v                         1/1     Running   0          3h11m
calico-node-jsqt2                         1/1     Running   0          3h11m
calico-node-kwb46                         1/1     Running   0          3h11m
calico-node-m8ppg                         1/1     Running   0          3h11m
calico-node-z9rkj                         1/1     Running   0          3h11m
0

评论 (0)

取消