Kubernetes 无法列出 *v1.ConfigMap:获取

Kubernetes 无法列出 *v1.ConfigMap:获取

我有一个 K8S 集群,2 台服务器,1 台主服务器,1 台工作人员,一切正常。

集群部署:

kubeadm init --pod-network-cidr "10.11.0.0/16" --upload-certs 

簇:

ardc01k8s-master01.nps.local   Ready    master   41m   v1.19.2   10.10.80.1    <none>        Red Hat Enterprise Linux 8.2 (Ootpa)   4.18.0-193.19.1.el8_2.x86_64   docker://19.3.13
ardc01k8s-wrk01.nps.local      Ready    <none>   34m   v1.19.2   10.10.80.11   <none>        Red Hat Enterprise Linux 8.2 (Ootpa)   4.18.0-193.19.1.el8_2.x86_64   docker://19.3.13

当我部署具有 HA 的集群(对于多个主服务器)时,Metallb 失败并且无法读取配置映射,因此请查看它可以分配的 ip。

kubeadm init --control-plane-endpoint "10.10.80.10:6443" --pod-network-cidr "10.11.0.0/16" --upload-certs 

金属控制器错误:

E1009 19:34:56.370850       1 reflector.go:125] pkg/mod/k8s.io/[email protected]   78d2af792bab/tools/cache/reflector.go:98: Failed to list *v1.Service: Get https://10.12.0.1:443/api/v1/services?limit=500&resourceVersion=0: dial tcp 10.12.0.1:443: i/o timeout
I1009 19:34:56.371672       1 trace.go:81] Trace[1783558010]: "Reflector pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:98 ListAndWatch" (started: 2020-10-09 19:34:26.371367929 +0000 UTC m=+1612.080726327) (total time: 30.000286335s):
Trace[1783558010]: [30.000286335s] [30.000286335s] END

Metallb 无法读取配置映射并且服务陷入 <Pending> 状态。

所有服务器都是全新安装的 RHEL,我制作了快照以进行回滚。有任何想法吗?

答案1

如果连接到 Kube API 服务器超时,则意味着某个地方的路由存在问题。

在安装 Metallb 之前,请验证您是否可以在内部访问 Kube API。

获取kubernetes服务的集群ip

kubectl get service kubernetes

使用集群 IP 验证与 Kube API 服务器的内部连接

kubectl run -i -t --attach test --restart=Never --image=ubuntu:20.04 -- bash
apt update -y && apt install -y curl
curl https://10.12.0.1:443

确保您可以使用端口 6443 上的物理 IP 访问每个主服务器上的 Kube API 服务器

curl https://10.10.80.10:6443

对于 HA,您需要在初始化 Kubernetes 集群之前配置外部负载均衡器。该负载均衡器侦听端口 443,该端口将请求发送到端口 6443 上的每个主服务器。理想情况下,您将有两个共享 VIP 的负载均衡器。

您可以使用 haproxy 进行简单的配置,如下所示

listen kubernetes
    bind *:443
    mode tcp
    balance roundrobin
    server kube-master-1 10.10.80.10:6443
    server kube-master-2 10.10.80.11:6443
    server kube-master-3 10.10.80.12:6443

现在使用 kubeadm 创建 kube 集群,但指向负载均衡器的 IP (VIP) 并使用端口 443

kubeadm init --control-plane-endpoint "MY_VIP:443" --pod-network-cidr "10.11.0.0/16" --upload-certs 

确保您可以在内部和外部访问 Kube API 服务器,然后安装 Metallb

您还必须处理 etcd 的 HA,请查看文档以了解不同的选项

https://kubernetes.io/docs/setup/product-environment/tools/kubeadm/high-availability/

https://github.com/kubernetes/kubeadm/blob/master/docs/ha-considerations.md

答案2

我发现了问题,是RHEL8加上nftables和docker,看起来崩溃了。我使用 RHEL7.8 解决了这个问题,它有遗留的 iptables,不是最好的解决方案,但我现在需要它。谢谢!

相关内容