it-swarm.dev

Kubernetes düğümleri nasıl yeniden başlatılır?

Düğümlerin durumu unknown olarak rapor edilir

"conditions": [
          {
            "type": "Ready",
            "status": "Unknown",
            "lastHeartbeatTime": "2015-11-12T06:03:19Z",
            "lastTransitionTime": "2015-11-12T06:04:03Z",
            "reason": "Kubelet stopped posting node status."
          }

kubectl get nodes iken bir NOTReady durumu döndürür. Bunun anlamı nedir ve nasıl düzeltilir?

14
user_mda

Düğümleri al

kubectl get nodes

Sonuç:

NAME            STATUS     AGE
192.168.1.157   NotReady   42d
192.168.1.158   Ready      42d
192.168.1.159   Ready      42d

Düğümü tanımla

İşte 192.168.1.157 düğümündeki bir NotReady . Ardından bu zaten olmayan düğümde hata ayıklama yapın ve resmi belgeleri okuyabilirsiniz - Application Introspection and Debugging .

kubectl describe node 192.168.1.157

Kısmi Sonuç:

Conditions:
Type          Status          LastHeartbeatTime                       LastTransitionTime                      Reason                  Message
----          ------          -----------------                       ------------------                      ------                  -------
OutOfDisk     Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.
Ready         Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.

Düğümde bir OutOfDisk var, sonra Kubelet düğümü durumunu kaydetmeyi durdurdu. Bu yüzden, Ubuntu14.04 'da df komutunu kullanarak disk alanını boşaltmalıyım ve bellek ayrıntılarını kontrol edebiliyorum ve docker rmi image_id/image_name komutunu kullanarak su rolü altında _ işe yaramaz görüntüleri kaldırabilirim.

Düğümde giriş yap

192.168.1.157 içinde ssh , ssh [email protected] gibi oturum açın ve 'su' ya Sudo su ile geçin;

Kubeleti yeniden başlat

/etc/init.d/kubelet restart

Sonuç:

stop: Unknown instance: 
kubelet start/running, process 59261

Düğümleri tekrar al

Master'da:

kubectl get nodes

Sonuç:

NAME            STATUS    AGE
192.168.1.157   Ready     42d
192.168.1.158   Ready     42d
192.168.1.159   Ready     42d

Tamam, bu düğüm iyi çalışıyor.

İşte bir referans: Kubernetes

24
CHENJIAN

Düğümü ana birimden aşağıdakileri vererek silebilirsiniz:

kubectl delete node hostname.company.net

NOTReady durumu muhtemelen ustanın kubelet servisine erişemediği anlamına gelir. İstemcide her şeyin yolunda olup olmadığını kontrol edin.

5
cristi
GET all Nodes

kubectl get nodes

not ready durumu olan düğümü denetle 

sadece bu düğümü silip yeni düğüm oluşturup kümeye katmanız yeterlidir

Kubectl delete node <node name>

Eğer AWS EKS gibi yönetim servislerini kullanıyorsanız, yeni bir node .__ ortaya çıkacaktır. Otomatik olarak da aws konsolunun yeniden başlatma düğümünden (ec2) yeniden başlatabilirsiniz.

0
Harsh Manvar

Ben de bu problemi yaşadım, ancak görünen o ki Kubernet'lerin teklifine ve her şeyin nasıl kurulduğuna bağlı. Azure'da, acs-engine kurulumunu kullanıyorsanız, gerçekten sağlamak üzere çalıştırılmakta olan Shell betiğini bulabilirsiniz:

/opt/Azure/containers/provision.sh

Daha ayrıntılı bir anlayış elde etmek için, sadece onu okuyun ve onun belirttiği komutları çalıştırın. Benim için kök olarak çalışmak zorunda kaldım:

systemctl enable kubectl
systemctl restart kubectl

Etkinliğin gerekli olup olmadığını bilmiyorum ve bunların sizin özel kurulumunuzla çalışıp çalışmayacağını söyleyemem, ancak kesinlikle benim için çalıştı. 

0
Chad

Bir düğüm o kadar sağlıksızsa, ana birim ondan durum alamaz - Kubernetes düğümü yeniden başlatamayabilir olmayabilir. Eğer sağlık kontrolleri işe yaramazsa, SSH ile düğüme erişme umudunuz nedir?

Bu durumda, hard-reboot - veya donanımınız buluttaysa, sağlayıcınızın yapmasına izin vermeniz gerekebilir.

Örneğin, AWS EC2 Panosu, yanıt vermeyen bir düğümü yeniden başlatabileceğiniz/sonlandırabileceğiniz bir "Örnek Durumu" menüsünü almak için bir örneği sağ tıklamanıza olanak tanır.

Bunu yapmadan önce, iyi bir ölçüm için kubectl cordon node öğesini seçebilirsiniz. Ve kubectl delete node öğelerini normale döndürme işleminin önemli bir parçası olarak bulabilirsiniz - eğer düğüm yeniden başlattıktan sonra kümeye otomatik olarak yeniden katılmıyorsa.


Bir düğüm neden yanıt vermiyor? Muhtemelen bazı kaynaklar, Host işletim sisteminin yeni talepleri zamanında yerine getirmesini önleyecek şekilde tükenmiştir. Bu bir disk veya ağ olabilir - ama daha sinsi olan durum Linux zayıf işler olan yetersiz bellek (OOM).

Kubernet'lerin düğüm belleğini güvenli bir şekilde yönetmesine yardımcı olmak için aşağıdakilerin her ikisini de yapmak iyi bir fikirdir:

  • Reserve sistem için bir miktar hafıza.
  • Bölmeleriniz için fırsatçı bellek özelliklerine dikkat etmekten kaçının. Başka bir deyişle, bellek için requests VE limits değerlerinin farklı değerlerine izin vermeyin.

Buradaki fikir, bellekten fazla işlem ile ilişkili komplikasyonlardan kaçınmaktır, çünkü bellek sıkıştırılamaz ve hem de hem Linux hem de Kubernetes’in OOM katilleri, düğüm zaten kurulmadan önce tetiklenmeyebilir. sağlıksız ve ulaşılamaz hale gelir.

0
nobar