コンテンツにスキップ

Kubernetes

docs

ヘルスチェック

Kubernetes API health endpoints | Kubernetes

APIエンドポイントとして /readyz/livez が用意されている。

$ curl -k 'https://192.168.0.131:6443/readyz'
ok

K3sだと認証が必要

$ curl -k -H "Authorization: Bearer $TOKEN" 'https://192.168.0.75:6443/livez?verbose'
[+]ping ok
[+]log ok
[+]etcd ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/priority-and-fairness-config-consumer ok
[+]poststarthook/priority-and-fairness-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/start-service-ip-repair-controllers ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/priority-and-fairness-config-producer ok
[+]poststarthook/start-system-namespaces-controller ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-apiserver-identity-lease-controller ok
[+]poststarthook/start-deprecated-kube-apiserver-identity-lease-garbage-collector ok
[+]poststarthook/start-kube-apiserver-identity-lease-garbage-collector ok
[+]poststarthook/start-legacy-token-tracking-controller ok
[+]poststarthook/aggregator-reload-proxy-client-cert ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
[+]poststarthook/apiservice-openapiv3-controller ok
[+]poststarthook/apiservice-discovery-controller ok
livez check passed

tokenはsecretリソースを作成して取得する。
[Kubernetes] ヘルスチェックAPIを試す (bearer token認証付き) - zaki work log

pod

CrashLoopBackOff

describeまたはevent

Failed to pull image "quay.io/ansible/awx-operator:0.16.1-12-g768bc2f": rpc error: code = NotFound desc = failed to pull and unpack image "quay.io/ansible/awx-operator:0.16.1-12-g768bc2f": failed to resolve reference "quay.io/ansible/awx-operator:0.16.1-12-g768bc2f": quay.io/ansible/awx-operator:0.16.1-12-g768bc2f: not found

や、

Error: ImagePullBackOff

の場合は、イメージがリポジトリに無い。指定が合ってるか確認。
podのステータスもErrImagePullになる。


logs

standard_init_linux.go:228: exec user process caused: exec format error

の場合、イメージのアーキテクチャと実行環境のアーキテクチャが合ってない。
イメージはamd64だけど実行環境がarm64など。

service

FQCN (A/AAAAレコード)

podからは<service-name>.<namespace-name>.svc.cluster.localで名前解決できる。

消えないnamespace

kubectl delete ns hogeが応答無くなりstatusがTerminatingのままになった場合の対処。

kubectl get ns hoge -o json > deletens.json

namespace定義の中から、spec.finalizers["kubernetes"]の定義を見つけ、中身を空にする。

    "spec": {
        "finalizers": []
    },

最後に編集したファイルをパラメタに、以下コマンドを実行

kubectl replace --raw "/api/v1/namespaces/hoge/finalize" -f deletens.json 

これで削除できるはず。

namespaceの定義が簡単な場合は以下コマンドでも行ける。

kubectl get ns ${namespace} -o json | grep -v -- '"kubernetes"' | kubectl replace --raw "/api/v1/namespaces/${namespace}/finalize" -f -

kubectl get ns hoge -o json | grep -2 -- '"kubernetes"'を実行して、1か所しかヒットしない場合