K8SクラスターのCentOS 7オフライン展開

K8Sはじめに

まず第一に、それはコンテナー技術に基づく分散型アーキテクチャーの真新しい最先端のソリューションです。Kubernetes(k8s)は、Googleのオープンソースコンテナークラスター管理システムです(Googleの内部:Borg)。Dockerテクノロジーに基づいて、デプロイと操作、リソーススケジューリング、サービスディスカバリ、コンテナ化されたアプリケーションの動的スケーリングなどの一連の完全な機能を提供し、大規模なコンテナクラスタ管理の利便性を向上させます。
Kubernetesは完全な分散システムサポートプラットフォームであり、完全なクラスター管理機能、複数の拡張とマルチレベルのセキュリティ保護およびアクセスメカニズム、マルチテナントアプリケーションサポート機能、透過的なサービス登録と検出メカニズム、および組み込みのインテリジェントロードバランサーを備えています、強力な障害検出と自己修復機能、サービスのローリングアップグレードとオンライン拡張機能、スケーラブルな自動リソーススケジューリングメカニズム、および複数の粒度のリソースクォータ管理機能。同時に、Kubernetesは、開発、デプロイテスト、運用、保守のモニタリングを含むすべての側面をカバーする包括的な管理ツールを提供します。

Kubernetesでは、サービスは分散クラスタアーキテクチャのコアです。サービスオブジェクトには次の主要な機能があります。

一意に割り当てられた名前、
仮想IP(クラスターIP、サービスIP、またはVIP)とポート番号
を使用して、特定のリモートサービス機能
を、このサービス機能を提供するコンテナーアプリケーションのセットに統合します。

Kubernetesの利点:

コンテナーオーケストレーションの
軽量
オープンソース
エラスティックスケーリング
ロードバランシング

k8sコンセプト

K8SクラスターのCentOS 7オフライン展開

集まる

クラスターはコンピューティング、ストレージ、ネットワークリソースのコレクションであり、k8sはこれらのリソースを使用して、さまざまなコンテナーベースのアプリケーションを実行します。

主人

マスターはクラスターの頭脳であり、彼の主な責任は、アプリケーションをそこで実行することを決定するスケジューリングです。マスターはLinuxオペレーティングシステムを実行し、物理マシンまたは仮想マシンにすることができます。高可用性を実現するために、複数のマスターを実行できます。

ノード

ノードの責任は、コンテナアプリケーションを実行することです。ノードはマスターによって管理されます。ノードは、コンテナのステータスの監視と報告を担当すると同時に、マスターの要件に従ってコンテナのライフサイクルを管理します。ノードはLinuxオペレーティングシステムで実行され、物理マシンまたは仮想マシンにすることができます。

ポッドはk8sの最小の作業単位です。各ポッドには1つ以上のコンテナが含まれています。ポッド内のコンテナは、ノード全体で実行されるようにマスター全体でスケジュールされます。

K8SクラスターのCentOS 7オフライン展開

コントローラ

K8は通常、ポッドを直接作成しませんが、コントローラーを介してポッドを管理します。コントローラはポッドのデプロイメント特性を定義します。たとえば、いくつかのスクリプトがあり、ポッドで実行されているノードの種類があります。さまざまなビジネスシナリオに対応するために、k8sは、デプロイメント、レプリケーション、デーモンセット、ステートフルセット、ジョブなど、さまざまなコントローラーを提供します。

配備

最も一般的に使用されるコントローラーです。デプロイでは、ポッドの複数のコピーを管理し、ポッドが目的の状態で動作することを確認できます。

レプリカセット

ポッド管理の複数のコピーを実現します。レプリカセットは、デプロイを使用すると自動的に作成されます。つまり、デプロイでは、レプリカセットを介してポッドの複数のコピーを管理します。通常、レプリカセットを直接使用する必要はありません。

デーモンセット

ノードごとに最大1つのポッドのコピーが実行されるシナリオで使用されます。名前が示すように、daemonsetは通常、daemonを実行するために使用されます。

ステートフルセット

ポッドの各コピーがライフサイクル全体で同じ名前を持っていることを確認でき、他のコントローラーはこの機能を提供しません。ポッドに障害が発生し、削除して再起動する必要がある場合、ポッドの名前が変更され、ステートフルセットによって、コピーが確実に開始、更新、または削除されます。

ジョブ

実行の最後に削除されるアプリケーションに使用され、他のコントローラーのポッドは通常、長時間継続して実行されます。

サービス

デプロイでは複数のコピーをデプロイできます。各ポッドには独自のIPがあります。外部からこれらのコピーにどのようにアクセスしますか?
その答えは、サービス
k8sのサービスが、外界が特定のポッドのセットにアクセスする方法を定義することです。サービスには独自のIPとポートがあり、サービスはポッドに負荷分散を提供します。
コンテナーポッドの実行とk8のコンテナーへのアクセスという2つのタスクは、それぞれコントローラーとサービスによって実行されます。

名前空間

物理クラスターは論理的に複数の仮想クラスターに分割でき、各クラスターは名前空間です。異なる名前空間のリソースは完全に分離されています。

Kubernetesアーキテクチャ:

サービスのグループ化、小規模クラスター、マルチクラスター
サービスのグループ化、大規模クラスター、単一クラスター

Kubernetesコンポーネント:

Kubernetesマスター制御コンポーネント、システム全体(クラスター)のスケジュール管理、以下のコンポーネントを含む:

Kubernetes APIサーバー

Kubernetesシステムの入り口として、コアオブジェクトの追加、削除、変更、および検査操作をカプセル化し、RESTful APIインターフェースを備えた外部顧客および内部コンポーネントを提供します。維持されているRESTオブジェクトは、ストレージ用にEtcdに永続化されます。

Kubernetesスケジューラ

クラスターリソースのスケジューリングを担当する、新しく確立されたポッドのノード選択(つまり、マシンの割り当て)。コンポーネントは分離されており、他のスケジューラと簡単に置き換えることができます。
  

ガバナーコントローラー

さまざまなコントローラーの実行を担当し、Kubernetesの正常な動作を保証するために多くのコントローラーが提供されています。

レプリケーションコントローラ

レプリケーションコントローラを管理および維持し、レプリケーションコントローラとポッドを関連付け、レプリケーションコントローラによって定義されたコピーの数が実際のポッドの数と同じであることを確認します。
  

ノードコントローラー

ノードを管理および保守し、ノードのヘルスステータスを定期的に確認し、ノードノードを特定(失敗|失敗していない)します。

名前空間コントローラー

名前空間を管理および保守し、ポッド、サービスなど、Namesapceの下のAPIオブジェクトを含む無効な名前空間を定期的にクリーンアップします。

サービスコントローラー

サービスの管理と維持、負荷とサービスエージェントの提供。

EndPointsコントローラ

エンドポイントの管理と保守、サービスとポッドの関連付け、サービスバックエンドとしてのエンドポイントの作成、ポッドの変更時にリアルタイムでのエンドポイントの更新

サービスアカウントコントローラー

サービスアカウントを管理および維持し、名前空間ごとにデフォルトのサービスアカウントを作成し、同時にサービスアカウントのサービスアカウントシークレットを作成します。

永続ボリュームコントローラー

永続ボリュームと永続ボリュームの要求を管理および維持し、バインドする新しい永続ボリュームの要求に永続ボリュームを割り当て、解放された永続ボリュームのクリーンアップとリカバリを実行します。

デーモンセットコントローラー

デーモンポッドを作成し、指定されたノードでデーモンポッドが正常に動作することを保証するデーモンセットを管理および保守します。

展開コントローラー

Deploymentを管理および維持し、Deployment ControllerとReplication Controllerを関連付け、指定された数のポッドが実行されていることを確認します。Deploymentが更新されると、レプリケーションコントローラとポッドの更新が制御されます。

ジョブコントローラー

ジョブの管理と保守、ジョブのワンタイムタスクポッドの作成、ジョブで指定された数のタスクの完了の確認

ポッドオートスケーラーコントローラー

ポッドの自動スケーリングを実現し、定期的にモニタリングデータを取得し、ポリシーマッチングを実行し、条件が満たされたときにポッドのスケーリングアクションを実行します。

K8Sノード実行ノード、実行管理ビジネスコンテナーには、次のコンポーネントが含まれます。

赤ちゃんです

コンテナーの制御を担当するKubeletは、Kubernetes APIサーバーからポッド作成リクエストを受信し、コンテナーを起動および停止し、コンテナーの実行ステータスを監視し、Kubernetes APIサーバーに報告します。

Kubernetesプロキシ

ポッドのプロキシサービスの作成を担当します。Kubernetesプロキシは、Kubernetes APIサーバーからすべてのサービス情報を取得し、サービス情報に基づいてプロキシサービスを作成して、サービスからポッドへのリクエストのルーティングと転送を実装し、Kubernetesレベルの仮想転送ネットワークを実装します。

Docker

ノードはコンテナサービスを実行する必要があります

環境構成

ホスト名 IPアドレス 役割 構成
主人 192.168.0.110 マスターノード 2C 2G
主人 192.168.0.104 作業ノード 2C 2G
主人 192.168.0.106 作業ノード 2C 2G

備考:実験環境では少なくとも2つのコアと2gの仮想マシン

展開プロセス

1.ソフトウェアパッケージのダウンロードとアップロード

1. Baiduネットワークディスクのダウンロードアドレス

リンク:https
://pan.baidu.com/s/1Qzs8tcf4O-8xlTmnl2Qx5g抽出コード:ah4y

第二に、基本的なサーバー環境の最適化(3つのユニットの同じ操作)

1.防護壁、安全を閉じます

sed -i 's / SELINUX = enforcing / SELINUX = disabled / g' / etc / selinux / config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

2.サーバー時間の同期

timedatectl set-timezone Asia / Shanghai

3.ホスト名を変更します

hostnamectl set-hostname master && bash
hostnamectl set-hostname node01 && bash
hostnamectl set-hostname node02 && bash

4. hostsファイルを追加する

vim / etc / hosts#
末尾にホスト名解決追加
192.168.0.110 master
192.168.0.104 node1
192.168.0.106 node2

他の2つのユニットは、ファイルを追加またはコピーできます。

scp / etc / hosts [email protected]:/ etc / hosts
scp / etc / hosts [email protected]:/ etc / hosts

5.スワップメモリ​​スワップを閉じます

swapoff -a#一時的に閉じる
sed -i '12s / ^ \ //#\ // g' / etc / fstab#完全に閉じる

6.ブリッジ設定

echo -e "net.bridge.bridge-nf-call-ip6tables = 1 \ nnet.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.d/k8s.conf
sysctl --system #make効果的

3番目に、Dockerをデプロイします(3つと同じ操作)

1. Dockerを解凍してインストールします

tar -zxvf docker-ce-18.09.tar.gz
cd docker && yum localinstall * .rpm -y #yumインストール関連の依存関係

2. Dockerを起動します

systemctl start
docker systemctl enable docker#开机启动docker
version

3.ドッカーアクセラレータ

vim /etc/docker/daemon.json#追加

{
"レジストリミラー":[" https://fskvstob.mirror.aliyuncs.com/ "]
}

systemctl daemon-reload #Reload

4番目に、K8sクラスターをデプロイします

同じ操作の3セット

1. k8sを解凍してインストールします

cd ../
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm && yum localinstall * .rpm -y #yum

2. k8s画像をインポートする

cd ../
docker load -i k8s-114-images.tar.gz docker load -i flannel
-dashboard.tar.gz

注:画像のインポート時に次のエラーが発生した場合:
K8SクラスターのCentOS 7オフライン展開

エラーの理由:画像圧縮パッケージのダウンロード中に問題が発生しました解決策:画像を
再ダウンロードまたは置き換える

3. k8s画像を表示

docker images#全部で9枚

K8SクラスターのCentOS 7オフライン展開

マスターでのみ動作

4.マスター初期化

kubeadm init-kubernetes-version = v1.14.1-pod-network-cidr = 10.244.0.0 / 16

K8SクラスターのCentOS 7オフライン展開

5.ノードの表示

kubectl getノード

K8SクラスターのCentOS 7オフライン展開

kubectl get pod --all-namespaces

K8SクラスターのCentOS 7オフライン展開

6. KUBECONFIG変数を設定します

echo "export KUBECONFIG = / etc / kubernetes / admin.conf" >> / etc / profile
source / etc / profile
echo $ KUBECONFIG #should return /etc/kubernetes/admin.conf

K8SクラスターのCentOS 7オフライン展開

7.フランネルネットワークを展開する

kubectl create -f kube-flannel.yml
kubectl get node

K8SクラスターのCentOS 7オフライン展開

ノードnodeでのサーバー操作

8.kubeadm参加参加ノードノード

systemctl enable kubelet #Add boot k8s
kubeadm join 192.168.0.110:6443 --token 2vjmyw.9p6cbn8m8oqs41ta \
--discovery-token-ca-cert-hash sha256:e4c1d3e9da26e2f488dec621122a30d8725762c20bf2815194

K8SクラスターのCentOS 7オフライン展開

9.マスターで見る

kubectl getノード

K8SクラスターのCentOS 7オフライン展開

10. k8s UIインターフェース(ダッシュボード)をデプロイする

kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml
kubectl -n kube-system get svc

11. Webページの検証

K8SクラスターのCentOS 7オフライン展開

参考資料:

1.リファレンス記事https://www.jianshu.com/p/0e1a3412​​528e
2.リファレンスLao Qiのk8sティーチングビデオ
3.リファレンスk8s公式中国語ドキュメントhttps://kubernetes.io/zh/docs/home/

おすすめ

転載: blog.51cto.com/13760351/2488508