Kubernetes多网卡节点Calico选择网卡配置
2023-06-13 09:13:55 时间
Calico 在多网卡kubernetes节点上有的时候会选择错误的网卡,导致容器间通信异常。 因此配置Calico选择正确的网卡十分重要。这个配置项困扰我达一年之久,之前的做法一直是使用ifdown关停除目标网卡外的其他网卡。因为Calico的默认行为是选择第一个可用的网卡。
网卡自动检测规则方法,有如下4种:
Kubernetes Node IP
Calico 会默认选择node Status.Address第一个内部ip.
如何查看 Status.Addresss 字段?
[root@k8s-master ~]# kubectl get node k8s-master -o yaml
apiVersion: v1
kind: Node
status:
addresses:
- address: 172.16.15.12
type: InternalIP
- address: k8s-master
type: Hostname
配置时机是两种:
yaml 方式 第一种方法是在部署Calico DeamonSet时,设置其Pod环境变量:
# Source: calico/templates/calico-node.yaml
# This manifest installs the calico-node container, as well
# as the CNI plugins and network config on
# each master and worker node in a Kubernetes cluster.
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: calico-node
namespace: kube-system
labels:
k8s-app: calico-node
spec:
selector:
matchLabels:
k8s-app: calico-node
spec:
containers:
# Runs calico-node container on each Kubernetes node. This
# container programs network policy and routes on each
# host.
- name: calico-node
image: registry.geoway.com/calico/node:v3.19.1
env:
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "cidr=172.16.15.0/24"
然后执行:
kubectl apply -f calico.yaml
bash patch
另一种方式是apply之后,使用patch命令手动添加:
kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=kubernetes-internal-ip
1、目标IP或域名可达
选择可以ping通目标IP或者域名的网卡: yaml 方式
- name: calico-node
image: registry.geoway.com/calico/node:v3.19.1
env:
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "can-reach=www.google.com"
bash patch
kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=can-reach=www.google.com
2、匹配目标网卡
使用正则表达式匹配ip a命令输出的网卡名,可使用正则
- name: calico-node
image: registry.geoway.com/calico/node:v3.19.1
env:
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "interface=eth.*"
3、排除匹配网卡
和匹配目标网卡相反,不会选择符合匹配规则的网卡
- name: calico-node
image: registry.geoway.com/calico/node:v3.19.1
env:
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "skip-interface=eth.*"
4、CIDR
指定CIDR地址,多个子网使用逗号","分隔。
- name: calico-node
image: registry.geoway.com/calico/node:v3.19.1
env:
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "cidr=192.168.200.0/24,172.15.0.0/24"
总结
Calico 配置网卡可使用IP_AUTODETECTION_METHOD环境变量, 有两种方式。 Calico 相关配置的官方文档在Change the autodetection method
作者:oneslide
源链接:
https://blog.csdn.net/qq_33745102/article/details/126968473
格式整理:IT运维技术圈
相关文章
- Kubernetes(k8s)实现IPv4/IPv6网络双栈
- 快速上手kubernetes——minikube最小实现
- Airbnb的动态kubernetes集群扩缩容
- Kubernetes节点与 Pod 亲和性
- Kubernetes节点与令牌管理
- 使用Kubernetes容器快速部署常用服务
- Kubernetes有状态应用迁移实录
- Kubernetes 领进门 | 使用 k3s 快速部署 kubernetes 集群
- K8S 生态周报| Kubernetes v1.25.0 正式发布,新特性一览
- Kubernetes 运维遇到的问题记录(2)
- 一文搞懂基于 Kubescape 进行 Kubernetes 安全加固
- 顶级的Kubernetes日志监控工具
- 揭秘 Longhorn 如何为 3.5万 个 Kubernetes 节点提供持久存储?
- kubernetes中日志采集
- kubernetes节点资源使用不均衡的原因以及处理办法
- Kubernetes 部署 Nacos 1.4 集群 · 小豆丁
- Kubernetes 如何成为计算资源的标准