Kubeadmはマスターと2つのスレーブKubernetesクラスターを展開します

Kubeadmはマスターと2つのスレーブKubernetesクラスターを展開します

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​

Kubernetes クラスターは、一般的に、1 つのマスターと複数のスレーブ、および複数のマスターと複数のスレーブの 2 つのカテゴリに分けられます

1 つのマスターと複数のスレーブ: 1 つのマスター ノードと複数のノード ノード。構築は簡単ですが、単一のマシンが故障するリスクがあります。テスト環境に適しています。

複数のマスターと複数のスレーブ:複数のマスター ノードと複数のノード ノード。セットアップが難しく、実稼働環境に適しています。

この記事では、kubeadm を使用して、テスト用にマスター 2 スレーブの Kubernetes クラスターをデプロイします。また、ネットワーク プラグインと、単純な nginx サービスのデプロイの例も紹介します。

1. スワップパーティションを無効にする

 スワップオフ- a

スワップ パーティションは仮想メモリ パーティションを指します。その機能は、物理メモリが使い果たされた後に使用できるように、ディスク領域をメモリに仮想化することです。

スワップ デバイスを起動するとシステム パフォーマンスに非常に悪影響を与えるため、ここではスワップ パーティションをオフにします。

 vim / etc / fstab

最後の行をコメントアウトします。

2. dockerをインストールする(3ノード)

1.ミラーソースを切り替える

 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo を実行します。 

2. 以前のイメージソースでサポートされているDockerバージョンを確認する

 yum list docker -ce --showduplicates を実行します

3. 指定されたバージョンの docker をインストールします (–setopt=obsoletes=0 で、指定されたバージョンを使用します)

 yum install --setopt = obsoletes = 0 docker - ce - 18.06.3   ce - 3. el7 - y

4. 設定ファイルを追加する

Docker がデフォルトで使用する Cgroup ドライバーは cgroupfs ですが、Kubernetes では cgroupfs ではなく systemd を使用することが推奨されています。

 /etc/docker ディレクトリに移動します

cat < <EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"レジストリミラー": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
終了

5. Dockerを起動する

 systemctl docker を再起動します
systemctl ドッカーを有効にする

3. Kubernetes コンポーネントをインストールする (3 つのノード)

1. ミラーソースを構成する

 vim /etc/yum.repos.d/kubernetes.repo     
[ Kubernetes ]
名前= Kubernetes
Baseurl = http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
有効= 1
gpgチェック= 0
リポジトリgpgcheck = 0
gpgkey = http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyum.com/kubernetes/yum/doc/rpm-package-key.gpg

2. 指定されたバージョンのkubeadm、kubelet、kubectlをインストールする

 yum install -- setopt = obsoletes = 0 kubeadm - 1.23 .6 - 0 kubelet - 1.23 .6 - 0 kubectl - 1.23 .6 - 0 - y

3. /etc/sysconfig/kubeletの内容を変更し、内部の内容を置き換える

 vim / etc / sysconfig / kubelet
KUBELET_CGROUP_ARGS = "--cgroup-driver=systemd"
KUBE_PROXY_MODE = "ipvs"

4. kubeletを自動的に起動するように設定する

 systemctl kubelet を有効にする

4. クラスターイメージを準備する

このステップは、kubeadm init の 5 番目のステップを準備するためのものです。init はイメージをプルしますが、このイメージは kubernetes ウェアハウスにあります。ネットワーク上の理由により接続できませんので、以下の方法をご利用ください。

 こんにちは シュ

コンテンツを追加します。

 画像= (
kube - apiserver : v1.23.6
kube - コントローラー- マネージャー: v1.23.6
kube - スケジューラ: v1.23.6
kube - プロキシ: v1.23.6
一時停止: 3.6
など: 3.5.1-0
coredns : v1.8.6

$ { images [ @ ]} 内のリストの場合; する
docker pull レジストリcn - 杭州アリユンクスcom / google_containers / $list
docker タグレジストリcn - 杭州アリユンクスcom / google_containers / $list k8sgcrio / $リスト
終わり
docker タグレジストリcn - 杭州アリユンクスcom / google_containers / coredns : v1.8.6k8s gcrio / coredns / coredns : v1.8.6
 シマ シュ

5. クラスタの初期化(マスターノード)

1. マスターノードがクラスターを作成する

 kubeadm 初期化\
--kubernetes - バージョン= v1.23.6 \
-- ポッド- ネットワーク- cidr = 10.0 .0 .0 / 16 \
-- サービス- cidr = 10.0 .0 .0 / 12 \
--apiserver - アドバタイズ- アドレス= 172.20.10.6

最後のいくつかのコマンドを記録します。

初期化に失敗した場合は、次のコマンドを使用して環境をクリーンアップし、再初期化します。

kubeadm リセット

rm -rf $HOME/.kube

systemctl kubelet を再起動します

2. 必要なファイルを作成する

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

6. スタンバイマシンの初期化

kubeadm init の最後にある kubeadm join ステートメントを使用して、スタンバイ マシンを初期化します。 kubeadm join ステートメントを忘れた場合は、次のコマンドを使用して、マスター ノード上の join コマンド パラメータを取得できます。

 kubeadm トークン作成-- 印刷- 参加- コマンド

2 台のスタンバイ マシンで変更ステートメントを実行し、クラスターに参加します。結果は次のとおりです。

ノードのステータスを表示するには、コントロールプレーンで kubectl get nodes を実行するように求められます。つまり、マスターノードで実行します。ノードのステータスが NotReady であることがわかります。これは、ネットワーク プラグインがインストールされていないためです。

 kubectl ノードを取得する

7. ネットワークプラグインをインストールする - calico

Kubernetes は、flannel、calica、canal など、さまざまなネットワーク プラグインをサポートしています。いずれかを選択して使用できます。今回は三毛猫を選びました。

ネットワーク プラグインがインストールされていない場合、CoreDNS はネットワーク プラグインなしでは IP アドレスを割り当てることができないため、ノードは <font color="#dd00dd">NotReady</font> 状態になり、保留状態のままになります。

このプラグインがないと、kubedns は起動できず、ポッドは相互に通信できません。

<font color="#dd00dd">マスターノードでのみ実行する必要があります。プラグインは、各ノードで実行される DaemonSet コントローラーを使用します。 </font><br />。

1. 設定ファイルを取得して適用する

curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O を実行します。

2. サービスの状態を確認すると、すべて実行中である

ノードのステータスを再度確認すると、すべてのノードが <font color=“#dd00dd”>準備完了</font> 状態であることがわかりました。

8. CoreDNSをデプロイする

 git クローンhttps://github.com/coredns/deployment.git
yum - y インストールepel - リリース
yum -y jq をインストールします
cd デプロイメント/ kubernetes /
./deploy .sh -i 10.0 .0 .254 > coredns .yaml
kubectl 適用-f coredns .yaml

コマンドを使用してステータスを確認し、ポッドが ContainerCreating 状態にあることを確認します。

 kubectl ポッドSVC を取得- A

kubectl describe を使用して coredns ポッドを表示し、 coredns イメージがプルされていることを確認します。しばらくお待ちください。

 kubectl はポッドcoredns - 799 bc9dbc6 - m7q4t - n kube - システムを説明します

しばらく待ってからイベントを確認すると、プルがようやく成功したことがわかりました。

pod と svc のステータスを確認します。両方とも実行中です。

 kubectl ポッドSVC を取得- A 

9. kubernetes-dashboardのデプロイ

1. yamlファイルを取得する

 https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml ​ を取得します。

2.ダッシュボードを外部に公開するための設定を追加する

 vim 推奨.yaml

デフォルトではダッシュボードはクラスター内でしかアクセスできないため、サービスを NodePort タイプに変更して外部に公開します。

3. 変更したrecommended.yamlを適用する

 kubectl apply - f 推奨.yaml 

4. kubernetes-dashboardのポッドステータスを確認すると、すべてすでに実行中であることがわかります。

 kubectl get pods - n kubernetes - ダッシュボード

5. ウェブサイトにアクセスする

https://NodeIP:30001。

私のマスターノードのアドレスは 172.20.10.6 なので、https://172.20.10.6:30001 にアクセスしてください。

6. サービス アカウントを作成し、デフォルトの cluster-admin 管理者クラスター ロールにバインドします。

ユーザーを作成します:

 kubectl サービスアカウントダッシュボードを作成- admin - n kube - system

ユーザー認証:

 kubectl クラスターロールバインディングダッシュボード- admin --clusterrole = cluster - admin --serviceaccount = kube - system : ダッシュボード- admin 作成します

ユーザートークンを取得します:

 kubectl はシークレットを記述します- n kube - system $ ( kubectl - n kube - system はシークレットを取得します| awk '/dashboard-admin/{print $1}' ) 

7. 出力トークンを使用してダッシュボードにログインします。

ノード、名前空間など、現在の k8s 関連情報を表示できます。

10. k8sを使ってnginxを簡単にデプロイする

1. yamlに従って名前空間を作成する

 vim nginx - 名前空間.yaml
内容は以下のとおりです
apiVersion : v1 #タイプは名前空間です
kind : 名前空間#Type は名前空間です
メタデータ:
name : ns - テスト#名前空間名
ラベル:
名前: ラベル- テスト#pod ラベル

名前空間を作成します。

 [root@pg01 ~]# kubectl create -f nginx-namespace.yaml
名前空間/ns-test が作成されました

クエリ名前空間:

 [ root @ pg01 ~ ]# kubectl 名前空間を取得する
名前ステータス年齢
デフォルトアクティブ92 m
kube - ノード- リースアクティブ92
kube - パブリックアクティブ92
kube - システムアクティブ92 m
kubernetes - ダッシュボードアクティブ21
ns - テストアクティブ5

2.ポッドを作成する

通常、ポッドは直接作成されず、コントローラーを通じて作成されます。デプロイメントはコントローラーの1つです

nginx イメージをプルします:

 docker プルnginx

ポッドの yaml ファイルを編集します。

 vim nginx - デプロイメント.yaml

内容は以下のとおりです。

 apiバージョン: アプリ/ v1
種類: デプロイメント
メタデータ:
名前空間: ns - テスト
名前: nginx - デプロイメント
仕様:
セレクター:
マッチラベル:
アプリ: nginx
レプリカ2
テンプレート
メタデータ:
ラベル:
アプリ: nginx
仕様:
コンテナ:
- 名前: nginx
画像: nginx : 最新
ポート:
- コンテナポート: 80

作成する:

 kubectl create -f nginx -deployment .yaml

クエリ:

 kubectl ポッドを取得- n ns - テスト
kubectl デプロイメントを取得- n ns - テスト

nginx-deployment によってデプロイされた両方のポッドは成功しました。

nginx に割り当てられた 2 つの IP を確認します。

 kubectl ポッドを取得- o ワイド- n ns - テスト

アクセステスト:

 カールhttp://10.0.181.5 

3. サービスを作成する

対応する yaml ファイルを作成します。

 vim nginx - service.yaml

内容は以下のとおりです。

 APIバージョン: v1
種類: サービス
メタデータ:
名前空間: ns - テスト
名前: nginx - サービス
仕様:
セレクター:
アプリ: nginx
ポート:
- プロトコル: TCP
ポート: 80
ターゲットポート: 80

サービスを作成します。

 kubectl create -f nginx -service .yaml

サービスを見る:

 kubectl get svc nginx - サービス- o ワイド- n ns - tes

アクセステスト:

4. ポートを公開してnginxサービスをデプロイする

nginx-service.yaml ファイルは次のとおりです。

 APIバージョン: v1
種類: サービス
メタデータ:
ラベル:
アプリ: nginx
名前: nginx - サービス
名前空間: ns - テスト
仕様:
ポート:
- ポート: 9000
名前: nginx - サービス
プロトコル: TCP
targetPort : 80 # コンテナ nginx が外部に開くポートは、 上記の dm によって指定されています
nodePort : 31090 #外部ネットワークアクセス用のポート
セレクター:
アプリ: nginx
タイプ: NodePort

サービスをデプロイします。

 kubectl create -f nginx -service .yaml

サービスとポートを確認してください。

 kubectl get svc nginx - サービス- n ns - テスト

テストは次のとおりです。

ブラウザはマスターノードの IP アドレスを使用して k8s の nginx にアクセスします。マスターノードの IP アドレスは 172.20.10.6 なので、http://172.20.10.6:31090/ にアクセスします。結果は以下のようになります。

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​.

<<:  可用性、同時実行性、パフォーマンスに優れたクラウドネイティブ コンテナ ネットワークを構築するにはどうすればよいでしょうか?

>>:  エッジコンピューティング (Edge ML) を 1 つの記事で理解しましょう。

推薦する

locvps: 40% 割引、月額 22 元から、米国/オランダ/ドイツ/オーストラリア、ハイエンド ライン VPS (CN2/CU2)

locvps は現在、ロサンゼルス、オランダ、ドイツ、オーストラリアの USMC の VPS の超低...

ハイブリッドクラウドにおけるDevOpsのベストプラクティス

近年、柔軟性、パフォーマンス、スケーラビリティの向上を目的としたさまざまなツール、テクニック、フレー...

ステーションBがメタバースに参入

メタバースブームの中、新たな有力プレイヤーが登場した。 2017年にメタバースの概念が普及して以来、...

エンタープライズ クラウドが 2019 年の 5 つの主要な技術開発トレンドを紹介します。

2018 年の発展を振り返ると、エンタープライズ クラウドと最新のデータ センターは 2019 年に...

VMware Tanzu®ポートフォリオは、顧客によるクラウドネイティブアプリケーションの構築、実行、管理を支援します。

従来のアプローチでは、今日のビジネスに求められる競争上の優位性と迅速なイノベーションを実現できないた...

Baidu News Sourceが公開した内容について簡単に説明します

みなさんこんにちは、朱衛坤がまた批判しに来ました、気にしないでください!今日共有するトピックはニュー...

ルタオの事業量は急激に減少しており、垂直型電子商取引企業への転換を余儀なくされ、突破口に直面する可能性もある。

中国新聞社10月29日(ITチャンネル五涛)大手電子商取引会社が秋冬物の衣類や靴、帽子などの商品を売...

ウェブサイトの最適化に関連する4つの重要な要素

ウェブサイトの最適化の計画を始める前に、まず簡単に説明しましょう。検索エンジンがウェブサイトに適切な...

年間KVM-256Mメモリ/KVM/年間10ドル/その他の構成

annualkvmはshardhost傘下の新しいブランドです。設立されたばかりで、主に年間払いのK...

クルンはどうですか?共有ポイントロサンゼルス サーバーの評価データは参考用です。

Kurun のコア リソースは、米国のロサンゼルス データ センターにあります。Kurun のロサン...

高級B2CのShangpin.comがベンチャーキャピタル投資の停止により従業員を解雇したと報道

高級品Eコマース企業における人員削減数は増加し続けている。昨日、高級B2CウェブサイトShangpi...

セカンドレベルドメイン名とファーストレベルドメイン名のプロモーションの難しさの比較

2012年2月6日夕方、GoogleのPR値が更新され、ウェブサイトの新しいドメイン名はPR値3を取...

誇張や誹謗中傷は一切なし。2か月以上安定稼働している Pacificrack PR-V シリーズ VPS の真実のレビューです。

Pacificrack は昨年の立ち上げ以来、低価格戦略を採用してきました。結局のところ、それらはす...

ユーザーオペレーション:ユーザーからのフィードバックを得るためのオペレーションスキルとチャネルの確立

専業ライターになる前、私はユーザーオペレーションの仕事をしていました。かつて、あるユーザーがコミュニ...

第3四半期には、インターネットのドメイン名が500万件追加され、世界中のドメイン名の総数は2億4600万件を超えた。

網易科技報、12月26日、海外メディアの報道によると、インターネット情報インフラサービスプロバイダー...