2. K8Sの詳しい紹介 - 導入方法

Kubernetes (K8S) は、コンテナー化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するオープン ソースのコンテナー オーケストレーション プラットフォームです。最新のクラウド コンピューティング環境では、K8S はコンテナー化されたアプリケーションを管理およびデプロイするための非常に人気のあるツールになりました。この記事では、シングルノード展開、マルチノード展開、高可用性展開など、K8S の展開方法を詳しく紹介します。

1. 単一ノード展開

単一ノード展開とは、通常はテストまたは開発目的で、1 つのサーバーに K8S をインストールして構成することを指します。単一ノード展開の手順は次のとおりです。

Docker のインストール
K8S はコンテナー ランタイムとして Docker を使用するため、最初に Docker をインストールする必要があります。Docker は次のコマンドでインストールできます。

apt-get update
apt-get install docker.io

K8S コンポーネントのインストール
K8S は、kubelet、kube-proxy、kube-apiserver、kube-scheduler、kube-controller-manager などの複数のコンポーネントで構成されています。K8S コンポーネントは、次のコマンドでインストールできます。

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl kubernetes-cni

K8S の初期化
単一ノード展開では、K8S はマスターおよびノー​​ド ノードとして実行されます。K8S は次のコマンドで初期化できます。

kubeadm init --pod-network-cidr=10.244.0.0/16

その中で、 --pod-network-cidr パラメーターは、K8S クラスター内の Pod の IP アドレス範囲を指定します。

K8S を構成し
て初期化した後、K8S はいくつかの構成ファイルを生成し、K8S は次のコマンドで構成できます。

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

ネットワーク プラグインをインストールする
K8S はネットワーク プラグインを使用して Pod 間のネットワーク通信を管理します。Calico、Flannel、Weave Netなどのネットワークプラグインが利用できます。ここでは、Flannel をネットワーク プラグインとして使用します。

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

アプリケーションのデプロイ
K8S では、アプリケーションは Pod の形で実行されます。Pod は次のコマンドで作成できます。

kubectl run nginx --image=nginx --port=80

公開されたサービス
Pod は、クラスター IP を介してのみアクセスできます。外部から Pod にアクセスする必要がある場合は、サービスを公開する必要があります。サービスは、次のコマンドで公開できます。

kubectl expose pod nginx --type=NodePort --port=80

2. マルチノード展開

マルチノード展開とは、複数のサーバーに K8S をインストールして構成することを指し、より高い可用性とスケーラビリティを実現できます。マルチノード展開の手順は次のとおりです。

Docker のインストールは、
単一ノードへのデプロイと同じです。

K8S コンポーネントのインストールは、
単一ノードへのデプロイと同じです。

K8S の初期化
マルチノード展開では、1 つのサーバーをマスター ノードとして使用し、他のサーバーをノード ノードとして使用する必要があります。K8S は、次のコマンドによってマスター ノードで初期化できます。

kubeadm init --pod-network-cidr=10.244.0.0/16

初期化後、次の情報が表示されます。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join <ip_address>:<port> --token <token> --discovery-token-ca-cert-hash <hash>

その中で、<ip_address> はマスター ノードの IP アドレスとポート番号であり、ノード ノードを K8S クラスターに参加させるために使用される資格情報です。

K8S の構成は、
単一ノードの展開と同じです。

ノード ノードに参加する
Docker と K8S コンポーネントを他のサーバーにインストールし、次のコマンドを使用してノード ノードを K8S クラスターに参加させます。

y
kubeadm join <ip_address>:<port> --token <token> --discovery-token-ca-cert-hash <hash>

その中で、<ip_address> はマスター ノードの IP アドレスとポート番号であり、ノード ノードを K8S クラスターに参加させるために使用される資格情報です。

ネットワーク プラグインのインストールは、
単一ノードへの展開と同じです。

アプリケーションのデプロイは、
単一ノードへのデプロイと同じです。

公開されたサービスは、
単一ノードの展開と同じです。

3. 高可用性展開

高可用性展開とは、複数のサーバーに複数のマスター ノードを展開して、K8S の可用性と耐障害性を向上させることです。高可用性展開の手順は次のとおりです。

Docker のインストールは、
単一ノードへのデプロイと同じです。

K8S コンポーネントのインストールは、
単一ノードへのデプロイと同じです。


高可用性展開でK8S を初期化するには、複数のマスター ノードをインストールする必要があります。次のコマンドを使用して、最初のサーバーで K8S を初期化できます。

kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs --pod-network-cidr=10.244.0.0/16

このうち、LOAD_BALANCER_DNS と LOAD_BALANCER_PORT はロード バランサーの DNS 名とポート番号で、 --upload-certs パラメーターは証明書を etcd にアップロードし、 --pod-network-cidr パラメーターは Pod の IP アドレス範囲を指定します。 K8S クラスター。

初期化後、次の情報が表示されます。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join <ip_address>:<port> --token <token> --discovery-token-ca-cert-hash <hash>

その中で、<ip_address> は最初のマスター ノードの IP アドレスとポート番号であり、他のマスター ノードを K8S クラスターに追加するための資格情報です。

K8S の構成は、
単一ノードの展開と同じです。

他のマスター ノードに参加する
Docker と K8S コンポーネントを他のサーバーにインストールし、次のコマンドを使用して他のマスター ノードを K8S クラスターに参加させます。

kubeadm join LOAD_BALANCER_DNS:LOAD_BALANCER_PORT --token <token> --discovery-token-ca-cert-hash <hash> --control-plane --certificate-key <certificate_key>

このうち、LOAD_BALANCER_DNS と LOAD_BALANCER_PORT はロード バランサーの DNS 名とポート番号であり、他のマスター ノードを K8S クラスターに追加するために使用される資格情報であり、<certificate_key> は証明書がアップロードされたときに生成される証明書キーです。

ネットワーク プラグインのインストールは、
単一ノードへの展開と同じです。

アプリケーションのデプロイは、
単一ノードへのデプロイと同じです。

公開されたサービスは、
単一ノードの展開と同じです。

要約する

K8S は、コンテナー化されたアプリケーションを自動的にデプロイ、スケーリング、および管理できる、非常に強力なコンテナー オーケストレーション プラットフォームです。この記事では、シングルノード展開、マルチノード展開、高可用性展開など、K8S の展開方法を詳しく紹介します。テスト環境でも実稼働環境でも、適切な展開方法を選択することが非常に重要です。

おすすめ

転載: blog.csdn.net/qq_27016363/article/details/130011816