我正在尝试配置一个 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/16
to 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 ...
之后,我遇到了两个问题:
- 在主节点上,coredn 处于挂起状态。
- 在工作节点上,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及其工作原理