Kubectl не может достичь API для Kubernetes. Развертывание k8s недоступно - PullRequest
1 голос
/ 02 мая 2020

Все команды kubectl (например, kubectl get pods и kubectl proxy et c.) Не работают с ошибкой, сообщающей, что они не могут подключиться к серверу kubernetes api (api.services.ourdomainname.com).

Что могло вызвать это:

Мы пытались добавить еще один узел в кластер для увеличения емкости. Для этого мы выполнили следующие команды ...

$ kops edit ig --name=ppe.services.ourdomainname.com nodes

$ kops upgrade cluster --name ppe.services.ourdomainname.com --yes 

$ kops update cluster ppe.services.ourdomainname.com --yes 

$ kops rolling-update cluster --yes

Проблема произошла после того, как я попытался выполнить обновление. По существу, обновление обновления не удалось при обновлении главного узла.

 WARNING: Deleting pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet: etcd-server-events-ip-xx-xx-60-141.us-west-2.compute.internal, etcd-server-ip-xx-xx-60-141.us-west-2.compute.internal, kube-apiserver-ip-xx-xx-60-141.us-west-2.compute.internal, kube-controller-manager-ip-xx-xx-60-141.us-west-2.compute.internal, kube-proxy-ip-xx-xx-60-141.us-west-2.compute.internal, kube-scheduler-ip-xx-xx-60-141.us-west-2.compute.internal

 pod "dns-controller-xxxx03014-fq2sj" evicted

 pod "masked-tapir-aws-cluster-autoscaler-xxxx6cf8f-fpcqq" evicted

 pod "kubernetes-dashboard-3313488171-t578p" evicted

 node "ip-xx-xx-60-141.us-west-2.compute.internal" drained


 I0501 17:30:23.679575   31176 instancegroups.go:237] Stopping instance "i-024deccc522cc2bf7", node "ip-xxx-xx-60-141.us-west-2.compute.internal", in group "master-us-west-2a.masters.ppe.services.ourdomainname.com". 

 I0501 17:35:24.345270   31176 instancegroups.go:161] Validating the cluster.

 I0501 17:35:54.345805   31176 instancegroups.go:209] Cluster did not validate, will try again in "30s" util duration "5m0s" expires: cannot get nodes for "ppe.services.ourdomainname.com": Get https://api.ppe.services.ourdomainname.com/api/v1/nodes: dial tcp xx.xx.147.151:443: i/o timeout. ... 

 error validating cluster after removing a node: cluster did not validate within a duation of "5m0s"

После этого kubectl перестал работать. Основываясь на некоторых раскопках, мы запустили kops rolling-update cluster --yes --cloudonly. Это удалило старые узлы Ec2 и добавило новые узлы EC2. Но не решил проблемы. И сделал это хуже. Ранее наши приложения могли получать доступ к нашим серверам, но после запуска этой команды теперь даже наши приложения не могут получить доступ к серверам. По сути, он сломал точку входа nginx, и теперь AWS ELB начал возвращать 500, заявляя, что не может подключиться. Из-за этого наши живые сервисы не работают! : - (

Есть мысли о том, что делать, чтобы исправить кластер kubernetes? Есть ли способы узнать, почему недоступен сервер API k8s? Что мы можем сделать, чтобы восстановить это соединение? Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 05 мая 2020

Обмен знаниями о том, что было проблемами и что мы сделали, чтобы из них выйти ...

Похоже, в марте хранилище dockerproject было закрыто, что привело к невозможности запустить сервер api как kubernetes. пытался загрузить определенные зависимости оттуда. Также не было ключа s sh для s sh в этих полях, что делало его более сложным. Также мастер использовал t2.medium, который вызывал проблемы, поскольку у него заканчивались кредиты процессора.

Что мы сделали:

  • обновил кластер после добавления нового ключа s sh в секреты kops, чтобы он связывался с нашими узлами EC2 и мы могли s sh в они.
  • обновили мастер и также узлы для использования m5.large и m5a.large
  • , обновив kubernetes (1.16.8), kubectl (1.18.2), kops (1.16.1) , руль и др. c. использовать более новые или гораздо более новые версии вместо старых вместе с mon go репликами, которые устанавливают зависимости, чтобы быть новыми (3.15.0).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...