Skip to content

필사 모드: Ubuntu 22.04 に Kubernetes をインストールする方法 (kubeadm)

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

Overview

Ubuntu 22.04にKubernetesをインストールする方法を解説します。

サーバーはmasterノード1台、workerノード2台で構成します。

Kubernetesのインストール手順は大きく以下の3つの作業に分けることができます。

1. Container Runtimeのインストール

2. cri-dockerdのインストール

3. kubeadmによるKubernetesのインストール

Container Runtimeとして以下の4つから選択できます。

- [containerd](https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#containerd)

- [CRI-O](https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#cri-o)

- [Docker Engine](https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#docker)

- [Mirantis Container Runtime](https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#mcr)

[コンテナランタイムの詳細を見る](https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/)

Container Runtime (Docker) のインストール

KubernetesのウェブサイトでサポートされているContainer Runtimeの中からDocker Engineを選択しました。

インストール前に、ポートが開いているか確認します。

nc 127.0.0.1 6443

旧バージョンのアンインストール

以下のコマンドで、以前にインストールされている可能性のあるDocker関連ファイルを削除します。

sudo apt-get remove docker docker-engine docker.io containerd runc

リポジトリのセットアップ

sudo apt-get update

sudo apt-get install \

ca-certificates \

curl \

gnupg \

lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \

$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Dockerのインストール

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Dockerインストールの確認

sudo docker run hello-world

以下のようなメッセージが表示されれば、正常にインストールされています。

Hello from Docker!

This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:

1. The Docker client contacted the Docker daemon.

2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

(amd64)

3. The Docker daemon created a new container from that image which runs the

executable that produces the output you are currently reading.

4. The Docker daemon streamed that output to the Docker client, which sent it

to your terminal.

To try something more ambitious, you can run an Ubuntu container with:

$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:

https://hub.docker.com/

For more examples and ideas, visit:

https://docs.docker.com/get-started/

cri-dockerdのインストール

KubernetesのエンジンとしてDockerを使用するには、cri-dockerdアダプターを必ずインストールする必要があります。[cri-dockerd](https://github.com/Mirantis/cri-dockerd)のドキュメントを参照してください。

su -を入力して、以下のコマンドをroot権限で実行します。

git clone https://github.com/Mirantis/cri-dockerd.git

Run these commands as root

###Install GO###

wget https://storage.googleapis.com/golang/getgo/installer_linux

chmod +x ./installer_linux

./installer_linux

source ~/.bash_profile

cd cri-dockerd

mkdir bin

go build -o bin/cri-dockerd

mkdir -p /usr/local/bin

install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd

cp -a packaging/systemd/* /etc/systemd/system

sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service

systemctl daemon-reload

systemctl enable cri-docker.service

systemctl enable --now cri-docker.socket

以下のようなメッセージが表示されれば、正常にインストールされています。

Created symlink /etc/systemd/system/multi-user.target.wants/cri-docker.service → /etc/systemd/system/cri-docker.service.

Created symlink /etc/systemd/system/sockets.target.wants/cri-docker.socket → /etc/systemd/system/cri-docker.socket.

以下のコマンドでkubeadmをインストールします。

sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

sudo apt-get update

sudo apt-get install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

su -でroot権限を取得した後、masterノードで以下のコマンドを実行します。

kubeadm init --cri-socket unix:///var/run/cri-dockerd.sock --pod-network-cidr=10.244.0.0/16

init実行中に以下のようなメッセージが表示された場合、[このブログ](https://redplug.tistory.com/835)を参照してDockerを再起動し、`kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock`コマンドで初期化してから、再度`kubeadm init --cri-socket unix:///var/run/cri-dockerd.sock`を実行します。

he HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error

kubeletはswapがオンになっていると起動できません。そのため、masterとworkerノードで`sudo swapoff -a`コマンドでswapをオフにします。

再起動時にもこの設定を反映するため、`sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab`コマンドで`/etc/fstab`ファイルのswap部分をコメントアウトします。

sudo swapoff -a

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

`kubeadm init`実行時に以下のような文言が表示されれば、正常にインストールされています。

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

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

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 192.168.219.110:6443 --token 0yrk20.i10d95793j5d9z9a \

--discovery-token-ca-cert-hash sha256:b1ff8a6681b2fa13029892xxxxxxxxxxxxxxxxx

以下のコマンドでネットワークアドオンのインストールを行います。様々なアドオンの中でflannelが最も多く使われているようなので、このアドオンを選択しました。

wget https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml

workerノードでjoinを実行します。

kubeadm join 192.168.219.110:6443 --token 0yrk20.i10d95793j5d9z9a \

--discovery-token-ca-cert-hash sha256:b1ff8a6681b2fa13029892xxxxxxxxxxxxxxxxx \

--cri-socket unix:///var/run/cri-dockerd.sock

masterノードでkubectl get nodesを入力すると、以下のようにworkerノードのステータスがReadyであることが確認できます。

$kubectl get nodes

NAME STATUS ROLES AGE VERSION

master Ready control-plane 15m v1.26.0

node1 Ready <none> 32s v1.26.0

node2 Ready <none> 32s v1.26.0

`kubernetes open /run/flannel/subnet.env: no such file or directory`というメッセージとともにPodが作成されずハングする現象がありました。[解決方法](https://www.continualintegration.com/miscellaneous-articles/how-do-you-solve-the-kubernetes-error-networkplugin-cni-failed-to-set-up-pod-network-open-run-flannel-subnet-env-no-such-file-or-directory/)を参照して解決しました。

すべてのworkerノードに`/run/flannel/subnet.env`ファイルを以下の内容で作成します。

FLANNEL_NETWORK=10.244.0.0/16

FLANNEL_SUBNET=10.244.0.1/24

FLANNEL_MTU=1450

FLANNEL_IPMASQ=true

以上で、kubeadmを利用したUbuntuへのKubernetesインストール方法についての記事を終わります。ありがとうございました。

kube-flannel Podが`CrashLoopBackOff`状態の場合、[solution](https://github.com/flannel-io/flannel/issues/1224)を参照して`kubectl patch node ノード名 -p '{"spec":{"podCIDR":"10.244.0.0/16"}}'`を実行します。

kube-flannel kube-flannel-ds-fg8lc 0/1 CrashLoopBackOff

その後に発生した問題は https://potato-yong.tistory.com/150 を参照して解決しました。

metrics-server deploymentに`--kubelet-insecure-tls`の追加およびspec.template.specに`hostNetwork: true`の追加で解決しました。

root@cubi01:~# kubectl top node cubi01

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%

cubi01 234m 5% 8696Mi 55%

root@cubi01:~# kubectl top node cubi02

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%

cubi02 46m 1% 6730Mi 42%

reference

- [https://medium.com/finda-tech/overview-8d169b2a54ff](https://medium.com/finda-tech/overview-8d169b2a54ff)

クイズ

Q1: 「Ubuntu 22.04 に Kubernetes をインストールする方法 (kubeadm)」の主なトピックは何ですか?

kubeadmツールを使用してUbuntu 22.04にKubernetesをインストールする方法を解説します。

以下のコマンドで、以前にインストールされている可能性のあるDocker関連ファイルを削除します。

以下のようなメッセージが表示されれば、正常にインストールされています。

KubernetesのエンジンとしてDockerを使用するには、cri-dockerdアダプターを必ずインストールする必要があります。cri-dockerdのドキュメントを参照してください。

su -を入力して、以下のコマンドをroot権限で実行します。

以下のようなメッセージが表示されれば、正常にインストールされています。

以下のコマンドでkubeadmをインストールします。 su

-でroot権限を取得した後、masterノードで以下のコマンドを実行します。

현재 단락 (1/137)

Ubuntu 22.04にKubernetesをインストールする方法を解説します。

작성 글자: 0원문 글자: 7,448작성 단락: 0/137