- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一段时间以来,我一直在使用 flannel 在 CentOS 7 上安装三节点 kubernetes 集群,但是 CoreDNS pod 无法连接到 API 服务器并不断重启。
我遵循的引用 HowTo 文档是 here .
防火墙
,br_netfilter
, bridge-nf-call-iptables
,10.244.0.0/16
)设置 master 的 pod 网络,10.244.0.0/24
网络。kubectl
访问其 shell,即使容器位于不同的节点上。
CoreDNS pod 报告它们无法连接到 API 服务器并出现错误:
Failed to list *v1.Namespace: Get https://10.96.0.1:443/api/v1/namespaces?limit=500&resourceVersion=0: dial tcp 10.96.0.1:443: connect: no route to host
我在路由表中看不到 10.96.0.0
路由:
default via 172.16.0.1 dev eth0 proto static metric 100
10.1.0.0/24 dev eth1 proto kernel scope link src 10.1.0.202 metric 101
10.244.0.0/24 via 10.244.0.0 dev flannel.1 onlink
10.244.1.0/24 dev docker0 proto kernel scope link src 10.244.1.1
10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1
10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink
172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.0.202 metric 100
kubeadm init --apiserver-advertise-address=172.16.0.201 --pod-network-cidr=10.244.0.0/16
完成。1.11-3
和 1.12-0
CentOS7 软件包都存在问题并且相同。1.11.3-0
。kubeadm init --apiserver-advertise-address=172.16.0.201 --pod-network-cidr=10.244.0.0/16
重新初始化 Kubernetes,因为服务器有另一个外部 IP,无法通过其他主机访问,Kubernetes 倾向于选择该 IP 作为 API Server IP。 --pod-network-cidr
由 flannel 强制执行.iptables -L
初始化后输出没有加入节点
Chain INPUT (policy ACCEPT)
target prot opt source destination
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
KUBE-FIREWALL all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
KUBE-FORWARD all -- anywhere anywhere /* kubernetes forwarding rules */
DOCKER-USER all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
KUBE-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes service portals */
KUBE-FIREWALL all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain KUBE-EXTERNAL-SERVICES (1 references)
target prot opt source destination
Chain KUBE-FIREWALL (2 references)
target prot opt source destination
DROP all -- anywhere anywhere /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
Chain KUBE-FORWARD (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere /* kubernetes forwarding rules */ mark match 0x4000/0x4000
Chain KUBE-SERVICES (1 references)
target prot opt source destination
REJECT udp -- anywhere 10.96.0.10 /* kube-system/kube-dns:dns has no endpoints */ udp dpt:domain reject-with icmp-port-unreachable
REJECT tcp -- anywhere 10.96.0.10 /* kube-system/kube-dns:dns-tcp has no endpoints */ tcp dpt:domain reject-with icmp-port-unreachable
看起来 API 服务器已按预期部署
$ kubectl get svc kubernetes -o=yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2018-10-25T06:58:46Z
labels:
component: apiserver
provider: kubernetes
name: kubernetes
namespace: default
resourceVersion: "6"
selfLink: /api/v1/namespaces/default/services/kubernetes
uid: 6b3e4099-d823-11e8-8264-a6f3f1f622f3
spec:
clusterIP: 10.96.0.1
ports:
- name: https
port: 443
protocol: TCP
targetPort: 6443
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
然后我用
应用了 flannel 网络 podkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
一旦我应用了 flannel 网络,CoreDNS pod 就会启动并开始出现相同的错误:
Failed to list *v1.Endpoints: Get https://10.96.0.1:443/api/v1/endpoints?limit=500\u0026resourceVersion=0: dial tcp 10.96.0.1:443: connect: no route to host
我发现 flanneld
使用了错误的网络接口(interface),并在部署前在 kube-flannel.yml
文件中进行了更改。然而结果还是一样。
非常感谢任何帮助。
最佳答案
这基本上是说您的 coredns pod 无法与 kube-apiserver 通信。 kube-apiserver 通过以下环境变量在 pod 中公开:KUBERNETES_SERVICE_HOST=10.96.0.1
和 KUBERNETES_SERVICE_PORT_HTTPS=443
我相信您发布的路由是主机上的路由,因为这是您在 pod 容器中运行 ip routes
时得到的:
root@xxxx-xxxxxxxxxx-xxxxx:/# ip route
default via 169.254.1.1 dev eth0
169.254.1.1 dev eth0 scope link
root@xxxx-xxxxxxxxxx-xxxxx:/#
在任何情况下,您都不会看到 10.96.0.1
,因为它是使用 iptables 在集群中公开的。那么那个地址是什么?碰巧这是默认命名空间中的一个 service
,名为 kubernetes
。该服务的 ClusterIP
是 10.96.0.1
并且它正在监听端口 443
,它还映射到 targetPort
6443
这是你的 kube-apiserver 运行的地方。
因为您可以部署 pod 等。看起来 kube-apiserver 没有关闭,这不是您的问题。所以很可能你错过了那个服务(或者有一些 iptable 规则不允许你连接到它)。你可以在这里看到它,例如:
$ kubectl get svc kubernetes
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 92d
完整的输出是这样的:
$ kubectl get svc kubernetes -o=yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2018-07-23T21:10:22Z
labels:
component: apiserver
provider: kubernetes
name: kubernetes
namespace: default
resourceVersion: "24"
selfLink: /api/v1/namespaces/default/services/kubernetes
uid: xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
spec:
clusterIP: 10.96.0.1
ports:
- name: https
port: 443
protocol: TCP
targetPort: 6443
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
所以如果你错过了它,你可以像这样创建它:
cat <<EOF
apiVersion: v1
kind: Service
metadata:
labels:
component: apiserver
provider: kubernetes
name: kubernetes
namespace: default
spec:
clusterIP: 10.96.0.1
ports:
- name: https
port: 443
protocol: TCP
targetPort: 6443
sessionAffinity: None
type: ClusterIP
EOF | kubectl apply -f -
关于Kubernetes CoreDNS pod 不断重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52966498/
我有两个通过 Rancher 运行的 kubernetes pod: #1 - busybox#2 - dnsutils 来自 pod #1: / # cat /etc/resolv.conf nam
我知道这个问题被问了十遍,但是没有任何东西可以帮助我进行互联网搜索。 我的设置: CentOS Linux release 7.5.1804 (Core) Docker Version: 18.06.
我已经设置了一个 Kubernetes 集群,其中包含一个主节点(kube-master)和 2 个从节点(kube-node-01 和 kube-node-02) 一切运行良好......现在在 d
我使用 Kubernetes v1.11.3,它使用 coredns 来解析主机或服务名称,但我在 pod 中发现,解析无法正常工作, # kubectl get services --all-nam
一段时间以来,我一直在使用 flannel 在 CentOS 7 上安装三节点 kubernetes 集群,但是 CoreDNS pod 无法连接到 API 服务器并不断重启。 我遵循的引用 HowT
我正在尝试配置一个 2 节点 Kubernetes 集群。首先,我尝试在 CentOS VM 上配置集群的主节点。我已经使用 'kubeadm init --apiserver-advertise-a
我有一个非常标准的 Kubernetes 安装,在 Ubuntu 上作为单节点集群运行。我正在尝试配置 CoreDNS 以解析我的 Kubernetes 集群中的所有内部服务和一些外部域名。到目前为止
我有这样的 CoreFile 配置 .:53 { errors health { lameduck 5s } ready kubernetes c
我有一个正在运行的 k8s 集群,其中包含两个 CoreDNS 副本。但是当我尝试输入 POD 的 bash 提示时,它让我陷入错误 # kubectl exec -it coredns-5644d7
我有一个 3 个节点的 Kubernetes: [root@ops001 ~]# kubectl get nodes NAME STATUS ROLES AGE
我在 ubuntu 16.04 中设置了 kubernetes。我正在使用 kube 版本 1.13.1 并使用 weave 进行网络连接。我已经使用以下方法初始化了集群: sudo kubeadm
我正在尝试设置 Kubernetes 集群,但无法运行 CoreDNS。我运行了以下命令来启动集群: sudo swapoff -a sudo sysctl net.bridge.bridge-nf-
我正在尝试向 coredns 添加重写以将域指向集群负载均衡器(以便将该域的请求重定向回集群)。我似乎找不到影响 k3s 的 coredns 配置的方法。有办法改变吗? (这是为了解决 https:/
如何在 kubernetes 集群上刷新 CoreDNS 缓存? 我知道可以通过删除 CoreDNS pod 来完成,但是是否有适当的方法来刷新缓存? 最佳答案 @coollinuxoid 的回答不适
我有一个运行“v1.12.6-eks-d69f1”的双节点 Kubernetes EKS 集群 Amazon VPC CNI Plugin for Kubernetes version: amazon
我已安装 Kubernetes cluster on CentOS-8但节点状态显示 NotReady , coredns 的命名空间状态显示 pending和织网状态显示CrashLoopBackO
要配置具有复制控制平面的多集群 Isito,要求之一是在 kube-system 命名空间中配置 k8s coredns 服务,将区域“global”转发到部署在 istio-system 命名空间中
我有一个 kubernetes 集群(使用 Typhoon 模块构建)和一个位于不同 VPC 中的 Prometheus 实例(在 docker-compose 上运行,而不是在 Kubernetes
我在我的 kuberntes 集群(v1.15.2)中部署 coredns(v1.6.7),现在是 pod 的 /etc/resolv.conf : nameserver 10.96.0.10
我是 Kubernetes 新手,希望更好地了解 Kube-DNS 和 CoreDNS 之间的区别。 据我了解,建议使用较新的 CoreDNS,而不是较旧的 Kube-DNS。 我已经使用 kubea
我是一名优秀的程序员,十分优秀!