最近、MacでローカルにMinikubeを使用してKubernetesを学び始めました。以前は、Minikube 0.10.0を使用してローカルのKubernetesクラスターを起動し、デプロイを作成してKubernetesダッシュボードを表示することができました。
昨日、クラスターを削除して、すべてを最初からやり直そうとしました。しかし、アセットをデプロイできず、ダッシュボードを表示できません。私が見たところから、コンテナの作成中にすべてが行き詰まったようです。
私が走った後minikube start
、それは報告した
Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.
私が走ったときkubectl get pods --all-namespaces
、それは報告しました(STATUS列に注意してください):
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system kube-addon-manager-minikube 0/1 ContainerCreating 0 51s
docker ps
は何も表示しませんでした:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
minikube status
は、VMおよびクラスターが実行されていることを示しています。
minikubeVM: Running
localkube: Running
デプロイとオートスケーラーを作成しようとすると、正常に作成されたと言われました。
kubectl create -f configs
deployment "hello-minikube" created
horizontalpodautoscaler "hello-minikube-autoscaler" created
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default hello-minikube-661011369-1pgey 0/1 ContainerCreating 0 1m
default hello-minikube-661011369-91iyw 0/1 ContainerCreating 0 1m
kube-system kube-addon-manager-minikube 0/1 ContainerCreating 0 21m
サービスを公開すると、それは言った:
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
$ kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube 10.0.0.32 <nodes> 8080/TCP 6s
kubernetes 10.0.0.1 <none> 443/TCP 22m
サービスにアクセスしようとすると、次のように言われました。
curl $(minikube service hello-minikube --url)
Waiting, endpoint for service is not ready yet...
docker ps
はまだ何も示していません。コンテナを作成するときにすべてが行き詰まったように見えました。私はこの問題を回避するためにいくつかの他の方法を試しました:
それらのどれも私のために働いていません。
Kubernetesはまだ新しいので、知りたいです。
どんな助けでもありがたいです。ありがとう。
私の場合、それはネットワークの問題であることがわかりました。
ポッドのステータスは「ContainerCreating」で、コンテナの作成中に、Dockerイメージが中国ではアクセスできないgcr.ioからプルされます(GFWによってブロックされます)。以前は、たまたまVPNに接続したのでうまくいきました。
minikube
は試しませんでしたが、kubernetes
を使用しています。提供された情報では、問題の原因を特定することは困難です。 minikube
はリソースの作成に問題はありませんが、ContainerCreating
はdocker
デーモン、またはkube-api
とdocker
デーモン間の不適切な通信に関連する問題です。 kubelet
に関する問題。
次のコマンドを試すことができます。
kubectl describe po POD_NAME
これにより、PODのイベントが提供されます。多分これは問題の根本的な原因への道を提供するでしょう。
kubelet
のログを確認してイベントを取得することもできます。
Horizontalpodautoscaler(hpa)を使用するにはheapsterが必要です。そのためには、ミニクベでヒープスターを実行する必要があります。これらの種類の問題は、minikube logs
でいつでもデバッグできます。また、minikube dashboard
にあるダッシュボードを使用してインタラクティブにデバッグできます。
Heapsterとgrafanaを実行する手順は https://github.com/kubernetes/heapster にあります。
Windowsでこの問題が発生しましたが、これはNTLM proxy
。 minikube
VMを削除してから、CNTLM
インストールの正しいプロキシ設定で再作成しました:
minikube start \
--docker-env http_proxy=http://10.0.2.2:3128 \
--docker-env https_proxy=http://10.0.2.2:3128 \
--docker-env no_proxy=localhost,127.0.0.1,::1,192.168.99.100
私にとって、ContainerCreating
問題が発生するまでに数分かかります。次のコマンドを実行した後:
systemctl status kube-controller-manager.service
私はこのエラーを受け取ります:
同期「default/redis-master-2229813293」が失敗してポッドを作成できませんでした:サービスアカウント「default」のAPIトークンが見つかりません。トークンが自動的に作成されてサービスアカウントに追加された後で再試行してください。
これを解決するには2つの方法があります。
KUBE_ADMISSION_CONTROL
のServiceAccount
設定を削除します