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選

推薦する

CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています

CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...

VMware ESXi 6.0 および仮想マシンのインストール チュートリアルの展開 (画像とテキスト)

社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...

MYSQLでリモートアクセス権限を有効にする方法

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

MySQL データ型の完全分析

データ型: 列に格納できるデータとそのデータが実際にどのように格納されるかを定義する基本ルール。デー...

PHP+nginx サービス 500 502 エラーのトラブルシューティングのアイデアの詳細な説明

概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...

Linux または Windows 環境での pytorch のインストールと検証 (runtimeerror 問題の解決)

1. pytorch公式サイトから対応するインストールファイルをダウンロードします。 https:...

HTML の基礎: HTML コンテンツの詳細

まずは本体から始めましょう:ウェブページを閲覧するとき、最初に目に留まるのは通常、ページの背景です。...

Linux でリモート MySQL データベースを手動で展開する方法の詳細な説明

1. mysql をインストールします。次のコマンドを実行して、YUM ソースを更新します。 rpm...

Nodejs-cluster モジュールの知識ポイントの概要と使用例

面接官から「NodeJS で複数のプロセスを開始する方法を教えてください」と尋ねられることがあります...

Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明

1. 背景インターネット アプリケーションの急速な更新と反復という状況では、従来の手作業や単純なスク...

Nginx Webサーバーのサンプルコードの設定方法の詳細な説明

概要今日は主に、NGINX を Web サーバーとして設定する方法を共有します。内容は次のとおりです...

js キャンバスはスライダー検証を実現します

この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...

PHP クラスにおける static と self の違いの簡単な分析

メソッドが定義されているクラスに応じて、現在のクラスへの静的参照を取得するには、self:: または...

Linux parted ディスク パーティション実装手順の分析

fdisk と比較すると、parted はあまり使用されず、主に 2T を超えるパーティションに使用...

Jmeterはデータベースプロセスダイアグラムに接続します

1. MySQL jdbc ドライバー (mysql-connector-java-5.1.28.j...