Skip to content

Latest commit

 

History

History
82 lines (78 loc) · 2.44 KB

liveness.md

File metadata and controls

82 lines (78 loc) · 2.44 KB

Health-check yöntemleri başlığı altında kısaca "olsa bazı nedenlerden dolayı -bu nedenler bellek sorunu, cpu kullanımı vb. olabilir- podda çalışan uygulamanız yanıt vermemesi durumunda Liveness Probe belirlediğiniz durumlar kontrolü ışığında podu yeniden başlatır." diye bahsetmiştik. Şimdi bunu hangi configuration ile nasıl yaptığına bakacağız.

Aşağıdaki config örneğinde görüldüğü üzere sağlıklı olup olmadığını kontrol etmek için spec.containers.livenessProbe.httpGet.path yolunda belirtildiği adresin GET isteği sonucunda httpStatus 200 dönmesi beklenir. HttpStatus 200 gelmemesi durumunda hazır olmadığı düşünülür.

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: myApp
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Exec ile yapılabilecek kontrol örneklerinden biri bu şekildedir. Pod düzgün bir şekilde çalışır ve sorun yaşamaz. index.html silerseniz podun restart etmeye başladığını görürsünüz. Sizde uygulamanın doğru çalıştığını doğrulayacak komut ile commandı güncelleyebilirsiniz.

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: myApp
    livenessProbe:
      exec:
        command:
        - cat
        - /usr/share/myApp/html/index.html
      initialDelaySeconds: 5
      periodSeconds: 5

TCP ile kontrolde kubelet sizin uygulamanıza belirtilen port ile bir soket açmaya çalışacaktır. Başarılı bir şekilde bağlantı kurabiliyorsa pod sağlıklı, kuramazsa arızalı kabul edilir.

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-tcp
spec:
  containers:
  - name: liveness
    image: myApp
    ports:
    - containerPort: 8080
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

gRPC örneği de bu şekilde oluşturulabilir. Port olması health-check yöntemleri başlığı altında belirtildiği gibi zorunludur.

apiVersion: v1
kind: Pod
metadata:
  name: etcd-with-grpc
spec:
  containers:
  - name: etcd
    image: myApp
    command: ["/agnhost", "grpc-health-checking"]
    ports:
    - containerPort: 8080
    livenessProbe:
      grpc:
        port: 8080
      initialDelaySeconds: 10