基本的なバージョンと環境情報:
MacBook Pro Apple M2 Max
VMware Fusion Player バージョン 13.0.2 (21581413)
ubuntu-22.04.2-live-server-arm64
k8s-v1.27.3
ドッカー 24.0.2(コンテナー)
イングレス-nginx/コントローラー-v1.8.1
インストールの準備:
公式インストールドキュメント:インストールガイド - Ingress-Nginx コントローラー
インストールプロセス:
ここでは helm メソッドは使用されませんが、インストールには YAML マニフェスト メソッドが使用されます。
ingress-nginx https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml をダウンロードし、名前を ingress-nginx-deploy.ymal に変更します。
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml -O ingress-nginx-deploy.ymal
次の例外が発生します。
--2023-07-06 09:05:24-- https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 0.0.0.0, ::
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443... failed: Connection refused.
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed: Connection refused.
それは科学的なインターネットの利用によって解決できます。
yaml ファイルのダウンロードの問題を解決したら、インストールを開始できます。
kubectl apply -f ingress-nginx-deploy.ymal
インストールログは次のとおりです。
zhangzk@test:~$ kubectl apply -f ingress-nginx-deploy.ymal
名前空間/ingress-nginx が作成されました
サービスアカウント/ingress-nginxが作成されました
serviceaccount/ingress-nginx-admission が作成されました
role.rbac.authorization.k8s.io/ingress-nginx が作成されました
role.rbac.authorization.k8s.io/ingress-nginx-admission が作成されました
clusterrole.rbac.authorization.k8s.io/ingress-nginx が作成されました
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission が作成されました
rolebinding.rbac.authorization.k8s.io/ingress-nginx が作成されました
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission が作成されました
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx が作成されました
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission が作成されました
configmap/ingress-nginx-controller が作成されました
サービス/ingress-nginx-controllerが作成されました
service/ingress-nginx-controller-admission が作成されました
deployment.apps/ingress-nginx-controller が作成されました
job.batch/ingress-nginx-admission-create が作成されました
job.batch/ingress-nginx-admission-patch が作成されました
ingressclass.networking.k8s.io/nginx が作成されました
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission が作成されました
進行状況を確認します。
kubectl get pods -n ingress-nginx
ingress-nginx-XX の POD が ImagePullBackOff および ContainerCreating 状態にあることがわかります。
zhangzk@test:~$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-7lwzr 0/1 ImagePullBackOff 0 33m
ingress-nginx-admission-patch-9ghn2 0/1 ImagePullBackOff 0 33m
ingress-nginx-controller-7fcc694bd4-qgt6l 0/1 ContainerCreating 0 33m
ポッドでエラーが発生したかどうかを確認します。
kubectl describe pod ingress-nginx-admission-create-7lwzr -n ingress-nginx
ログは次のとおりです。
Name: ingress-nginx-admission-create-7lwzr
Namespace: ingress-nginx
Priority: 0
Service Account: ingress-nginx-admission
Node: zzk-2/192.168.19.130
Start Time: Thu, 06 Jul 2023 09:00:51 +0800
Status: Pending
IP: 10.244.2.7
......
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 39m default-scheduler Successfully assigned ingress-nginx/ingress-nginx-admission-create-7lwzr to zzk-2
Normal Pulling 34m (x4 over 39m) kubelet Pulling image "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b"
Warning Failed 33m (x4 over 38m) kubelet Failed to pull image "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b": rpc error: code = DeadlineExceeded desc = failed to pull and unpack image "registry.k8s.io/ingress-nginx/kube-webhook-certgen@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b": failed to resolve reference "registry.k8s.io/ingress-nginx/kube-webhook-certgen@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b": failed to do request: Head "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-prod/images/ingress-nginx/kube-webhook-certgen/manifests/sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b": dial tcp 142.251.8.82:443: i/o timeout
Warning Failed 33m (x4 over 38m) kubelet Error: ErrImagePull
Warning Failed 32m (x7 over 38m) kubelet Error: ImagePullBackOff
Normal BackOff 2m39s (x37 over 38m) kubelet Back-off pulling image "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b"
イメージの取得に失敗したことが判明しました: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b
再び古い問題に戻りますが、壁の問題により registry.k8s.io イメージ ウェアハウスにアクセスできません。
中国でよく知られている k8s イメージには次のものがあります。
レジストリ.lank8s.cn
registry.cn-hangzhou.aliyuncs.com/google_containers
gcr.azk8s.cn (2020 年以降、Azure China IP でのみ使用されます)
Alibaba Cloud のイメージにはコマンド スペースがないため、パスを変更する必要がある場合があります。また、定期的に同期されるため、名前を変更したり、紛失したりする必要がある場合があります。
たとえば、ingress-nginx をインストールする場合、2 つのイメージが関係するため、次のように置き換える必要があります。
registry.k8s.io ミラーアドレス |
Alibaba Cloud ミラーアドレス |
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407 |
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20230407 |
registry.k8s.io/ingress-nginx/controller:v1.8.0 |
registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.8.0 |
Lank8s のイメージはリアルタイムであり、元の名前空間を維持します。プレフィックスを変更するだけで済みます。非常に使いやすいです。これは個人的にサポートされているイメージです。能力がある場合は、さらにスポンサーすることができます。
たとえば、ingress-nginx をインストールする場合、2 つのイメージが関係するため、次のように置き換える必要があります。
registry.k8s.io ミラーアドレス |
LANK8Sミラーアドレス |
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407 |
registry.lank8s.cn/ingress-nginx/kube-webhook-certgen:v20230407 |
registry.k8s.io/ingress-nginx/controller:v1.8.0 |
registry.lank8s.cn/ingress-nginx/controller:v1.8.0 |
lank8s.cn とは何ですか? 「lank8s.cn とは何ですか?」のドキュメントを参照してください。
イメージの法的検証については、以下を参照して署名されたコンテナ イメージを検証できます。
ingress-nginx-deploy.yaml ファイル内のイメージ アドレス registry.k8s.io を registry.lank8s.cn に置き換えてインストールするだけです。
kubectl apply -f ingress-nginx-deploy.ymal
registry.lank8s.cn は信頼性のみを保証し、ダウンロード速度を保証するものではないため、イメージのダウンロードに数分かかる場合があるため、ingress-nginx のコントローラーのステータスを確認するためにも数分待つ必要があります。
zhangzk@test:~$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-2lz4v 0/1 Completed 0 5m46s
ingress-nginx-admission-patch-c6896 0/1 Completed 0 5m46s
ingress-nginx-controller-7575fb546-q29qn 1/1 Running 0 5m46s
この時点で、ingress-nginx-controller は正常に作成されており、イングレス ルールの作成を開始できます。