【问题标题】:Unable to init kubernetes master无法初始化 kubernetes master
【发布时间】:2018-09-11 10:39:27
【问题描述】:

我正在尝试使用最新的 HypriotOS 在 RaspberryPi 3 上设置 Kubernetes,运行 Docker 17.03 和 Kubeadm/ctl/kubelet 1.9。我通过 WiFi 建立了连接

在我尝试运行kubeadm init --apiserver-advertise-address=...之前一切似乎都很正常

也许知识渊博的人可以确认,但在我看来,它无法拉取 api 容器,然后无法执行 api 调用。

我不确定可能是什么问题,如果有任何帮助,我将不胜感激。

    Apr  2 07:24:19 docker5 kubelet[28562]: E0402 07:24:19.316996   28562 kubelet_node_status.go:375] Unable to update node status: update node status exceeds retry count
    Apr  2 07:24:19 docker5 kubelet[28562]: W0402 07:24:19.341134   28562 status_manager.go:459] Failed to get status for pod "kube-apiserver-docker5_kube-system(0be6a3a13f3b3c604447ca6f55a6c407)": Get https://192.168.0.104:6443/api/v1/namespaces/kube-system/pods/kube-apiserver-docker5: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:19 docker5 kubelet[28562]: W0402 07:24:19.342988   28562 status_manager.go:459] Failed to get status for pod "kube-controller-manager-docker5_kube-system(d92e00dc78c1cb276248a9695158c4c1)": Get https://192.168.0.104:6443/api/v1/namespaces/kube-system/pods/kube-controller-manager-docker5: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:19 docker5 kubelet[28562]: I0402 07:24:19.671521   28562 kuberuntime_manager.go:514] Container {Name:kube-apiserver Image:gcr.io/google_containers/kube-apiserver-arm:v1.9.6 Command:[kube-apiserver --requestheader-username-headers=X-Remote-User --advertise-address=192.168.0.104 --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --secure-port=6443 --insecure-port=0 --allow-privileged=true --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --requestheader-allowed-names=front-proxy-client --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --requestheader-group-headers=X-Remote-Group --service-cluster-ip-range=10.96.0.0/12 --service-account-key-file=/etc/kubernetes/pki/sa.pub --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --enable-bootstrap-token-auth=true --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --client-ca-file=/etc/kubernetes/pki/ca.crt --tls-private-key-file=/etc/kubernetes/pki/apiserver.key --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota --requestheader-extra-headers-prefix=X-Remote-Extra- --authorization-mode=Node,RBAC --etcd-servers=http://127.0.0.1:2379] Args:[] WorkingDir: Ports:[] EnvFrom:[] Env:[] Resources:{Limits:map[] Requests:map[cpu:{i:{value:250 scale:-3} d:{Dec:<nil>} s:250m Format:DecimalSI}]} VolumeMounts:[{Name:k8s-certs ReadOnly:true MountPath:/etc/kubernetes/pki SubPath: MountPropagation:<nil>} {Name:ca-certs ReadOnly:true MountPath:/etc/ssl/certs SubPath: MountPropagation:<nil>}] VolumeDevices:[] LivenessProbe:&Probe{Handler:Handler{Exec:nil,HTTPGet:&HTTPGetAction{Path:/healthz,Port:6443,Host:192.168.0.104,Scheme:HTTPS,HTTPHeaders:[],},TCPSocket:nil,},InitialDelaySeconds:15,TimeoutSeconds:15,PeriodSeconds:10,SuccessThreshold:1,FailureThreshold:8,} ReadinessProbe:nil Lifecycle:nil TerminationMes
    Apr  2 07:24:19 docker5 kubelet[28562]: sagePath:/dev/termination-log TerminationMessagePolicy:File ImagePullPolicy:IfNotPresent SecurityContext:nil Stdin:false StdinOnce:false TTY:false} is dead, but RestartPolicy says that we should restart it.
    Apr  2 07:24:19 docker5 kubelet[28562]: I0402 07:24:19.672072   28562 kuberuntime_manager.go:758] checking backoff for container "kube-apiserver" in pod "kube-apiserver-docker5_kube-system(0be6a3a13f3b3c604447ca6f55a6c407)"
    Apr  2 07:24:19 docker5 kubelet[28562]: I0402 07:24:19.673128   28562 kuberuntime_manager.go:768] Back-off 5m0s restarting failed container=kube-apiserver pod=kube-apiserver-docker5_kube-system(0be6a3a13f3b3c604447ca6f55a6c407)
    Apr  2 07:24:19 docker5 kubelet[28562]: E0402 07:24:19.673390   28562 pod_workers.go:186] Error syncing pod 0be6a3a13f3b3c604447ca6f55a6c407 ("kube-apiserver-docker5_kube-system(0be6a3a13f3b3c604447ca6f55a6c407)"), skipping: failed to "StartContainer" for "kube-apiserver" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=kube-apiserver pod=kube-apiserver-docker5_kube-system(0be6a3a13f3b3c604447ca6f55a6c407)"
    Apr  2 07:24:19 docker5 kubelet[28562]: E0402 07:24:19.945110   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:471: Failed to list *v1.Service: Get https://192.168.0.104:6443/api/v1/services?limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:20 docker5 kubelet[28562]: E0402 07:24:20.007637   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:480: Failed to list *v1.Node: Get https://192.168.0.104:6443/api/v1/nodes?fieldSelector=metadata.name%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:20 docker5 kubelet[28562]: E0402 07:24:20.019886   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://192.168.0.104:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:20 docker5 kubelet[28562]: E0402 07:24:20.947291   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:471: Failed to list *v1.Service: Get https://192.168.0.104:6443/api/v1/services?limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:21 docker5 kubelet[28562]: E0402 07:24:21.009803   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:480: Failed to list *v1.Node: Get https://192.168.0.104:6443/api/v1/nodes?fieldSelector=metadata.name%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:21 docker5 kubelet[28562]: E0402 07:24:21.022165   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://192.168.0.104:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:21 docker5 kubelet[28562]: E0402 07:24:21.951488   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:471: Failed to list *v1.Service: Get https://192.168.0.104:6443/api/v1/services?limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:22 docker5 kubelet[28562]: E0402 07:24:22.012018   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:480: Failed to list *v1.Node: Get https://192.168.0.104:6443/api/v1/nodes?fieldSelector=metadata.name%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused
    Apr  2 07:24:22 docker5 kubelet[28562]: E0402 07:24:22.024773   28562 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://192.168.0.104:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ddocker5&limit=500&resourceVersion=0: dial tcp 192.168.0.104:6443: getsockopt: connection refused

【问题讨论】:

  • 您使用的是Flannel等overlay网络吗?
  • 也许您需要以 root 权限或 sudo 运行 kubeadm init 命令。你能尝试运行sudo kubeadm init --apiserver-advertise-address=...
  • @SureshVishnoi 感谢您抽出宝贵时间查看。我就是这样做的(否则它会抱怨它)。好吧,不是使用 sudo,而是在执行“sudo su -”并以 root 身份完成整个设置之后。
  • @mon 不,虽然我正在考虑尝试这样做,看看它是否有所作为
  • amazon.com/Kubernetes-Running-Dive-Future-Infrastructure/dp/… Appndiex A 有构建 Raspberry Pi Kubernetes 集群部分。它讨论了设置 iptables 以将 eth0 路由到 wlan0,将 cpu 类型从 AMD64 flannel 更改为 ARM 等。可能有用。

标签: kubernetes raspberry-pi3 raspbian hypriot


【解决方案1】:

Kubernetes API server 通过名为 kubernetes 的服务公开。此服务的 endpoints 对应于我们部署的 API 服务器副本。

Kubernetes 节点在初始化过程中指定的 IP 地址上与主 API 服务器通信。在初始化期间,API 服务器在所有接口 (0.0.0.0/0) 上与网络交换。

如果在设置过程中提供了--apiserver-advertise-address,那么只有同一个子网注册的端点才能工作,负载均衡服务可能会停止工作。

您可以考虑查看 /var/log/kube-apiserver.log 并在设置集群初始化期间提供的 --apiserver-advertise-address 后检查配置问题。

最后,kubeadm reset 命令可以提供工作环境,但请记住,您的 pod(以及 API 服务器)将被删除。

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 2020-11-03
    • 2013-06-06
    • 2021-02-11
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多