Centos7 システムに k8s クラスターを展開するための詳細な紹介

Centos7 システムに k8s クラスターを展開するための詳細な紹介

1 バージョンと計画

1.1 バージョン情報:

名前バージョン番号
カーネル3.10.0-1160.el7.x86_64
オペレーティング·システムCentOS Linux リリース 7.9.2009 (コア)
ドッカー20.10.11
kubeadm 1.23.0
クベレット1.23.0
kubectl 1.23.0

1.2 クラスター計画

IPホスト名
192.168.0.114 k8sマスター
192.168.0.115 k8s-ノード01
192.168.0.116 k8s-ノード02

2. 展開

例:

ステップ1からステップ8まで、すべてのノードはマスターノードを操作する必要があります:ステップ9、10ノードノード:ステップ11

1. ファイアウォールをオフにする

シャットダウンするには: systemctl stop firewalld

永久に無効にする: systemctl disable firewalld

2. selinuxをオフにする

オフにするには: setenforce 0

3. スワップをオフにする

一時シャットダウン: swapoff -a

永久に無効にする: sed -ri 's/.*swap.*/#&/' /etc/fstab 、このコマンドを使用してswap行を含むコードをコメントアウトします。

検証: free -m

4. ホスト名とIPの対応を追加する

1.2の計画内容に従って/etc/hostsにマッピング関係を追加します。

192.168.0.114 k8sマスター
192.168.0.115 k8s-ノード01
192.168.0.116 k8s-ノード02

5. ブリッジされたIPV4トラフィックをiptablesチェーンに渡す

次のコマンドを使用して設定を追加します。

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
終了

設定を有効にするには、 sysctl --systemコマンドを実行します。

6. docker をインストールします。

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo を実行します。
yum で docker-ce をインストールします

自動起動を設定する

systemctl ドッカーを起動する
systemctl ドッカーを有効にする

バージョンを確認します: docker version潜在的な落とし穴 (今はここをスキップし、後で戻って修正します):

質問: docker によって使用されるCgroup Driver cgroupfsであるかどうかを確認するには、コマンドdocker info|grep cgroupを使用します。 kubeletと競合する可能性があるため、一貫性のあるsystemdに変更する必要があります。

解決策1: vi /etc/docker/daemon.json実行し、ファイルに次のコードを追加して、Dockerを再起動します。

{
	"exec-opts": ["native.cgroupdriver=systemd"]
}

解決策 2: docker スタートアップ サービスのExecStartを変更し、パラメータ"--exec-opt native.cgroupdriver=systemd"を追加することもできます。

#docker.サービス
: : vi /usr/lib/systemd/system/docker.service を実行します。
# ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd を追加します

7. Alibaba Cloud yumソフトウェアソースを追加する

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[Kubernetes]
名前=Kubernetes
ベースURL=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
有効=1
gpgcheck=1
リポジトリ_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
終了

潜在的な落とし穴(今はここを飛ばして、後で遭遇したら戻ってきてください)

問題: インストールプロセス中に、 xxx.rpm 公鑰尚未安裝というメッセージが表示される場合があります。

解決策1: 公開鍵をインポートした後、再度インストールする

https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg を取得します。
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg を取得します。
rpm --import yum-key.gpg
rpm --import rpm-パッケージキー.gpg

解決策 2: kubernetes.repoファイルでgpgchekc 0 に設定し、チェックしないようにします。

8. kubeadm、kubelet、kubectlをインストールする

インストール: yum install -y kubelet-1.23.0 kubectl-1.23.0 kubeadm-1.23.0

または最新バージョンをインストールします: yum install -y kubelet kubectl kubeadm

自動的に起動するように設定します: systemctl enable kubelet 、ここでは起動時に起動するように設定するだけです。設定がまだ完了していないため、起動する必要はなく、起動は失敗します。

9. マスターノードを初期化する

初期化コマンド

kubeadm 初期化 \
--イメージリポジトリ registry.aliyuncs.com/google_containers \
--kubernetes-バージョン v1.23.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

パラメータの説明

--image-repository stringコントロールプレーンイメージをプルするコンテナレジストリを選択します (デフォルトは「k8s.gcr.io」) ここでは Alibaba Cloud のレジストリを使用します。そうしないと、速度が遅くなったり、失敗したりします。

インストールが失敗した場合は、 kubeadm resetコマンドを使用して環境をクリーンアップしてから再インストールする必要があります。

遭遇した落とし穴:

問題: The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused.解決方法: 詳細については、手順 6 を参照してください。

エラーを報告する

初期化は成功しました。次の結果が表示されたら、初期化は成功したことを意味します。

初期化に成功しました

プロンプトに従って、次のコマンドを実行します。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 最初のコマンド: 隠しフォルダ .kube の作成を示します
# 2番目のコマンド: このフォルダにadmin.confファイルをコピーすることを意味します # 3番目のコマンド: ファイルが属するユーザーとユーザーグループを設定することを意味します

上記のコマンドを実行した後、 kubectlコマンドを使用できます。 The connection to the server localhost:8080 was refused - did you specify the right host or port?

ノードを表示

10. ポッドネットワークプラグイン(CNI)をインストールする

GitHubアドレス: https://github.com/flannel-io/flannel、ファイルを直接ダウンロードすることもできます

フランネル

プラグインをインストールします:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

遭遇した落とし穴

問題: サーバーraw.githubusercontent.comへの接続The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port?解決策: /etc/hostsに raw.githubusercontent.com マッピングを追加します。 IPアドレスはhttps://www.ipaddress.comで確認できます。

ホスト

/etc/ホスト

デプロイメントが成功したかどうかを確認します: kubectl get pods -n kube-system

ここに画像の説明を挿入

ノードを再度確認すると、ステータスが準備完了に変わります

ここに画像の説明を挿入

11. ノードがクラスターに参加する

クラスターに新しいノードを追加するには、マスター ノードでkubeadm initを正常に実行した後、 kubeadm joinコマンドを追加するノードにコピーするだけです。

kubeadm に参加 192.168.0.114:6443 --token whxbm2.x70y9k1feop2604b \
  --ディスカバリートークンCA証明書ハッシュsha256:d4306836b7ef32fd802e559cf717bbbe3af6dd75d3cb2fa4d3db7a16cc25a657

参加に成功したら、マスターノードでkubectl get nodesコマンドを使用して、ノードがクラスターに追加され、ステータスが準備完了になっていることを確認します (ここで少し待ちます)

これで、centos7 システムの k8s クラスターの展開の詳細な紹介に関するこの記事は終了です。より関連性の高い centos7 の k8s クラスターの展開コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS 7 で k8s クラスターをインストールして構成する詳細な手順

<<:  CSSはコーナーカット+ボーダー+投影+コンテンツ背景色のグラデーション効果を実現します

>>:  スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

推薦する

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...

MySql クイック挿入数千万の大規模データの例

データ分析の分野では、データベースは私たちの強力な助けとなります。クエリ時間を受け入れるだけでなく、...

VUE と Canvas を使用して Thunder Fighter タイピング ゲームを実装する方法

今日は、サンダーファイタータイピングゲームを実装します。ゲームプレイは非常に簡単です。それぞれの「敵...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

アニメーションとトランジションの違い

CSS3アニメーションとJSアニメーションの違いJSはフレームアニメーションを実装しますCSS3はト...

docker ストレージを使用して Exit を実行すると、サーバーへのファイルのアップロードが失敗する問題と解決策

1. 問題の説明Docker コンテナにインストールされているストレージが終了状態になっているため、...

Dockerを使用してサーバー上で複数のPHPバージョンを実行する

PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られ...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

Dockerコミットの使い方の詳しい説明

場合によっては、ベースイメージに特定の依存関係をインストールする必要があります。Dockerfile...

CentOS 7.9 の zabbix5.0.14 のインストールと設定プロセス

目次1. 基本的な環境設定2. データベースをインストールする3. zabbix関連コンポーネントを...

Reactのコンテキストとプロパティの説明

目次1. 文脈1. 使用シナリオ2. 使用手順3. 結論2. 小道具の詳細1. 子供の財産2. 小道...

HTML減量 HTMLタグを合理化してWebページを作成する

HTML4 についてHTML (XHTML ではありません)、MIME タイプは text/html...

React における setState の同期または非同期の問題の理解

目次1. setState は同期的ですか?非同期ですか? 2. 非同期的に動作する1. React...

画像にマウスを置いたときにズームイン/ズームアウトするには JS を使用します

マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...