ubuntuのKVM環境でkubernatesは動作するか
1.概要
lxd環境のkubernates導入が失敗したので、KVM環境にkubernatesを導入して、nodesやpodsの動作確認をしました。kubernates環境を十分に試験するには複数ノードが必要なので、master/worker nodeを揃えた必要最低限の試験環境の構築に関して記述をします。
2.詳細
環境は非uefiのBIOS-PCでAMD(2core)、Memory(8GB)、Disk(500GB)でubnutu-20.04.4 Desktop環境です。kubernatesのnodes用の仮想マシンはubuntu-20.04.4 serverを利用して3台構築(2 core, 2GB Memory, 20GB Disk)しました。1台がMaster node、2台がworker nodeです。ベースのPC環境の制限で試験できる限界構成に近いと思っています。
(1) 導入作業
作業手順は多く、下記項目の通りです。
参考利用に沿って作業しますが、Porxyサーバを必要としないので省略箇所があります。
(a) KVM環境構築
(b) ubuntu-20.04.4 serverの導入
(c) master node, worker nodeの共通機能の導入
(d) 仮想マシンのクローン
(e) master nodeの構築
(f) worker nodeの接続
(g) master nodeの追加設定
(h) node podの試験
(2) 詳細
(a) KVM環境構築
$ sudo apt install virt-manager qemu-system
本ブログのWindows95/98のPCゲーム(2022/04/16)を参照願います。
(b) ubuntu-20.04.4 serverの導入
・download
下記urlからubuntu-20.04.4-live-server-amd64.isoをdownloadします。
http://cdimage.ubuntu.com/releases/20.04/release/
・仮想マシン導入
KVM仮想マシンを作成します。kubernates環境は2core必須のようです。
host namae: ubuntu201
CPU: 2 core
Memory: 2048 MB
Disk: 20 GB
残りは既定値です
ubuntu-20.04 serverの導入手順は参考資料を参照願います。
disk 20GBはGPT設定で、1MBのBIOS grup領域と残りは/に設定しました。
openSSH serverは作業上便利なので導入します
・ip変更
インストール完了後、仮想マシンのip-addressを変更します。
標準のDHCP経由での取得のままですが、macアドレスとipを関連付けします。
参考資料を参照願います。
まず、仮想マシンの現在の状況を確認します。
仮想マシンのterminalでip aにて確認します
仮想マシンを停止して作業を実施します。
次に、ubuntu-20.04のdesktopから設定を変更します。
$ sudo virsh net-edit default
参考資料に記載されていますが、私は以下の記述を追加しました。
<host mac='52:54:00:xx:xx:xx' ip='192.168.122.10'/>
xx:xx:xxは仮想マシンのmac-address、192.168.122.0/24からipを選定します
設定完了後、ubuntu-20.04 desktopを再起動します。
・update
ubuntu-20.04 desktop起動後、再度、仮想マシンを起動して更新処理をします
desktop PCから仮想マシンにssh loginします
$ ssh username@192.168.122.10
$ sudo apt update
$ sudo apt upgrade
(c) master node, worker nodeの共通機能の導入
・kubernates共通機能導入
$ sudo apt -y install apt-transport-https
$ 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"
$ sudo apt update
$ sudo apt -y install kubelet kubeadm kubectl
$ kubelet --version
・swapの削除
$ sudo swapoff -a
$ cp /etc/fstab fstab
$ sed -i -e '10 s/^/#/' fstab
$ sudo mv fstab /etc/fstab
$ sudo rm /swap.img
・仮想マシンのshutdown
$ sudo shutdown -h 0
(d) 仮想マシンのクローン
作成した仮想マシンをworker node用にcloneします
desktopのterminalから作業します
・クローン
ubuntu201からubuntu202とubuntu203をcloneします。
$ virt-clone --original ubuntu201 --name ubuntu202 --file /var/lib/libvirt/images/ubuntu202.qcow2
$ virt-clone --original ubuntu201 --name ubuntu203 --file /var/lib/libvirt/images/ubuntu203.qcow2
・ip変更
前回作業と同様に、ubuntu202とubuntu203のipを変更します
$ sudo virsh net-edit default
<host mac='52:54:00:xx:xx:xx' ip='192.168.122.10'/> # ubuntu201
<host mac='52:54:00:xx:xx:xx' ip='192.168.122.20'/> # ubuntu202
<host mac='52:54:00:xx:xx:xx' ip='192.168.122.30'/> # ubuntu203
desktop PCをrebootします
・hostname変更
ubuntu202,ubuntu203のhostnameを変更します
$ ssh username@192.168.122.20
$ sudo hostnamectl set-hostname ubuntu202
$ exit
$ ssh username@192.168.122.30
$ sudo hostnamectl set-hostname ubuntu203
$ exit
(e) master nodeの構築
$ ssh username@192.168.122.10でloginします
・初期設定(処理に時間が必要)
$ sudo kubeadm init --node-name master --pod-network-cidr=10.244.0.0/16
下記メッセージが表示されると完了です。
config用のdircotryを作成、worker node接続情報が表示されます。
kubeadm joinはworker nodeからmaster nodeへ接続するときに必要です。
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.122.20:6443 --token fhgs8c.kp2yt9heu22qzfe4 \
--discovery-token-ca-cert-hash sha256:ca90b71260e12f14c78e56683079b9095f872c4f6d127fafe4780ed1322c5b09
・config用のdircotryを作成
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
(f) worker nodeの接続
$ ssh username@192.168.122.20でloginします
$ sudo kubeadm join 192.168.122.10:6443 \
--node-name node1 \
--token fhgs8c.kp2yt9heu22qzfe4 \
--discovery-token-ca-cert-hash sha256:ca90b71260e12f14c78e56683079b9095f872c4f6d127fafe4780ed1322c5b09
$exit
$ ssh username@192.168.122.30でloginします
$ sudo kubeadm join 192.168.122.10:6443 \
--node-name node1 \
--token fhgs8c.kp2yt9heu22qzfe4 \
--discovery-token-ca-cert-hash sha256:ca90b71260e12f14c78e56683079b9095f872c4f6d127fafe4780ed1322c5b09
$ exit
(g) master nodeの追加設定
$ ssh username@192.168.122.10でloginします
$ sudo sysctl net.bridge.bridge-nf-call-iptables=1
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
nodeとpodの状態を確認します
$ kubectl get nodes
$ kubectl get pods
(h) node podの試験
参考資料にnginxをpodで動作させる試験があります。試してください。
参考
[外部サイト参照]
・Ubuntu 20.04 LTSのオンプレにKubernetes環境構築からnginx Pod稼働まで
・Ubuntu 20.04 LTS インストール
コメント
コメントを投稿