K8Sファームに.netcore2.2 APIポッドがあります。ヘルスチェックAPIを実装して、k8sの活性をチェックします。これが私の設定です。
livenessProbe:
httpGet:
path: /api/Authentication/CheckLiveness
port: 80
scheme: HTTP
initialDelaySeconds: 100
timeoutSeconds: 60
periodSeconds: 30
successThreshold: 1
failureThreshold: 1
readinessProbe:
httpGet:
path: /api/Authentication/CheckReadiness
port: 80
scheme: HTTP
initialDelaySeconds: 50
timeoutSeconds: 30
periodSeconds: 15
successThreshold: 1
failureThreshold: 1
問題は、ワーカーノード1のポッドを除いて、他のワーカーノードが問題なく動作しているように見えることです。
これがエラーイベントです。
Liveness probe failed: Get
http://10.244.3.218:80/api/Authentication/CheckLiveness:net/http:
request canceled (Client.Timeout exceeded while awaiting headers)
Readiness probe failed: Get
http://10.244.3.218:80/api/Authentication/CheckReadiness: net/http:
request canceled (Client.Timeout exceeded while awaiting headers)
実行することでポッドにカールできます。しかし、ポッドは再起動し続けます。
ノードの問題だと思います。このK8sファームは、centos7osを搭載したVmwareで実行されます。同じインフラストラクチャを使用する開発環境でこの構成を試しました。そしてそれは問題なくすべて緑です。この問題をデバッグまたは解決するための提案が必要です。ありがとうございました。
@mWatney編集
そしてここにあなたの結果
Name: authenservice-dpm-7d468bfcc4-px44m
Namespace: pbtsapi
Priority: 0
Node: ptseclsbtwkn01/192.168.10.136
Start Time: Fri, 12 Jun 2020 11:23:07 +0700
Labels: app=authenservice-api
pod-template-hash=7d468bfcc4
Annotations: <none>
Status: Running
IP: 10.244.3.218
Controlled By: ReplicaSet/authenservice-dpm-7d468bfcc4
Containers:
authenservice:
Container ID: docker://1b1acffeae54421201d1bbc54b8020a75db660e1ae1a0f0d18a56930bbca0d12
Image: 10.99.21.89:5000/authenservice:v1.0.4
Image ID: docker-pullable://10.99.21.89:5000/authenservice@sha256:b9244059195edff3cc3592d3e19a94ac00e481e9936413a4315a3cf41b0023ea
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Fri, 12 Jun 2020 14:46:22 +0700
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Fri, 12 Jun 2020 14:37:52 +0700
Finished: Fri, 12 Jun 2020 14:46:21 +0700
Ready: False
Restart Count: 28
Limits:
cpu: 500m
memory: 400Mi
Requests:
cpu: 250m
memory: 200Mi
Liveness: http-get http://:80/api/Authentication/CheckLiveness delay=300s timeout=60s period=30s #success=1 #failure=1
Readiness: http-get http://:80/api/Authentication/CheckReadiness delay=300s timeout=60s period=30s #success=1 #failure=1
Environment:
MSSQL_PORT: 1433
Mounts:
/app/appsettings.json from authen-v (rw,path="appsettings.json")
/etc/localtime from tz-config (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-h8x2b (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
authen-v:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: authenservice-config
Optional: false
tz-config:
Type: HostPath (bare host directory volume)
Path: /usr/share/zoneinfo/Asia/Bangkok
HostPathType:
default-token-h8x2b:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-h8x2b
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Killing 22m (x26 over 3h23m) kubelet, ptseclsbtwkn01 Container authenservice failed liveness probe, will be restarted
Warning Unhealthy 6m42s (x28 over 3h23m) kubelet, ptseclsbtwkn01 Liveness probe failed: Get http://10.244.3.218:80/api/Authentication/CheckLiveness: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Warning Unhealthy 10s (x22 over 3h8m) kubelet, ptseclsbtwkn01 Readiness probe failed: Get http://10.244.3.218:80/api/Authentication/CheckReadiness: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
仮想マシンが同一になることはありません。同一の仕様で仮想マシンをセットアップできます。これを行うことで、仮想マシンが類似していることを確認できますが、まったく同じように動作するわけではありません。
同じことがサーバーにも起こります。2つの同一の物理サーバーを購入できます。これらのサーバーのパフォーマンスは同じですが、同じになることはありません。
ログには、アプリケーションがテストされた時点ではまだ準備ができていなかったことが明確に示されています。
以下のようzerkmsは言った、あなたは同じredinessと生存性のプローブを持つことはできません。あなたは間違いなくこれをレビューする必要があります。また、準備プローブを確認する必要がありますinitialDelaySeconds
。アプリケーションが起動する時間を増やすために、それを増やしてみてください。
トラブルシューティングするために、suren提案し、あなたのタイムアウトを増やし、私は増加するinitialDelaySeconds
代わりに。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加