【问题标题】:Are these pods inside the overlay network?这些 pod 是否在覆盖网络内?
【发布时间】:2019-08-02 09:17:03
【问题描述】:

如何确认此 Kubernetes 集群中的某些 Pod 是否在 Calico 覆盖网络内运行?


Pod 名称:

具体来说,当我运行kubectl get pods --all-namespaces 时,结果列表中只有两个节点的名称中有calico 这个词。其他 Pod,如 etcdkube-controller-manager,以及其他 Pod 的名称中没有 calico 一词。根据我在网上阅读的内容,其他 pod 的名称中应该有 calico 这个词。

$ kubectl get pods --all-namespaces  

NAMESPACE     NAME                                                               READY   STATUS              RESTARTS   AGE  
kube-system   calico-node-l6jd2                                                  1/2     Running             0          51m  
kube-system   calico-node-wvtzf                                                  1/2     Running             0          51m  
kube-system   coredns-86c58d9df4-44mpn                                           0/1     ContainerCreating   0          40m  
kube-system   coredns-86c58d9df4-j5h7k                                           0/1     ContainerCreating   0          40m  
kube-system   etcd-ip-10-0-0-128.us-west-2.compute.internal                      1/1     Running             0          50m  
kube-system   kube-apiserver-ip-10-0-0-128.us-west-2.compute.internal            1/1     Running             0          51m  
kube-system   kube-controller-manager-ip-10-0-0-128.us-west-2.compute.internal   1/1     Running             0          51m  
kube-system   kube-proxy-dqmb5                                                   1/1     Running             0          51m  
kube-system   kube-proxy-jk7tl                                                   1/1     Running             0          51m  
kube-system   kube-scheduler-ip-10-0-0-128.us-west-2.compute.internal            1/1     Running             0          51m  


stdout 来自应用印花布

应用calico产生的stdout如下:

$ sudo kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml  

configmap/calico-config created  
service/calico-typha created  
deployment.apps/calico-typha created  
poddisruptionbudget.policy/calico-typha created  
daemonset.extensions/calico-node created\nserviceaccount/calico-node created  
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created  
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created  


集群是如何创建的:

安装集群的命令是:

$ sudo -i 
# kubeadm init --kubernetes-version 1.13.1 --pod-network-cidr 192.168.0.0/16 | tee kubeadm-init.out
# exit 
$ sudo mkdir -p $HOME/.kube
$ sudo chown -R lnxcfg:lnxcfg /etc/kubernetes
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config 
$ sudo kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
$ sudo kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml  

这是在 AWS 上的 Amazon Linux 2 主机上运行的。

【问题讨论】:

  • 请注意,即使在删除 pod 之后,ContainerCreating 仍然存在于 OP 中。 Google 研究表明,这通常是由于 Calico 安装问题造成的,该 OP 也指出了这一点。

标签: amazon-web-services kubernetes containers kubeadm project-calico


【解决方案1】:

根据官方文档:(https://docs.projectcalico.org/v3.6/getting-started/kubernetes/) 看起来不错。它包含进一步的激活命令,还可以查看首页上的演示,其中显示了一些验证

NAMESPACE    NAME                                       READY  STATUS   RESTARTS  AGE
kube-system  calico-kube-controllers-6ff88bf6d4-tgtzb   1/1    Running  0         2m45s
kube-system  calico-node-24h85                          2/2    Running  0         2m43s
kube-system  coredns-846jhw23g9-9af73                   1/1    Running  0         4m5s
kube-system  coredns-846jhw23g9-hmswk                   1/1    Running  0         4m5s
kube-system  etcd-jbaker-1                              1/1    Running  0         6m22s
kube-system  kube-apiserver-jbaker-1                    1/1    Running  0         6m12s
kube-system  kube-controller-manager-jbaker-1           1/1    Running  0         6m16s
kube-system  kube-proxy-8fzp2                           1/1    Running  0         5m16s
kube-system  kube-scheduler-jbaker-1                    1/1    Running  0         5m41s

【讨论】:

  • 请注意,ContainerCreating 即使在 pod 被删除后仍然存在于 OP 中。
  • 但据我说,coredns 不是印花布的一部分。您可以在开始之前撤消 calico 安装并检查状态吗?
【解决方案2】:

能否请您告诉我您在哪里找到提到其他豆荚也有印花布名称的文献?

据我所知,在kube-system命名空间中,调度器、api服务器、控制器和代理都是由原生kubernetes提供的,因此命名约定中没有任何印花布。

还有一件事,calico 适用于您为希望在 k8s 上运行的实际应用程序创建的 POD,而不适用于 kubernetes 控制平面。

您在创建集群时遇到任何问题吗?那么问题就不同了。

希望这会有所帮助。

【讨论】:

  • 我是在 CNCF 的 Kubernetes 认证管理员官方培训课程中找到的。对我来说,这似乎是官方的。请注意,即使在删除 pod 之后,ContainerCreating 仍会保留在 OP 中。 Google 研究表明,这通常是由于 Calico 安装问题造成的,该 OP 也指出了这一点。
【解决方案3】:

这是正常的预期行为,您只有几个以 Calico 开头的 pod。它们是在您初始化 Calico 或向集群添加新节点时创建的。

etcd-*kube-apiserver-*kube-controller-manager-*coredns-*kube-proxy-*kube-scheduler-* 是必需的系统组件,Pod 不依赖于 Calico。因此名称将基于系统。

另外,正如@Jonathan_M 已经写的那样——Calico 不适用于 K8s 控制平面。仅适用于新创建的 pod

您可以使用kubectl get pods --all-namespaces -o wide 验证您的 pod 是否在网络覆盖范围内

我的例子:

kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE   IP            NODE            NOMINATED NODE   READINESS GATES
default       my-nginx-76bf4969df-4fwgt               1/1     Running   0          14s   192.168.1.3   kube-calico-2   <none>           <none>
default       my-nginx-76bf4969df-h9w9p               1/1     Running   0          14s   192.168.1.5   kube-calico-2   <none>           <none>
default       my-nginx-76bf4969df-mh46v               1/1     Running   0          14s   192.168.1.4   kube-calico-2   <none>           <none>
kube-system   calico-node-2b8rx                       2/2     Running   0          70m   10.132.0.12   kube-calico-1   <none>           <none>
kube-system   calico-node-q5n2s                       2/2     Running   0          60m   10.132.0.13   kube-calico-2   <none>           <none>
kube-system   coredns-86c58d9df4-q22lx                1/1     Running   0          74m   192.168.0.2   kube-calico-1   <none>           <none>
kube-system   coredns-86c58d9df4-q8nmt                1/1     Running   0          74m   192.168.1.2   kube-calico-2   <none>           <none>
kube-system   etcd-kube-calico-1                      1/1     Running   0          73m   10.132.0.12   kube-calico-1   <none>           <none>
kube-system   kube-apiserver-kube-calico-1            1/1     Running   0          73m   10.132.0.12   kube-calico-1   <none>           <none>
kube-system   kube-controller-manager-kube-calico-1   1/1     Running   0          73m   10.132.0.12   kube-calico-1   <none>           <none>
kube-system   kube-proxy-6zsxc                        1/1     Running   0          74m   10.132.0.12   kube-calico-1   <none>           <none>
kube-system   kube-proxy-97xsf                        1/1     Running   0          60m   10.132.0.13   kube-calico-2   <none>           <none>
kube-system   kube-scheduler-kube-calico-1            1/1     Running   0          73m   10.132.0.12   kube-calico-1   <none>           <none>


kubectl get nodes --all-namespaces -o wide
NAME            STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
kube-calico-1   Ready    master   84m   v1.13.4   10.132.0.12   <none>        Ubuntu 16.04.5 LTS   4.15.0-1023-gcp   docker://18.9.2
kube-calico-2   Ready    <none>   70m   v1.13.4   10.132.0.13   <none>        Ubuntu 16.04.6 LTS   4.15.0-1023-gcp   docker://18.9.2

您可以看到 K8s 控制平面使用初始 IP,而 nginx 部署 pod 已经使用Calico 192.168.0.0/16 范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多