Kubernetesテストペンチへの道 その1 Kubeインストール
Contos7.7にKubernetesのインストールを行った。最終ゴールはCSIドライバの検証。その為のテストベンチの構築。
システムの前提:
メモリー 2GB
CPU 2コア。 2コア以上でないとkubeadmの初期化がエラーになるので重要。
但し、その実態はPlayer15.5.1上のゲストOSがESXi6.0の仮想マシーン。ペアレントOSはWindows 10。
ベースとなっているハードウエアはLenovo Minitower V530 (CPU i9-9900、Memory 32GB)
ステップ1:
/etc/hostname/に自分が設定したいhostnameを設定する。というのも、kubeadmで構成されるノード名はこのhostnameを使う為。放っておくとlocalhost.localdomainになってしまう。後から変更しようとすると大変みたい(一回試みたけれども、結局再インストールすることになったので)。
ステップ2:事前準備
Kubernetesではswapを無効化する必要があるようで、まずはそこから。
この状態ではswapは有効化されたまま。swapパーティションが設定されている。
[root@localhost ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 115456 -2
で、swapを無効化する。
[root@localhost ~]# swapoff -a
無効化されてるとswapパーティションの設定はなくなる。
[root@localhost ~]# cat /proc/swaps
Filename Type Size Used Priority
[root@localhost ~]#
恒久的にswapを無効化するにはfstabファイルを編集する。
以下編集前。
[root@localhost ~]# ls /etc/fstab -l
-rw-r--r--. 1 root root 465 8月 9 10:36 /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Aug 9 10:36:36 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=6530e066-08fd-43ef-923e-9d5bd349e51f /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]#
以下、編集後。これで再起動してもswapは無効化されたままになる。
[root@localhost ~]# vi /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Aug 9 10:36:36 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=6530e066-08fd-43ef-923e-9d5bd349e51f /boot xfs defaults 0 0
# /dev/mapper/centos-swap swap swap defaults 0 0 <<-この行をコメントアウトする
[root@localhost ~]#
firewallと止めておく。
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl is-enabled firewalld
disabled
[root@localhost ~]# systemctl stop firewalld
SELinuxの動作を止める。
[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled << このように設定する
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]#
リブートしてもSELinuxがDisableのままであることを確認
[root@localhost ~]# getenforce
Disabled
[root@localhost ~]#
リブートしてもswapが復活しないことも確認。
[root@localhost ~]# cat /proc/swaps
Filename Type Size Used Priority
[root@localhost ~]#
ステップ3:dockerのインストール
[root@localhost ~]# yum install docker
[root@localhost ~]# systemctl start docker
dockerが動いているか確認。
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f8f5f6fe0aa5 bridge bridge local
2a4fafec0ac1 host host local
3b75d12b352c none null local
今回インストールしたバージョンは以下。
[root@localhost ~]# docker -v
Docker version 1.13.1, build 64e9980/1.13.1
bridgeネットワークを確認すると172.17.0.0/16を使っていることが分かるので、念のため自分の環境がこのIPアドレスを使っていないことを確認。
[root@localhost ~]# docker network inspect bridge
前略
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16"
}
]
},
後略
ステップ4: kubeadmのインストール
以下のrepoファイルを作成する。
[root@localhost ~]# vi /etc/yum.repos.d/kubernetes.repo
[root@localhost ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
kubeadmのインストール実行。
[root@localhost ~]# yum install kubeadm
完了しました!
[root@localhost ~]#
kubectlをインストール。けれども不要のようで。。。。
[root@localhost ~]# yum install kubectl
読み込んだプラグイン:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Loading mirror speeds from cached hostfile
* base: mirrors.cat.net
* extras: ftp.yz.yamagata-u.ac.jp
* updates: ftp.yz.yamagata-u.ac.jp
パッケージ kubectl-1.18.6-0.x86_64 はインストール済みか最新バージョンです
何もしません
[root@localhost ~]#
自動スタートするように変更
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]#
[root@localhost ~]# systemctl enable kubelet.service
bridge-nf-call-iptablesを確認。
[root@localhost ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1だったら何もする必要がないが、0だったら以下を実行して1にする。そうしないとkubeadm initがエラーになる。
[root@localhost ~]# echo net.bridge.bridge-nf-call-iptables = 1 > /etc/sysctl.d/tmp-bridge-nf-call-iptables
[root@localhost ~]# sysctl -p /etc/sysctl.d/tmp-bridge-nf-call-iptables
net.bridge.bridge-nf-call-iptables = 1
[root@localhost ~]#
で、確認。
[root@localhost ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
[root@localhost ~]#
[root@localhost ~]#
ここまでがMaster/Worker共有。以降はMasterのみ実行。
ステップ5:kubeadmの初期化
kubeadmの初期化の実行
ここで--pod-network-cidrは重要で、このアドレスレンジでpodにIPが割り当てられる。この設定値はあとでFlannelを設定するときに指定する値と同じにする必要がある。ちなみに10.244.0.0/16はFlannelのDefault値。この値にすればFlannelの設定を変更しなくても済む。
[root@localhost ~]# kubeadm init --apiserver-advertise-address=192.168.1.131 --pod-network-cidr=10.244.0.0/16
省略...
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
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.1.131:6443 --token 2x2256.gnt4vc4k35aj8ay7 \
--discovery-token-ca-cert-hash sha256:105ec7c037a732e7233055bc1aea53dca76fb10e72cfdf122937b58957c1d492
[root@localhost ~]#
Warningメッセージが出ていればちゃんとチェックして必要な対応をすること。WorkerがこのMasterにJoinするには出力の一番最後のkubeadm joinをWorkerで実行すること。
出力されたガイドに従って以下を実行。
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# mkdir -p $HOME/.kube
[root@localhost ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@localhost ~]# chown $(id -u):$(id -g) $HOME/.kube/config
kubectlが動作していることを確認。
[root@localhost ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master NotReady master 8m21s v1.18.6
[root@localhost ~]#
Pod間の通信ネットワークが開通していないので、StatusはNotReadyになっている。
ステップ6:Flannelのインストール
そこでFlannelのインストール。まずはymlファイルの確認。
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@localhost ~]# vi kube-flannel.yml
編集前
net-conf.json: |
{
"Network": "10.244.0.0/16", << ここがkubeadm initの--pod-network-cidr=で左記と違う値に設定した場合はその値を設定する。
"Backend": {
"Type": "vxlan"
}
}
ymlファイルの適用。
[root@localhost ~]# kubectl apply -f kube-flannel.yml
これでMasterノードはReadyになる、
[root@localhost ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 38m v1.18.6
[root@localhost ~]#
以上でMasterノードの設定は完了。
注意の追記:
Master/Workerとも次を実行しておかないと、再起動後にサービスが動かないので要注意。
# systemctl enable kubelet.service
以降はWorkerノードでの作業
Worker NodeをMasterにJoinさせる。
Kubeadm初期時に出力されたコマンドを使う。
# kubeadm join 192.168.1.131:6443 --token 8lscjp.6wdzj6n4w9svlwic --discovery-token-ca-cert-hash sha256:683d2a8ce762c8367f4cfa65b702bae1ef4b3d62623e706ac3042c9ea7cefd18
ただし、kubeadm初期時のtokenの有効期間は24時間なので、それを過ぎると以下を実行して新しいTokenでのコマンドを取り直す必要がある。
# kubeadm token create --print-join-command
正しくJoinできてるか確認。
# kubectl get nodes
以上
« CentOS7 でresolv.confが上書きされる | トップページ | Kubernetesテストベンチへの道 寄り道メモ »
「ソフトウエア導入」カテゴリの記事
- 非Windows11対応PCをWindows11にアップグレードする方法(2023.03.21)
- ThonnyでPicoのVersion upで SSL: CERTIFICATE_VERIFY_FAILED, certificate has expired にハマった件(2022.11.23)
- UI-VIEW32のオリジナルマップの作製(2022.11.22)
- APRS I-Gateの設置(2022.11.15)
- PCIe dual serial port adapterドライバーCH38XDRV.ZIPのWindows11へのインストール(2022.11.13)
« CentOS7 でresolv.confが上書きされる | トップページ | Kubernetesテストベンチへの道 寄り道メモ »
コメント