CentOS8にkubernetes環境を構築(Vargrant,VirtualBox)

Docker

説明

ローカル環境にMinikubeを入れて、kubernetesを動かそうと思います。

環境

vagrantでCentOS8にdocker環境を構築の続きになります。
こちらを参考にしてください。

・Windows10 home
・VirtualBox
・Vagrant
・CentOS Linux release 8.3.2011
・Docker version 19.03.14, build 5eb3275d40
・docker-compose version 1.27.4, build 40524192
・minikube version: v1.15.1
・kubectl Major:”1″, Minor:”20″, GitVersion:”v1.20.0″

Minikubeをインストール

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo chmod 755 minikube
$ sudo install minikube /usr/local/bin/
$ sudo ln -s /usr/local/bin/minikube /usr/bin/minikube

kubectlをインストール

$ curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
$ sudo chmod +x kubectl 
$ sudo mv kubectl /usr/local/bin/
$ sudo ln -s /usr/local/bin/kubectl /usr/bin/kubectl

conntrackのインストール

$ sudo dnf install conntrack

Minikube実行

VirtualBox上のCentOS8のkubernetesを動かすので、「-vm-driver=none」にしてください。

$ sudo minikube start --vm-driver=none
�😄  minikube v1.15.1 on Centos 8.3.2011 (vbox/amd6
✨  Using the none driver based on existing profile
・
・
�🔎  Verifying Kubernetes components...
�🌟  Enabled addons: default-storageclass, storage-provision
�👍  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by
efault

kubectlのjobでバッチ処理をするコンテナを動かす

今回は、hello-worldイメージを使用します。

$ sudo kubectl create job hello-world --image=hello-world
job.batch/hello-world created

確認します。STATUSがCompletedになってればOKです。

$ sudo kubectl get all
NAME                    READY   STATUS      RESTARTS   AGE
pod/hello-world-ntb4b   0/1     Completed   0          48s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   5h40m

NAME                    COMPLETIONS   DURATION   AGE
job.batch/hello-world   1/1           5s         48s

ログで確認します。

$ sudo kubectl logs -f hello-world-ntb4b

Hello from Docker!
This message shows that your installation appears to be working correctly.
・
・

「Hello from Docker!」を確認できればOKです!

ちなみに削除方法は、

$ sudo kubectl delete jobs hello-world
job.batch "hello-world" deleted

kubectlのDeploymentでnginxを動かす

Deploymentはnginxなどのwebserverを動かすのに適しています。podのスケールもでき、podが異常終了が起きたら、新しいpodが勝手に立ち上がってくれるすばらしい便利機能です。

$ sudo kubectl create deployment nginx --image=nginx
deployment.apps/nginx created

確認すると

$ sudo kubectl get deploy,po
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1/1     1            1           3m12s

NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-rnxmf   1/1     Running   0          3m12s

Deployment1つとpodがひとつあります。ここからスケールしてpodを増やそうと思います。

$ sudo kubectl scale --replicas=5 deployment/nginx
deployment.apps/nginx scaled

$ sudo kubectl get deploy,po
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   5/5     5            5           9m15s

NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-4q2rf   1/1     Running   0          38s
pod/nginx-6799fc88d8-j5djm   1/1     Running   0          38s
pod/nginx-6799fc88d8-ks2kn   1/1     Running   0          38s
pod/nginx-6799fc88d8-q5htp   1/1     Running   0          38s
pod/nginx-6799fc88d8-rnxmf   1/1     Running   0          9m15s

次にnginxのIPを確認して、アクセスしようと思います。

$ sudo kubectl get po nginx-6799fc88d8-4q2rf -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE         NOMINATED NODE   READINESS GATES
nginx-6799fc88d8-4q2rf   1/1     Running   0          11m   172.17.0.4   centos8.localdomain   <none>           <none>
$ curl -L http://172.17.0.4
<!DOCTYPE html>
<html>
・
・

コメント

タイトルとURLをコピーしました