我正在按照此构建 Kubernetes 集群tutorial https://www.profiq.com/kubernetes-cluster-setup-using-virtual-machines/,并且我无法访问 Kubernetes 仪表板。我已经创建了另一个关于它的问题,你可以看到here https://stackoverflow.com/questions/55596900/kubernetes-access-dashboard-from-remote-browser,但是在深入研究我的集群时,我认为问题可能出在其他地方,这就是我创建一个新问题的原因。
我通过运行以下命令来启动我的 master:
> kubeadm reset
> kubeadm init --apiserver-advertise-address=[MASTER_IP] > file.txt
> tail -2 file.txt > join.sh # I keep this file for later
> kubectl apply -f https://git.io/weave-kube/
> kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-kb2zq 0/1 Pending 0 2m46s
coredns-fb8b8dccf-nnc5n 0/1 Pending 0 2m46s
etcd-kubemaster 1/1 Running 0 93s
kube-apiserver-kubemaster 1/1 Running 0 93s
kube-controller-manager-kubemaster 1/1 Running 0 113s
kube-proxy-lxhvs 1/1 Running 0 2m46s
kube-scheduler-kubemaster 1/1 Running 0 93s
在这里我们可以看到我有两个coredns
Pod 永远停留在 Pending 状态,当我运行命令时:
> kubectl -n kube-system describe pod coredns-fb8b8dccf-kb2zq
我可以在事件部分看到以下警告:
Failed Scheduling : 0/1 nodes are available 1 node(s) had taints that the pod didn't tolerate.
由于它是一个警告而不是错误,并且作为 Kubernetes 新手,taints
对我来说没有多大意义,我尝试将节点连接到主节点(使用之前保存的命令):
> cat join.sh
kubeadm join [MASTER_IP]:6443 --token [TOKEN] \
--discovery-token-ca-cert-hash sha256:[ANOTHER_TOKEN]
> ssh [USER]@[WORKER_IP] 'bash' < join.sh
This node has joined the cluster.
在主服务器上,我检查节点是否已连接:
> kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster NotReady master 13m v1.14.1
kubeslave1 NotReady <none> 31s v1.14.1
我检查我的豆荚:
> kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-kb2zq 0/1 Pending 0 14m
coredns-fb8b8dccf-nnc5n 0/1 Pending 0 14m
etcd-kubemaster 1/1 Running 0 13m
kube-apiserver-kubemaster 1/1 Running 0 13m
kube-controller-manager-kubemaster 1/1 Running 0 13m
kube-proxy-lxhvs 1/1 Running 0 14m
kube-proxy-xllx4 0/1 ContainerCreating 0 2m16s
kube-scheduler-kubemaster 1/1 Running 0 13m
我们可以看到另一个 kube-proxy pod 已被创建,并且停留在 ContainerCreating 状态。
当我再次进行描述时:
kubectl -n kube-system describe pod kube-proxy-xllx4
我可以在事件部分看到多个相同的警告:
Failed create pod sandbox : rpx error: code = Unknown desc = failed pulling image "k8s.gcr.io/pause:3.1": Get https://k8s.gcr.io/v1/_ping: dial tcp: lookup k8s.gcr.io on [::1]:53 read up [::1]43133->[::1]:53: read: connection refused
这是我的存储库:
docker image ls
REPOSITORY TAG
k8s.gcr.io/kube-proxy v1.14.1
k8s.gcr.io/kube-apiserver v1.14.1
k8s.gcr.io/kube-controller-manager v1.14.1
k8s.gcr.io/kube-scheduler v1.14.1
k8s.gcr.io/coredns 1.3.1
k8s.gcr.io/etcd 3.3.10
k8s.gcr.io/pause 3.1
因此,对于仪表板部分,我尝试使用以下命令启动它
> kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
但仪表板窗格卡在待处理状态。
kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-kb2zq 0/1 Pending 0 40m
coredns-fb8b8dccf-nnc5n 0/1 Pending 0 40m
etcd-kubemaster 1/1 Running 0 38m
kube-apiserver-kubemaster 1/1 Running 0 38m
kube-controller-manager-kubemaster 1/1 Running 0 39m
kube-proxy-lxhvs 1/1 Running 0 40m
kube-proxy-xllx4 0/1 ContainerCreating 0 27m
kube-scheduler-kubemaster 1/1 Running 0 38m
kubernetes-dashboard-5f7b999d65-qn8qn 1/1 Pending 0 8s
因此,虽然我的问题最初是我无法访问我的仪表板,但我想真正的问题比这更深层。
我知道我只是在这里放了很多信息,但我是一个 k8s 初学者,我对此完全迷失了。