この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Google Cloud Platform(GCP)上でロードバランサとして機能するバスティオンホストを持つ3つのマスターノードと4つのワーカーノードを持つKubernetesクラスタの実装について説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のハードウェアに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
Kube-apiserver:
i. Kubernetesコントロールプレーンのフロントエンドとして機能するAPIを提供します。
ii.要求が有効かどうかを判断する外部および内部の要求を処理し、その要求を処理します。
iii.このAPIには、 kubectl
コマンドラインインターフェイスまたは他のツール kubeadm
、およびRESTコールを介して実行されます。
Kube-scheduler:
i.このコンポーネントは、自動化されたワークフローとユーザ定義の条件に従って、特定のノードでポッドをスケジュールします。
Kube-controller-manager:
i. Kubernetesコントローラマネージャは、Kubernetesクラスタの状態を監視および規制する制御ループである。
ii.クラスタの現在の状態とクラスタ内のオブジェクトに関する情報を受信し、クラスタをクラスタオペレータが望む状態に移動するための指示を送信する。
etcd:
i.クラスタの状態と構成に関するデータを含むキー値データベース。
ii. Etcdはフォールトトレラントで、分散されています。
Kubelet:
i.各ノードには、 kubelet
これは、Kubernetesコントロールプレーンと通信できる小規模なアプリケーションです。
ii. kubelet
pod設定で指定されたコンテナが特定のノードで実行され、そのライフサイクルを管理することを保証します。
iii.コントロールプレーンによって指示されたアクションを実行します。
Kube-proxy:
i.すべてのコンピュートノードに kube-proxy
Kubernetesのネットワークサービスを促進するネットワークプロキシです。
ii.クラスタの外部および内部のすべてのネットワーク通信を処理し、オペレーティングシステムのパケットフィルタリング層でトラフィックまたは応答を転送します。
ポッド:
i.ポッドは単一のアプリケーションインスタンスとして機能し、Kubernetesのオブジェクトモデルの最小単位と見なされます。
要塞ホスト:
i.コンピュータは通常、プロキシサーバやロードバランサなどの単一のアプリケーションまたはプロセスをホストし、コンピュータに対する脅威を軽減するために、他のすべてのサービスは削除または制限されます。
cluster:
注:VMをプロビジョニングする前に、GCPでVPCを設定します。GCPのVPCを参照します。
GCPでは、GCPマーケットプレイスからCentos7をプロビジョニングします。
クリック Launch
.
最も近い到達可能性に従ってリージョンを選択します。この実習では、地域をムンバイとして設定します。
機械構成は汎用E2シリーズと機械式である e2-standard-16 (16 vCPU, 64 GB memory)
.
選択 Allow default access
ファイアウォールについては – Allow HTTP traffic
と Allow HTTPS traffic
.
クリック Create
.
同様に、次に示すように8つのノードを作成します。
プライベート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)を構成します。
Bastion Server:
1. HAプロキシをセットアップします。
2.フロントエンドとバックエンドサーバーの構成を追加する haproxy.conf
出力を提供してください。
3. Cisco IOSソフトウェアを haproxy
service .
マスターノードとワーカーノードの一般的な手順:
1. Dockerをインストールして設定します。
2. Kubernetesをインストールして設定する。
マスターノードのみ:
1.新しいKubernetesクラスタを初期化します(kubeadm init
)。
2.インストール Calico
ネットワークプラグイン(特にマスターノード上のコアDNSサービスに使用)
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
Bastionサーバ
ステップ 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サービスは、HAProxyで設定を変更した後、障害状態になります。 haproxy.cfg
.たとえば、
[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:インストール 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 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.
その後、任意の数のワーカーノードに参加し、rootとして各ノードで実行できます。
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:このjoinコマンドを使用して、すべてのワーカーノードをマスターノードに結合します。
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コマンドを使用してクラスタを確認します。
注:クラスタ生成時には、マスターノードからの制御のみが設定されます。拠点ホストは、クラスタ内のすべてのKubeを監視する集中型サーバとして設定されていません。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
14-Dec-2022 |
初版 |