kubernetesインストール centos9

<h2>OS centos9 最小パッケージで実施</h2>
<h3>3台構成</h3>
kube1
kube2
kube3

参考URL
https://www.youtube.com/watch?v=UN2IibUnztk


https://www.server-world.info/query?os=CentOS_Stream_9&p=kubernetes&f=1

<h2>インストール前準備</h2>

<h3>hostsに追加</h3>

```
[root@kube1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.190 kube1
192.168.2.191 kube2
192.168.2.192 kube3
```
<h3>swapのOFF</h3>

```
swapoff -a

```

```
vi /etc/fstab

コメントアウトもすること
#/dev/mapper/cs-swap     none                    swap    defaults        0 0
```


<h3>firewalld無効</h3>

```
systemctl disable firewalld
```

<h3>SElinux無効</h3>

```
grubby --update-kernel ALL --args selinux=0
```

<h3>上記を反映するためOS再起動</h3>

```
shutdown -r now
```


<h2>今回の構成</h2>

https://qiita.com/TK_Yudai/items/87c92d579ac04752e557

<h3>br_netfilterの有効化</h3>

```
modprobe br_netfilter
```

```
cat /proc/sys/net/bridge/bridge-nf-call-iptables
1であること
```

<h3>dockerがインストールされている場合は削除する</h3>

```
dockerがインストールされている場合は削除する
```
<h3>yum-utilsインストール</h3>

```
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
```


<h3>repo追加</h3>

```
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

repo の追加: https://download.docker.com/linux/centos/docker-ce.repo
```

<h3>コンテナ関連パッケージインストール</h3>

```
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```

<h3>コンテナランタイムファイル生成</h3>

```
containerd config default | tee /etc/containerd/config.toml
```

https://kubernetes.io/ja/docs/setup/production-environment/container-runtimes/

<h2>systemd cgroupドライバーを構成する</h2> 

```
vi /etc/containerd/config.toml

SystemdCgroup = false
↓
SystemdCgroup = true

```

```
cat /etc/containerd/config.toml | grep "Systemd"
            SystemdCgroup = true
※大文字の「SystemdCgroup」小文字もあるから間違えないで！！
```

<h3>dockerを起動します</h3>

```
systemctl start docker
systemctl enable docker
docker run hello-world
```
<h2>kubernetes.repoを構成します</h2>

<h3>アップデートから「kubelet kubeadm kubectl cri-tools kubernetes-cni」を除外対象とする</h3>

```
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
```

<h3>disableexcludesを利用すればexcludeの設定を無視してアップデートできる。</h3>

```
yum install kubelet kubeadm kubectl --disableexcludes=kubernetes
```

<h3>一番大事なkubeadm init</h3>

```
swapoff -a #本当にこれ大事。これがないだけで失敗するありえない
kubeadm init

kubeadm join 192.168.2.195:6443 --token dwew2y.sz740r3knlcph4bu \
        --discovery-token-ca-cert-hash sha256:d26f235168b36aacdad1020a2b3b15ac2ea3328e25bac961ee7124c6eb75c703

```

<h3>kubeadm以降の作業</h3>

```

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


```

ネットワークは「Calico」を用います。

https://techblog.yahoo.co.jp/infrastructure/kubernetes_calico_networking/
```
yum install wget
wget https://raw.githubusercontent.com/projectcalico/calico/master/manifests/calico.yaml
```

```
kubectl apply -f calico.yaml
```


```
kubectl get nodes


[root@kube1 ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS              RESTARTS   AGE
kube-system   calico-kube-controllers-5f9c988956-7qxp9   0/1     ContainerCreating   0          33s
kube-system   calico-node-8k4tg                          0/1     Running             0          33s
kube-system   coredns-5dd5756b68-mtb6q                   1/1     Running             0          56m
kube-system   coredns-5dd5756b68-xgx6m                   1/1     Running             0          56m
kube-system   etcd-kube1                                 1/1     Running             0          56m
kube-system   kube-apiserver-kube1                       1/1     Running             0          56m
kube-system   kube-controller-manager-kube1              1/1     Running             0          56m
kube-system   kube-proxy-lxcrx                           1/1     Running             0          56m
kube-system   kube-scheduler-kube1                       1/1     Running             0          56m
[root@kube1 ~]#
[root@kube1 ~]#
[root@kube1 ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-5f9c988956-7qxp9   1/1     Running   0          51s
kube-system   calico-node-8k4tg                          1/1     Running   0          51s
kube-system   coredns-5dd5756b68-mtb6q                   1/1     Running   0          56m
kube-system   coredns-5dd5756b68-xgx6m                   1/1     Running   0          56m
kube-system   etcd-kube1                                 1/1     Running   0          56m
kube-system   kube-apiserver-kube1                       1/1     Running   0          56m
kube-system   kube-controller-manager-kube1              1/1     Running   0          56m
kube-system   kube-proxy-lxcrx                           1/1     Running   0          56m
kube-system   kube-scheduler-kube1                       1/1     Running   0          56m
[root@kube1 ~]# kubectl get pods -A
```

<h2>各ノードで以下のコマンドを実行</h2>

```
swapoff -a #本当にこれ大事。これがないだけで失敗するありえない

kubeadm join 192.168.2.190:6443 --token uug8oj.nmuad2ruvkw25plr \
        --discovery-token-ca-cert-hash sha256:895b042063790369cebb6226739588033ed4badb02dea65199dd89367ecbb27e
```

<h2>追加されたことを確認する</h2>


```
root@kube1 ~]# kubectl get nodes
NAME    STATUS     ROLES           AGE   VERSION
kube1   Ready      control-plane   96m   v1.28.15
kube2   Ready      <none>          34s   v1.28.15
kube3   NotReady   <none>          22s   v1.28.15
[root@kube1 ~]#
[root@kube1 ~]#
```



https://www.server-world.info/query?os=CentOS_Stream_9&p=kubernetes&f=5


<h2>NFSの設定をした</h2>

<h3>事前にNFSサーバを立てる</h3>

<h3>node側にもnfs-utilsが必要ですよ！！</h3>

```
[root@node01 ~]# dnf -y install nfs-utils
```


https://www.server-world.info/query?os=CentOS_Stream_9&p=kubernetes&f=10