GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu18.04LTSにKubernetesとDockerをインストールして設定する方法

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権限
何をするか
  1. Kubeadmのインストール
    1. ホストのセットアップ
    2. Dockerをインストールする
    3. SWAPを無効にする
    4. Kubeadmパッケージをインストールする
  2. Kubernetesクラスターの初期化
  3. Kubernetesクラスターへのワーカーノードの追加
  4. テスト
ステップ1-Kubeadmのインストール

この最初のステップでは、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パッケージがインストールされるのを待ちます。

ステップ2-Kubernetesクラスターの初期化

このステップでは、「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クラスタマスターの初期化と設定が完了しました。

ステップ3-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クラスターの一部であることがわかります。

ステップ4-テスト

このステップでは、クラスター内に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クラスターのインストールと構成が正常に完了しました。


Ubuntu
  1. Ubuntu18.04にKubernetesをインストールする方法

  2. Ubuntu18.04LTSにAnsibleをインストールして構成する方法

  3. Ubuntu 20.04 LTS に Fail2ban をインストールして構成する方法

  1. Ubuntu18.04にRedisをインストールして構成する方法

  2. Ubuntu 22.04 /20.04LTSにDockerをインストールする方法

  3. Ubuntu 18.04 LTSにKubernetes(k8s)をインストールして設定する方法

  1. Ubuntu18.04LTSにGitLabをインストールして構成する方法

  2. Ubuntu16.04LTSにMongoDBをインストールして構成する方法

  3. Ubuntu18.04LTSにMongoDBをインストールして構成する方法