在 Kubernetes 集群中处于待处理状态的 Coredns



我正在尝试配置一个 2 节点的 Kubernetes 集群。首先,我尝试在 CentOS 虚拟机上配置集群的主节点。我使用 'kubeadm init --apiserver-advertise-address=172.16.100.6 --pod-network-cidr=10.244.0.0/16' 初始化集群,并将法兰绒网络部署到集群。但是当我执行"kubectl 获取节点"时,我得到以下输出----

[root@kubernetus ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
kubernetus   NotReady   master   57m   v1.12.0

以下是'kubectl get pods --all-namespaces -o wide'----的输出

[root@kubernetus ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE
kube-system   coredns-576cbf47c7-9x59x             0/1     Pending   0          58m   <none>         <none>       <none>
kube-system   coredns-576cbf47c7-l52wc             0/1     Pending   0          58m   <none>         <none>       <none>
kube-system   etcd-kubernetus                      1/1     Running   2          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-apiserver-kubernetus            1/1     Running   2          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-controller-manager-kubernetus   1/1     Running   1          57m   172.16.100.6   kubernetus   <none>
kube-system   kube-proxy-hr557                     1/1     Running   1          58m   172.16.100.6   kubernetus   <none>
kube-system   kube-scheduler-kubernetus            1/1     Running   1          57m   172.16.100.6   kubernetus   <none>

coredns 在很长一段时间内处于挂起状态。我已经删除了docker和kubectl,kubeadm,kubelet,并尝试重新创建集群,但每次它都显示相同的输出。任何人都可以帮助我解决这个问题吗?

尝试安装 Pod 网络插件(基于本指南(。

运行此行:

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

无法更新 cni 配置:在/etc/cni/net.d 中找不到网络..... 10月 02 19:21:32 kubelet[19007]: E1002 19:21:32.886170 19007 kubelet.go:2167] 容器运行时网络未就绪: NetworkReady=false reason:NetworkPluginNotReady 消息:docker: 网络插件未就绪:CNI 配置未初始化

根据这个错误,你忘了初始化一个 Kubernetes Pod 网络插件。看看你的设置,我想应该是法兰绒。

以下是官方 Kubernetes 文档中的说明:

要使法兰绒正常工作,您必须通过--pod-network-cidr=10.244.0.0/16to kubeadm init.

通过运行将/proc/sys/net/bridge/bridge-nf-call-iptables设置为 1sysctl net.bridge.bridge-nf-call-iptables=1通过桥接 IPv4 流向 iptables 链的流量。这是某些 CNI 的要求 插件工作,有关更多信息,请参阅此处。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

请注意,法兰绒适用于 amd64、arm、arm64 和 ppc64le,但直到 法兰绒 v0.11.0 发布您需要使用以下清单 支持所有架构:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml

有关更多信息,您可以访问此链接。

为了使 Kubernetes 集群可用,集群应该有一个容器网络接口 (CNI(。需要配置容器网络才能使 DNS 容器正常运行。

安装任何 CNI 提供程序,例如: -法兰绒 -白布 -渠 - 编织网等

如果没有这个,托管的 Kubernetes 集群将使主节点处于 NotReady 状态。

检查 docker 和 kubernetes 是否使用相同的 cgroup 驱动程序。 我遇到了同样的问题(CentOS 7,kubernetes v1.14.1(,并且设置相同的cgroup驱动程序(systemd(修复了它。

我安装了带有 1 个主节点 + 1 个工作节点的 kubernetes.
在我做了kubeadm init ...之后,我遇到了两个问题:

  1. 在主节点上,coredn 处于挂起状态。
  2. 在工作节点上,kubectl 命令不起作用

在工作节点上,我执行以下操作并修复了这两个问题:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config**

对我来说,我已经重新启动了系统并重新应用了calico.yaml,coredns和calico pods开始创建。

至少优先考虑此解决方案并尝试更改实例类型(最好是更高的 CPU 核心/RAM( 就我而言,我已经将Linux实例t3.micro更改为t2.medium及其工作原理

相关内容

  • 没有找到相关文章

最新更新