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
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
>
1.11.3-0
。kubeadm init-apiserver-advise-address=172.16.0.201-pod-network-cidr=10.244.0.0/16
重新初始化了Kubernetes,因为服务器有另一个外部IP,无法通过其他主机访问,而Kubernetes倾向于选择该IP作为API服务器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: {}
然后我将法兰绒网络pod应用于
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
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
这基本上是说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在集群中公开的。那地址是什么?缺省命名空间中的服务
称为Kubernetes
。该服务的clusterIP
是10.96.0.1
,它正在侦听端口443
,它还映射到targetport
6443
,而这正是您的kube-apiserver正在运行的地方。
因为您可以部署pods等,所以看起来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 -
我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存
我已经在节点(node1)上的pod(pod1)上部署了一个Spring Boot应用程序。我还在不同节点(node2)上的另一个pod(pod2)上部署了JMeter。我试图从POD2执行自动负载测试。为了执行负载测试,我要求为每个测试用例重新启动pod1。如何从POD2重新启动pod1?
我的Java微服务正在AWS EC2实例上托管的k8s集群中运行。 我有大约30个微服务(nodejs和Java8的良好组合)在K8s集群中运行。我面临一个挑战,我的java应用程序pods意外重启,导致应用程序5xx数量增加。 为了调试它,我在pod和应用程序中启动了一个newrelic代理,并找到了以下图表: 在我可以看到的地方,我的Xmx值为6GB,我的用途最大为5.2GB。 这清楚地表明J
迷你库版本v0.24.1 kubernetes 1.8.0版 我面临的问题是,我在minikube中创建了几个,每个都有一个pod。 有时,当我启动minikube时,我的吊舱会先启动,然后由kubernetes重新启动。它们将一次又一次地从创建容器状态到运行状态,再到终止状态。 现在,我已经看到kubernetes杀死和重启的东西之前,如果kubernetes检测到磁盘压力,内存压力,或其他类似
我试图了解如何最好地使用库伯内特的准备和活跃度探测器。我在测试时观察到的是,如果就绪探测失败,则pod被标记为未就绪,并从负载均衡器中移除。然而,然后我希望启动一个新的pod并将其移入负载均衡器,直到原来的pod再次准备就绪(或者它的活性探测失败并被杀死),然后它们中的一个可以被终止。 如果就绪探测失败,我们可能想要暂时从服务中移除一个pod,但这似乎会冒着所有pod都未就绪的风险,这将导致负载均