kubernetes - Pod 无法通过服务 IP 连接到自身(kubernetes v1.10)
问题描述
我有一个 kubernetes 集群(v1.10)和法兰绒作为 cni。使用默认设置,设置工作正常(使用 kubeadm),但 pod 无法通过服务 IP 连接到自身。
尝试将发夹模式设置为“混杂桥”,但 kubelet 抱怨:
Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"
不知道发生了什么。经历了这个https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/#a-pod-cannot-reach-itself-via-service-ip但没有帮助。任何指针?
解决方案
默认 flannel 配置不会将 HairpinMode 设置为 true。
https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
在 flannel 配置中将 hairpinMode 设置为 true 解决了该问题。配置更改如下:
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
}
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
完整的法兰绒配置在这里:
使用以下命令代替默认的 kubectl 命令来应用 flannel cni:
kubectl apply -f https://gist.githubusercontent.com/phagunbaya/2a53519a9427ba0623244f1680a5b5ff/raw/13ada0d6dd92388c8c5aae93bfb1ccaf9c79f60b/flannel-0.9.1.yaml
推荐阅读
- mysql - mysql LEFT JOIN 不像左连接
- python - 鼠标点击后更改屏幕区域的颜色,并在发布 Pygame 后保持更改
- python - Dask 是否保证分区内的行(具有非唯一索引)永远不会被重新排序?
- arrays - 如何在本机反应中构造多个字典以排列
- javascript - 如何在 JavaScript 中的 XPath 中包含字符串变量?
- java - 将多个输入打印成不同的纯文本 - Android Studio
- html - 图像地图区域上的自定义指针光标恢复为默认值
- javascript - 从其他 js 模块访问记录器
- redis - Sentinel和Cluster的Redis优势
- java - 无法构造 com.google.cloud.datastore.Key 的实例