Kubernetesは、コンピューターアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソースのコンテナーオーケストレーションシステムです。
開始する前に、ソフトウェアが最新であることを確認してください
sudo apt apdate
sudo apt upgrade
インストール
次のパッケージをすべてのマシンにインストールします。
-
kubeadm
:クラスターをブートストラップするコマンド。 -
kubelet
:クラスター内のすべてのマシンで実行され、PODやコンテナーの起動などを行うコンポーネント。 -
kubectl
:クラスターと通信するためのコマンドラインutil。
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
インストールされているバージョンを確認する
kubectl version --client
kubeadm version
出力:
[email protected]:~$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
[email protected]:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:02:08Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
スワップをオフにします。
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
sysctlを構成します。
sudo modprobe overlay
sudo modprobe br_netfilter
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
sudo sysctl --system
ContainerdContainerランタイムのインストール
sudo apt-get install -y containerd
コンテナを構成してサービスを開始する
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
起動時にサービスを開始して開始できるようにする
sudo systemctl enable --now containerd
# check status
sudo systemctl status containerd
サービスが実行されている必要があります
containerd.service - containerd container runtime
Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-04 20:27:51 UTC; 7min ago
Docs: https://containerd.io
Main PID: 8159 (containerd)
Tasks: 12
Memory: 23.3M
CGroup: /system.slice/containerd.service
└─8159 /usr/bin/containerd
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.784407330Z" level=info msg="loading plugin \"io.containerd.grpc>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785605392Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.785639559Z" level=info msg=serving... address=/run/containerd/c>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.787585658Z" level=info msg="containerd successfully booted in 0>
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.801146245Z" level=info msg="Start subscribing containerd event"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.804843058Z" level=info msg="Start recovering state"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805094249Z" level=info msg="Start event monitor"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805193238Z" level=info msg="Start snapshots syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805282655Z" level=info msg="Start cni network conf syncer"
Aug 04 20:27:51 ub-kubeadm containerd[8159]: time="2021-08-04T20:27:51.805369362Z" level=info msg="Start streaming server"
マスターノードを初期化する
kubeletサービスを有効にして開始します。
sudo systemctl enable --now kubelet
必要なコンテナイメージをプルする:
sudo kubeadm config images pull
クラスタエンドポイントのDNS名を設定するか、レコードを/etc/hosts
に追加します ファイル。
192.168.20.7 k8s.citizix.local
クラスターの作成:
sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--control-plane-endpoint=k8s.citizix.local
これが完了すると、k8sが稼働しているはずです。このパスからkubeconfig管理ファイルを取得します/etc/kubernetes/admin.conf
mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/admin.conf
sudo chown ${USER}.${GROUP} ~/.kube/admin.conf
chmod 400 ~/.kube/admin.conf
クラスタステータスを確認します:
kubectl cluster-info
マスターノードの準備ができていることを確認します:
kubectl get nodes -o wide
インストール出力のコマンドを使用して、マスターノードを追加できます:
kubeadm join k8s-cluster.computingforgeeks.com:6443 --token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18 \
--control-plane
ワーカーノードを追加
コントロールプレーンの準備ができたら、スケジュールされたワークロードを実行するためにワーカーノードをクラスターに追加できます。
エンドポイントアドレスがDNSにない場合は、レコードを/ etc/hostsに追加します。
$ sudo vim /etc/hosts
192.168.20.7 k8s.citizix.local
与えられたjoinコマンドは、ワーカーノードをクラスターに追加するために使用されます。
kubeadm join k8s-cluster.computingforgeeks.com:6443 \
--token sr4l2l.2kvot0pfalh5o4ik \
--discovery-token-ca-cert-hash sha256:c692fb047e15883b575bd6710779dc2c5af8073f7cab460abd181fd3ddb29a18
コントロールプレーンで以下のコマンドを実行して、ノードがクラスターに参加したかどうかを確認します。
kubectl get nodes
クラスタにアプリケーションをデプロイする