もっと詳しく

Ubuntu 22.04(Jammy Jellyfish)にKubernetesクラスターをインストールする方法に関する簡単なガイドをお探しですか?

このページのステップバイステップガイドでは、Kubeadmコマンドを使用してUbuntu22.04にKubernetesクラスターをインストールする方法を段階的に説明します。

Kubernetes は無料のオープンソースコンテナオーケストレーションツールで、k8sとも呼ばれます。 Kubernetesの助けを借りて、コンテナ化されたアプリケーションの自動展開、スケーリング、管理を実現できます。

Kubernetesクラスターは、アプリケーションワークロードがデプロイされるワーカーノードと、クラスター内のワーカーノードとポッドを管理するセットアップマスターノードで構成されます。

このガイドでは、1つのマスターノードと2つのワーカーノードを使用しています。 以下は、各ノードのシステム要件です。

  • Ubuntu22.04の最小インストール
  • 最小2GB以上のRAM
  • 最小2CPUコア/または2vCPU
  • /var以上に20GBの空きディスク容量
  • 管理者権限を持つSudoユーザー
  • 各ノードのインターネット接続

ラボのセットアップ

  • マスターノード:192.168.1.173 – k8smaster.example.net
  • 最初のワーカーノード:192.168.1.174 – k8sworker1.example.net
  • 2番目のワーカーノード:192.168.1.175 – k8sworker2.example.net

遅滞なく、Kubernetesクラスターのインストール手順に飛び込みましょう

ステップ1)ホスト名を設定し、hostsファイルにエントリを追加します

マスターノードにログインし、hostnamectlコマンドを使用してホスト名を設定します。

$ sudo hostnamectl set-hostname "k8smaster.example.net"
$ exec bash

ワーカーノードで、

$ sudo hostnamectl set-hostname "k8sworker1.example.net"   // 1st worker node
$ sudo hostnamectl set-hostname "k8sworker2.example.net"   // 2nd worker node
$ exec bash

各ノードの/etc/hostsファイルに次のエントリを追加します

192.168.1.173   k8smaster.example.net k8smaster
192.168.1.174   k8sworker1.example.net k8sworker1
192.168.1.175   k8sworker2.example.net k8sworker2

ステップ2)スワップを無効にしてカーネル設定を追加する

スワップオフの下で実行し、 sedコマンド スワップを無効にします。 すべてのノードで次のコマンドを実行してください。

$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab

次のカーネルモジュールをすべてのノードにロードします。

$ sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Kubernetesに次のカーネルパラメータを設定し、その下で実行します teeコマンド

$ sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
 
Reload the above changes, run
$ sudo sysctl --system

ステップ3)コンテナ化されたランタイムをインストールする

このガイドでは、Kubernetesクラスターにコンテナー化されたランタイムを使用しています。 したがって、containerdをインストールするには、最初にその依存関係をインストールします。

$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
 
Enable Ddcker repository 
 
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

次に、次のaptコマンドを実行してcontainerdをインストールします

$ sudo apt update
$ sudo apt install -y containerd.io

systemdをcgroupとして使用し始めるようにcontainerdを構成します。

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
$ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

コンテナサービスを再起動して有効にします

$ sudo systemctl restart containerd
$ sudo systemctl enable containerd

ステップ4)Kubernetesのaptリポジトリを追加します

次のコマンドを実行して、Kubernetesのaptリポジトリを追加します

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

ノート: このガイドの執筆時点では、Xenialは最新のKubernetesリポジトリですが、Ubuntu 22.04(Jammy Jellyfish)でリポジトリが利用可能な場合は、「apt-add-repository」コマンドでxenialワードを「jammy」に置き換える必要があります。

ステップ5)KubernetesコンポーネントKubectl、kubeadm、kubeletをインストールします

kubectl、kubelet、KubeadmユーティリティなどのKubernetesコンポーネントをすべてのノードにインストールします。 コマンドで次のセットを実行し、

$ sudo apt update
$ sudo apt install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl

手順5)Kubeadmコマンドを使用してKubernetesクラスターを初期化する

これで、Kubernetesクラスターを初期化する準備が整いました。 次のKubeadmコマンドは、マスターノードからのみ実行してください。

$ sudo kubeadm init --control-plane-endpoint=k8smaster.example.net

上記のコマンドの出力、

上記の出力は、コントロールプレーンが正常に初期化されたことを確認します。 出力では、クラスターと対話するための一連のコマンドと、ワーカーノードがクラスターに参加するためのコマンドも取得しています。

したがって、クラスターとの対話を開始するには、マスターノードから次のコマンドを実行します。

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

次に、次のkubectlコマンドを実行して、クラスターとノードのステータスを表示してみます。

$ kubectl cluster-info
$ kubectl get nodes

出力、

Initial-k8s-cluster-information

両方のワーカーノードをクラスターに参加させます。コマンドは既に出力されています。ワーカーノードにコピーして貼り付けるだけです。

$ sudo kubeadm join k8smaster.example.net:6443 --token vt4ua6.wcma2y8pl4menxh2 
   --discovery-token-ca-cert-hash sha256:0494aa7fc6ced8f8e7b20137ec0c5d2699dc5f8e616656932ff9173c94962a36

両方のワーカーノードからの出力、

Woker1-Join-kubernetes-Cluster

Woker2-Join-kubernetes-Cluster

kubectlコマンドを使用して、マスターノードからノードのステータスを確認します。

$ kubectl get nodes

ノード-ステータス-K8s-Before-CNI

ご覧のとおり、ノードのステータスは’です。準備ができていない‘、それをアクティブにするために。 CNI(Container Network Interface)またはCalico、Flannel、Weave-netなどのネットワークアドオンプラグインをインストールする必要があります。

ステップ6)CalicoPodNetworkアドオンをインストールします

次のcurlおよびkubectlコマンドを実行して、マスターノードからCalicoネットワークプラグインをインストールします。

$ curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
$ kubectl apply -f calico.yaml

上記のコマンドの出力は次のようになります。

Install-Calico-Network-Add-on-k8s

kube-system名前空間のポッドのステータスを確認します。

$ kubectl get pods -n kube-system

出力、

Kube-System-Pods-after-calico-installation

完璧です。ノードのステータスも確認してください。

$ kubectl get nodes

Nodes-Status-after-Calico-Network-Add-on

上記は、ノードがアクティブノードであることを示しています。 これで、Kubernetesクラスターが機能していると言えます。

ステップ7)Kubernetesのインストールをテストする

Kubernetesのインストールをテストするために、nginxベースのアプリケーションをデプロイしてアクセスしてみましょう。

$ kubectl create deployment nginx-app --image=nginx --replicas=2

nginx-appのデプロイのステータスを確認する

$ kubectl get deployment nginx-app
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
nginx-app   2/2     2            2           68s
$

デプロイメントをNodePortとして公開し、

$ kubectl expose deployment nginx-app --type=NodePort --port=80
service/nginx-app exposed
$

次のコマンドを実行して、サービスステータスを表示します

$ kubectl get svc nginx-app
$ kubectl describe svc nginx-app

上記のコマンドの出力、

デプロイメント-サービス-ステータス-k8s

次のコマンドを使用して、nginxベースのアプリケーションにアクセスします。

$ curl http:// :31246

$ curl http://192.168.1.174:31246

出力、

Curl-Command-Access-Nginx-Kubernetes

上記の素晴らしい出力は、nginxベースのアプリケーションにアクセスできることを確認しています。

このガイドは以上です。このガイドがお役に立てば幸いです。 以下のコメントセクションに質問やフィードバックを投稿してください。

また読むUbuntu22.04LTSで静的IPアドレスを構成する方法

The post Ubuntu22.04にKubernetesクラスターをインストールする方法 appeared first on Gamingsym Japan.