Kubernetesは、コンテナ化されたアプリケーションを管理するためのオープンソースプラットフォームです。これにより、コンテナー化されたアプリケーションをクラスター化された環境で管理、スケーリング、および自動的にデプロイできます。 KubernetesはGoogleによって開発されています。
Kubernetesを使用すると、複数のホスト間でコンテナをオーケストレーションし、コンテナ化されたアプリケーションをすべてのリソースでオンザフライでスケーリングし、一元化されたコンテナ管理環境を実現できます。
このチュートリアルでは、Ubuntu18.04にKubernetesをインストールして設定する方法を段階的に説明します。 1台のサーバー「k8s-master」をKubernetesホストマスターとして使用し、2台のサーバーをKubernetesワーカー「worker01」と「worker02」として使用します。
- 3つのUbuntuサーバー
- 10.0.15.10 k8s-master
- 10.0.15.21 worker01
- 10.0.15.22 worker02
- root権限
- Kubeadmのインストール
- ホストのセットアップ
- Dockerをインストールする
- SWAPを無効にする
- Kubeadmパッケージをインストールする
- Kubernetesクラスターの初期化
- Kubernetesクラスターへのワーカーノードの追加
- テスト
この最初のステップでは、Kubernetesをインストールするためにこれら3つのサーバーを準備するため、マスターノードとワーカーノードですべてのコマンドを実行します。
サーバーの既存の構成を変更し、dockerやkubernetes自体を含むいくつかのパッケージをインストールすることで、すべてのサーバーをKubernetesインストール用に準備します。
vimエディタを使用してすべてのサーバーのhostsファイルを編集します。
sudo vim /etc/hosts
以下にホスト構成を貼り付けます。
10.0.15.10 k8s-master 10.0.15.21 worker01 10.0.15.22 worker02
保存して終了します。
次に、すべてのサーバーのホスト名にpingをテストします。
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02
すべてのIPアドレスがホスト名として解決されることを確認してください。
Dockerをインストールする
このチュートリアルでは、UbuntuリポジトリからDockerをインストールします。
以下のaptコマンドを使用してDockerをインストールします。
sudo apt install docker.io -y
インストールが完了したら、Dockerサービスを開始し、システムの起動時に毎回起動できるようにします。
sudo systemctl start docker
sudo systemctl enable docker
Dockerのインストールが完了しました。
Kubernetes Linuxサーバーをセットアップするには、SWAPを無効にする必要があります。
スワップリストを確認して無効にします。
sudo swapon -s
sudo swapoff -a
SWAPを永続的に無効にするには、「/ etc/fstab」ファイルを編集する必要があります。
sudo vim /etc/fstab
SWAPパーティションタイプについてコメントしてください。
#/dev/mapper/hakase--labs--vg-swap_1 none swap sw 0 0
保存して終了し、システムを再起動します。
sudo reboot
Kubeadmパッケージをインストールする
このチュートリアルでは、Kubeadmパッケージを使用してKubernetesクラスターをセットアップします。公式のKubernetesリポジトリからKubeadmパッケージをインストールします。
apt-transport-httpsをインストールします。
sudo apt install -y apt-transport-https
Kubernetesキーを追加します。
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
そして、「/ etc / apt /sources.list.d」ディレクトリに新しいrepo.listファイルを作成して、Kubernetesリポジトリを追加します。
cd /etc/apt/
sudo vim sources.list.d/kubernetes.list
以下にkubernetesリポジトリを貼り付けます。
deb http://apt.kubernetes.io/ kubernetes-xenial main
注:
Kubeadmのインストールには引き続きXenialUbuntu16.04リポジトリを使用しています。
次に、リポジトリを更新し、以下のaptコマンドを使用してkubeadmパッケージをインストールします。
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
kubeadmパッケージがインストールされるのを待ちます。
このステップでは、「k8s-master」ノードでKubernetesを初期化します。この段階のすべてのコマンドは、「k8s-master」サーバーでのみ実行してください。
以下のkubeadmコマンドを使用してKubernetesクラスタを初期化します。
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"
注:
- -apiserver-advertise-address =KubernetesがAPIサーバーをアドバタイズするIPアドレスを決定します。
- -pod-network-cidr =ポッドネットワークのIPアドレスの範囲を指定します。 「フランネル」仮想ネットワークを使用しています。 weave-netやcalicoなどの別のポッドネットワークを使用する場合は、範囲のIPアドレスを変更してください。
Kubernetesの初期化が完了すると、次のような結果が得られます。
' kubeadm join ... ... ...をコピーします 'テキストエディタへのコマンド。このコマンドは、新しいワーカーノードをkubernetesクラスターに登録するために使用されます。
ここで、Kubernetesを使用するには、結果に示すようにいくつかのコマンドを実行する必要があります。
新しい「.kube」構成ディレクトリを作成し、「/ etc/kubernetes」ディレクトリから構成「admin.conf」をコピーします。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
次に、kubectlコマンドを使用してフランネルネットワークをkubernetesクラスターにデプロイします。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
フランネルネットワークがKubernetesクラスターにデプロイされました。
1分待ってから、以下のコマンドを使用してkubernetesノードとポッドを確認してください。
kubectl get nodes
kubectl get pods --all-namespaces
そして、「k8s-master」ノードが「ready」ステータスの「master」クラスターとして実行され、クラスターに必要なすべての「kube-system」ポッドが稼働していることを確認します。
Kubernetesクラスタマスターの初期化と設定が完了しました。
このステップでは、2つのノードワーカー「worker01」と「worker02」をKubernetesクラスターに追加します。
'worker01'サーバーに接続し、クラスターの初期化から取得したkubeadmjoinコマンドを実行します。
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
'worker02'サーバーに接続し、クラスターの初期化から取得したkubeadmjoinコマンドを実行します。
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
数分待ってから「k8s-master」ノードマスターに戻り、ノードのステータスを確認します。
kubectl get nodes
これらのワーカーノード「worker01」と「worker02」はKubernetesクラスターの一部であることがわかります。
このステップでは、クラスター内にNginxWebサーバーをデプロイします。 YAMLテンプレートを使用してNginxWebサーバーをデプロイします。
'nginx'という名前の新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir -p nginx/
cd nginx/
次に、vimエディターを使用してNginxDeploymentYAMLファイル「nginx-deployment.yaml」を作成します。
sudo vim nginx-deployment.yaml
以下に構成を貼り付けます。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.0 ports: - containerPort: 80
保存して終了します。
注:
- 「nginx-deployment」という名前の新しい「Deployment」を作成しています。
- 「3」レプリカを使用してアプリラベルを「nginx」として設定します。
- 「nginx-deployment」には、「nginx:1.14.0」Dockerイメージに基づいて「nginx」という名前のコンテナがあり、デフォルトのHTTPポート80が公開されます。
次に、以下のkubectlコマンドを実行してデプロイメントを作成します。
kubectl create -f nginx-deployment.yaml
新しい「nginx-deployment」を作成したら、クラスター内のデプロイメントリストを確認します。
kubectl get deployments
kubectl describe deployment nginx-deployment
次に、Kubernetesポッドを確認すると、「nginx-deployment-xxx」ポッドが表示されます。ポッドの詳細を確認してください。
kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh
ワーカーノードに3つのレプリカを持つnginx-deploymentポッドを取得します。
次に、「nginx-deployment」用の新しいサービスを作成する必要があります。
'nginx-service.yaml'という名前の新しいYAMLファイルを作成します。
vim nginx-service.yaml
以下の設定を貼り付けてください。
apiVersion: v1 kind: Service metadata: name: nginx-service labels: run: nginx-service spec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
保存して終了します。
注:
- 「nginx-service」という名前の新しいkubernetesサービスを作成しています。
- サービスのタイプは「NodePort」で、TargetPortHTTPのデフォルトポートは80です。
- このサービスは、デプロイ「nginx-deployment」に基づく「nginx」という名前のアプリに属しています。
以下のkubectlコマンドを使用してkubernetesサービスを作成します。
kubectl create -f nginx-service.yaml
クラスタで利用可能なすべてのサービスを確認すると、リストに「nginx-service」が表示され、サービスの詳細を確認できます。
kubectl get service
kubectl describe service nginx-service
そして、「nginx-service」NodePortがポート「32649」で実行されていることがわかります。
すべてのワーカーノードに対してcurlコマンドを使用して確認してください。
ワーカー01について。
curl worker01:32649
Nginxのデフォルトページが表示されます。
worker02について。
curl worker02:32649
Ubuntu18.04でのKubernetesクラスターのインストールと構成が正常に完了しました。