この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Google Cloud Platform(GCP)上でロードバランサとして機能するバスティオンホストを持つ3つのマスターノードと4つのワーカーノードで構成されるKubernetesクラスタの実装について説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のハードウェアに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
拠点ホスト、Kube-Master、Kube-node
Kube-apiserver:
i. Kubernetesコントロールプレーンのフロントエンドとして機能するAPIを提供します。
ii.リクエストが有効かどうかを判断する外部および内部のリクエストを処理し、処理します。
iii. APIには、「kubectl
」コマンドラインインターフェイス(CLI)、またはkubeadm
などの他のツールやRESTコールを使用してアクセスできます。
Kubeスケジューラ:
i.このコンポーネントは、自動化されたワークフローとユーザ定義の条件に従って、特定のノードでポッドをスケジュールします。
Kube-controller-manager:
i. Kubernetesコントローラマネージャは、Kubernetesクラスタの状態を監視および規制する制御ループです。
ii.クラスターの現在の状態とクラスター内のオブジェクトに関する情報を受信し、クラスターをクラスターオペレーターの希望する状態に移動する指示を送信します。
etcd:
i.クラスタの状態と構成に関するデータを含むキー値データベース。
ii. Etcdは耐障害性があり、分散されています。
クベレ:
i.各ノードには、Kubernetesコントロールプレーンと通信できる小さなアプリケーションであるkubelet
が含まれます。
ii. kubelet
は、ポッド設定で指定されたコンテナが特定のノードで実行され、そのライフサイクルを管理することを保証します。
iii.コントロールプレーンによって命令されたアクションを実行します。
Kubeプロキシ:
i.すべてのコンピューティングノードには、Kubernetesのネットワークサービスを促進するネットワークプロキシであるkube-proxy
が含まれます。
ii.クラスタの内外のすべてのネットワーク通信を処理し、オペレーティングシステムのパケットフィルタリング層でトラフィックまたは応答を転送します。
ポッド:
i.ポッドは単一のアプリケーションインスタンスとして機能し、Kubernetesのオブジェクトモデルの最小単位と見なされます。
拠点ホスト:
i.コンピュータは通常、プロキシサーバやロードバランサなどの単一のアプリケーションまたはプロセスをホストし、コンピュータに対する脅威を軽減するために、他のすべてのサービスを削除または制限します。
cluster:
可用性の高いKubernetesクラスタと3つのコントロールプレーン
注:VMをプロビジョニングする前に、GCPでVPCを設定してください。GCPでのVPCを参照してください。
GCPでは、GCPマーケットプレイスからCentos7をプロビジョニングします。
GCP上のCentosマーケットプレイス
をクリックします。Launch
Centos 7仮想マシン
最も近い到達可能性に従ってリージョンを選択します。この実習では、地域はムンバイとして設定されています。
Centos7コンピューティングエンジンの設定
マシン設定は汎用E2シリーズでマシンタイプe2-standard-16 (16 vCPU, 64 GB memory)
です。
Centos 7リソース構成
ファイアウォールにAllow default access
を、ファイアウォールにAllow HTTP traffic
を、Allow HTTPS traffic
を選択します。
Centos 7ネットワーク構成
をクリックします。Create
同様に、次に示すように8つのノードを作成します。
Google Cloud Platformでのマルチマスター導入
プライベートIP
GCPでは、プライベートIPとパブリックIPが自動的に割り当てられます。
master-1 = 10.160.x.9
master-2 = 10.160.x.10
master-3 = 10.160.x.11
worker-1 = 10.160.x.12
worker-2 = 10.160.x.13
worker-3 = 10.160.x.14
worker-4 = 10.160.x.16
bastion = 10.160.x.19
すべてのノード(マスター、ワーカー、ベース):
1. Linuxサーバで必要なファイアウォールポートを開き、セキュリティ設定を行います。
マルチマスター展開のマスターノード:
Kubernetes etcd server client API: 2379/tcp, 2380/tcp
Kubernetes API server: 6443/tcp
注:また、GCPファイアウォールのポートが許可されていることも確認してください。
2. 必要なネットワーク設定(ローカルDNS、ホスト名、NTP)を構成します。
ベースションサーバ:
1. HAプロキシをセットアップします。
2. フhaproxy.conf
ァイルにフロントエンドとバックエンドサーバーの構成を追加します。
3. haproxy
サービスを再起動します。
マスターノードとワーカーノードの共通の手順:
1. Dockerをインストールして設定します。
2. Kubernetesをインストールして設定します。
マスターノードのみ:
1. 新しいKubernetesクラスタを初期化します(kubeadm init
)。
2. ネットワークプラグイン(特にマスターノードのコアDNSサービスに使用)をインストールしますCalico
。
3. このコマンドを使用して、マスター・ノードをマスター・ノードに結合します。
kubeadm join :6443 --token \
--discovery-token-ca-cert-hash \
--control-plane --certificate-key
4. kubectl get nodes
コマンドを使用して、クラスタ情報を検証します。
ワーカーノード上のみ:
1. このコマンドを使用して、ワーカーノードをマスターノードに結合します。
kubeadm join :6443 --token \
--discovery-token-ca-cert-hash
2. 正常に参加したら、次のコマンドkubectl get nodes
を使用してマスターノードのクラスタ情報を検証します。
1. 不明な場合は、次のコマンドでルートパスワードを変更します。
passwd
2. 必要に応じて、このコマンドでホスト名を変更します。
hostnamectl set-hostname
3. ローカルDNSを設定します。
cat > /etc/hosts <
4. 次のコマンドを使用して、NTPサービスの同期を有効にします。
systemctl enable --now chronyd
2. 次のコマンドでステータスを確認します。
systemctl status chronyd
3. このコマンドでNTPソースを確認します。
chronyc sources -v
拠点サーバ
ステップ 1:更新を確認します。
sudo yum check-update
ステップ 2:最新でない更新プログラムをインストールします。
yum update -y
ステップ 3:yumユーティリティをインストールします。
yum -y install yum-utils
ステップ 4:haproxyパッケージをインストールします。
yum install haproxy -y
ステップ 5:/etc/haproxy/haproxy.cfg
のデフォルトの下に、この設定を追加します。
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
手順 6:コンフィギュレーションファイルを次のコマンドのように検証します。vi /etc/haproxy/haproxy.cfg
---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend kubernetes
bind 10.160.x.19:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
frontend http_front
mode http
bind 10.160.x.19:80
default_backend http_back
frontend https_front
mode http
bind 10.160.x.19:443
default_backend https_back
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend http_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
backend https_back
mode http
server master-1 10.160.x.9:6443 check fall 3 rise 2
server master-2 10.160.x.10:6443 check fall 3 rise 2
server master-3 10.160.x.11:6443 check fall 3 rise 2
listen stats
bind 10.160.x.19:8080
mode http
stats enable
stats uri /
手順 7:haproxyのステータスを確認します。
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
発生する可能性のあるエラー
1. haproxy.cfg
で設定を変更した後、HAProxyサービスが障害状態になる。たとえば、
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2022-10-26 08:29:23 UTC; 3min 44s ago
Process: 30951 ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 30951 (code=exited, status=1/FAILURE)
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [WARNING] 298/082923 (30952) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: [ALERT] 298/082923 (30952) : Starting frontend kubernetes: cannot bind socket [10.160.x.19:6443].
Oct 26 08:29:23 k8-loadbalancer haproxy-systemd-wrapper[30951]: haproxy-systemd-wrapper: exit, haproxy RC=1.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service: main process exited, code=exited, status=1/FAILURE.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: Unit haproxy.service entered failed state.
Oct 26 08:29:23 k8-loadbalancer systemd[1]: haproxy.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
解決方法
1. Set the boolean value for haproxy_connect_any to true.
2. Restart the haproxy service.
3. Verify the status.
実行:
[root@k8-loadbalancer vapadala]# setsebool -P haproxy_connect_any=1
[root@k8-loadbalancer vapadala]# systemctl restart haproxy
[root@k8-loadbalancer vapadala]# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-10-26 08:33:17 UTC; 6s ago
Main PID: 30985 (haproxy-systemd)
CGroup: /system.slice/haproxy.service
├─30985 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
├─30986 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
└─30987 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
Oct 26 08:33:17 k8-loadbalancer systemd[1]: Started HAProxy Load Balancer.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /r...pid -Ds.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for frontend 'kube...P mode.
Oct 26 08:33:17 k8-loadbalancer haproxy-systemd-wrapper[30985]: [WARNING] 298/083317 (30986) : config : 'option forwardfor' ignored for backend 'kuber...P mode.
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8-loadbalancer vapadala]#
マスターノードとワーカーノードへのDockerのインストール
ステップ 1:更新を確認します。
sudo yum check-update
ステップ 2:最新でない更新プログラムをインストールします。
yum update -y
ステップ 3:yumユーティリティをインストールします。
yum -y install yum-utils
ステップ 4:Dockerをインストールします。
curl -fsSL https://get.docker.com/ | sh
ステップ 5:Dockerを有効にします。
systemctl enable --now docker
手順 6:Dockerサービスを開始します。
sudo systemctl start docker
手順 7:Dockerステータスを確認します。
sudo systemctl status docker
出力:
[root@kube-master1 vapadala]# sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-10-25 10:44:28 UTC; 40s ago
Docs: https://docs.docker.com
Main PID: 4275 (dockerd)
Tasks: 21
Memory: 35.2M
CGroup: /system.slice/docker.service
└─4275 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128233809Z" level=info msg="scheme \"unix\" not registered, fallback to defaul...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128251910Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:/...dule=grpc.
Oct 25 10:44:26 kube-master1 dockerd[4275]: time="2022-10-25T10:44:26.128260953Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc.
Oct 25 10:44:27 kube-master1 dockerd[4275]: time="2022-10-25T10:44:27.920336293Z" level=info msg="Loading containers: start."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.104357517Z" level=info msg="Default bridge (docker0) is assigned with an IP ad... address".
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.163830549Z" level=info msg="Loading containers: done."
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182833703Z" level=info msg="Docker daemon" commit=03df974 graphdriver(s)=overl...=20.10.20.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.182939545Z" level=info msg="Daemon has completed initialization".
Oct 25 10:44:28 kube-master1 systemd[1]: Started Docker Application Container Engine.
Oct 25 10:44:28 kube-master1 dockerd[4275]: time="2022-10-25T10:44:28.208492147Z" level=info msg="API listen on /var/run/docker.sock".
Hint: Some lines were ellipsized, use -l to show in full.
[root@kube-master1 vapadala]#
Kubernetesのマスターノードとワーカーノードへのインストール
ステップ 1:Kubernetesリポジトリを追加します。
cat <
"gpgcheck = 0" will not verify the authenticity of the package if unsigned. Production environment it is recommended to set "gpgcheck = 1"
ステップ 2:無効化.SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
ステップ 3:install コマンドを使用します。Kubernetes
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
ステップ 4:Enable.Kubelet
sudo systemctl enable --now kubelet
ステップ 5:設定.Pod Network
kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
手順 6:トークン生成:
マスター(コントロールプレーン)およびワーカーノードの出力。
マスターノード
トークン: Kubernetesコントロールプレーンが正常に初期化されました。
クラスタを使用するには、通常のユーザとして次のコマンドを実行します。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
または、ルートユーザの場合は、を実行できます。
export KUBECONFIG=/etc/kubernetes/admin.conf
これで、ポッドネットワークをクラスタに導入できます。
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
このコマンドを実行するコントロールプレーンノードまたはマスターノードをそれぞれでルートとして任意の数だけ結合できます。
詳細については、kubeadm join workflow
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
注:証明書キーはクラスタの機密データへのアクセスを許可します。キーは秘密にしてください。
安全策として、アップロードされた証明書は2時間で削除されます。必要に応じて、証明書を使用できます。
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
その後、任意の数のワーカーノードに参加し、ルートとしてそれぞれで実行できます。
kubeadm join 10.160.0.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
手順 7:コアDNSサービスを確認します。
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-59697b644f-v2f22 1/1 Running 0 32m
kube-system calico-node-gdwr6 1/1 Running 0 5m54s
kube-system calico-node-zszbc 1/1 Running 11 (5m22s ago) 32m
kube-system calico-typha-6944f58589-q9jxf 1/1 Running 0 32m
kube-system coredns-565d847f94-cwgj8 1/1 Running 0 58m
kube-system coredns-565d847f94-tttpq 1/1 Running 0 58m
kube-system etcd-kube-master1 1/1 Running 0 59m
kube-system kube-apiserver-kube-master1 1/1 Running 0 59m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 59m
kube-system kube-proxy-flgvq 1/1 Running 0 5m54s
kube-system kube-proxy-hf5qv 1/1 Running 0 58m
kube-system kube-scheduler-kube-master1 1/1 Running 0 59m
[root@kube-master1 vapadala]#
ステップ 8:マスターノードのステータスを確認します。
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 Ready control-plane 11m v1.25.3
複数のマスターノードを結合するには、この結合コマンドをマスターノード上で実行します。
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0 \
--control-plane --certificate-key 66773b960199ef4530461ef4014e1432066902d4a3dee01669d8622579731701
トークン生成時に発生する可能性のあるエラー
エラーCRI
[root@kube-master1 vapadala]# kubeadm init --control-plane-endpoint "10.160.x.19:6443" --upload-certs
[init] Using Kubernetes version: v1.25.3
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR CRI]: container runtime is not running: output: time="2022-10-25T08:56:42Z" level=fatal msg="unable to determine runtime API version: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\"", error: exit status 1.
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
CRIエラーの解決
ステップ 1:config.tomlファイルを削除し、containerdを再起動します。
rm -rf /etc/containerd/config.toml
systemctl restart containerd
kubeadm init
ステップ 2:containerdのインストール:
次のコマンドを使用して、公式のDockerリポジトリからcontainerd.ioパッケージをインストールします。
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo.
yum install -y containerd.io
ステップ 3:containerdを設定します。
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
ステップ 4:containerdを再起動します。
systemctl restart containerd
エラーFileContent:proc-sys-net-ipv4-ip_forward
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
Error FileContent:proc-sys-net-ipv4-ip_forwardの解決
ip_forwardの値を1に設定します。
echo 1 > /proc/sys/net/ipv4/ip_forward
コアDNSサービスが実行されない
[root@kube-master1 vapadala]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 NotReady control-plane 11m v1.25.3
[root@kube-master1 vapadala]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-cwgj8 0/1 Pending 0 12m
kube-system coredns-565d847f94-tttpq 0/1 Pending 0 12m
kube-system etcd-kube-master1 1/1 Running 0 12m
kube-system kube-apiserver-kube-master1 1/1 Running 0 12m
kube-system kube-controller-manager-kube-master1 1/1 Running 0 12m
kube-system kube-proxy-hf5qv 1/1 Running 0 12m
kube-system kube-scheduler-kube-master1 1/1 Running 0 12m
[root@kube-master1 vapadala]#
解決方法
コアDNSが保留中です。これは、ネットワークに問題があることを示しています。したがって、Calicoをインストールする必要があります。
参考:Calico
次の2つのコマンドを実行します。
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.3/manifests/calico-typha.yaml -o calico.yaml
kubectl apply -f calico.yaml
ワーカーノード
トークンをマスターから取得する場合のWorkerノード上:
ステップ 1:Kubeletサービスを有効にします。
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart kubelet
systemctl enable kubelet.service
ステップ 2:この結合コマンドを使用して、すべてのワーカーノードをマスターノードに結合します。
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
ステップ 3:ファイルまたはポートに関連するエラーが発生した場合は、次のコマンドを使用してkubeadmをリセットします。
kubeadm reset
リセットした後、マスターノードからトークンを入力します。
kubeadm join 10.160.x.19:6443 --token 5fv6ce.h07kyelronuy0mw2 \
--discovery-token-ca-cert-hash sha256:b5509b6fe784561f3435bf6b909dc8877e567c70921b21e35c464eb61d9527d0
最終出力
クラスタが形成されました。kubectl get nodesコマンドを使用してクラスタを確認します。
ハイアベイラビリティkubernetesクラスタ出力
注:クラスタ形成時には、マスターノードからの制御のみが設定されます。拠点ホストは、クラスタ内のすべてのKubeを監視する集中型サーバとして構成されていません。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
14-Dec-2022 |
初版 |