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)