Minikube環境を構成してKubernetes実験を行う


Minikube環境の構築Kubernetes実験用



以前に説明したKubernetsクラスタの構成図では、1つ以上の制御プレーン(Master Node)と複数のWorker Nodeが表示されます.
クバーネディスは実際には上記の方法で実行されますが、実際に導入されたアプリケーションではなく簡単なテストを行うと、クラスタを構築するコストが高くなります.

Minikube


Minikube公式ドキュメント
Minikubeという名前のように小さなクーバーネディスクラスタと言える
本書では、Minikubeはローカル・クーバー内のクラスタを迅速に構築するためのツールです.
プライマリノードとワークノードからなるクラスタではありません
プライマリノードにアクセスする構成部品とワークノードにアクセスする構成部品をローカルホストに結合します.

Minikubeのインストール


それでは練習後の勉強内容のためにMinikubeをセットしておきましょう
クーバーネスインストールガイド
インストールの詳細については、上記の正式なドキュメントを参照してください.
  • 2vCore CPU
  • 2GB Memory
  • 20GB Free Disk
  • 容器を運転する運転時環境(Docker等)
  • Minikubeによってクバーネディスクラスタを構成するには、上記の条件を満たす必要があります.
    AWSのt 3ですインストールのために大きなインスタンスが作成されました.

    1.MinikubeとKubectlのインストール


    まず、CLIツールKubectlをインストールし、MinikubeとKuber Nationにコマンドを渡して、クバーネッティクラスタを構築します.
    # 클러스터 구축을 위한 minikube 설치
    $ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    $ sudo install minikube-linux-amd64 /usr/local/bin/minikube
    
    # 구축한 클러스터를 제어하기 위한 kubectl 설치
    $ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    $ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    
    # 설치정보 확인
    $ minikube version
    minikube version: v1.25.2
    commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7
    
    $  kubectl version
    Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.5", GitCommit:"c285e781331a3785a7f436042c65c5641ce8a9e9", GitTreeState:"clean", BuildDate:"2022-03-16T15:58:47Z", GoVersion:"go1.17.8", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:19:12Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"linux/amd64"}

    2.Minikubeの実行


    次に、インストールされているMinikubeを使用してクラスタを構築します.
    # minikube 클러스터 시작
    $ minikube start
    
    * minikube v1.25.2 on Ubuntu 20.04
    * Unable to pick a default driver. Here is what was considered, in preference order:
    * Alternatively you could install one of these drivers:
      - docker: Not installed: exec: "docker": executable file not found in $PATH
      - kvm2: Not installed: exec: "virsh": executable file not found in $PATH
      - podman: Not installed: exec: "podman": executable file not found in $PATH
      - vmware: Not installed: exec: "docker-machine-driver-vmware": executable file not found in $PATH
      - virtualbox: Not installed: unable to find VBoxManage in $PATH
    
    X Exiting due to DRV_NOT_DETECTED: No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/
    minikube startコマンドが正常に実行されません.
    これは、docker、kvm 2、podman、virtualboxなどの同期ランタイム環境が構成されていないことを意味する.
    Dockerランタイム環境を構築し、minkubeを再実行します.
    # Docker 런타임 설치
    $ apt-get update
    $ apt-get install docker.io
    
    # minikube 실행
    $ minikube start
    
    * minikube v1.25.2 on Ubuntu 20.04
    * Automatically selected the docker driver. Other choices: none, ssh
    * The "docker" driver should not be used with root privileges.
    * If you are running minikube within a VM, consider using --driver=none:
    *   https://minikube.sigs.k8s.io/docs/reference/drivers/none/
    
    X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
    Dockerのインストール後にminikubeが正常に動作しない.
    今回は、root権限でdockerドライバを実行しないように警告メッセージが表示されます.
    これは、root権限を使用してdockerを実行すると、セキュリティ・ホールが発生する可能性があるためです.
    ソリューションは、ルート勘定科目ではなく勘定科目を作成して実行するか、--driver-noneオプションを追加してminikubeを実行します.
    他のアカウントを作成した場合は、ローカル環境でテストを行うクラスタ構築であるため、minikubeを実行するために--driver=noneオプションを追加する必要があります.
    # root 권한 경고 메시지 무시 옵션 부여
    $ minikube start --driver=none
    
    * minikube v1.25.2 on Ubuntu 20.04
    * Using the none driver based on user configuration
    
    X Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.23.3 requires conntrack to be installed in root's path
    オプションの追加と実行中にエラーが発生しました.
    Kubernetes 1.23.3バージョンはconntrackをインストールして実行する必要があります.
    conntrackをインストールして再実行します.
    # conntrack 설치 
    $ apt-get install conntrack 
    
    # minikube 실행 
    $ minikube start --driver=none 
    
    * minikube v1.25.2 on Ubuntu 20.04 
    * Using the none driver based on user configuration 
    
    X The requested memory allocation of 1940MiB does not leave room for system overhead (total system memory: 1940MiB). You may face stability issues. 
    * Suggestion: Start minikube with less memory allocated: 'minikube start --memory=1940mb' 
    
    * Starting control plane node minikube in cluster minikube 
    * Running on localhost (CPUs=2, Memory=1940MB, Disk=19788MB) ... 
    * OS release is Ubuntu 20.04.3 LTS
    * Preparing Kubernetes v1.23.3 on Docker 20.10.7 ... 
      - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf 
      - kubelet.housekeeping-interval=5m 
        > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s 
        > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s 
        > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s 
        > kubectl: 44.43 MiB / 44.43 MiB [-------------] 100.00% 41.37 MiB p/s 1.3s 
        > kubeadm: 43.12 MiB / 43.12 MiB [-------------] 100.00% 42.72 MiB p/s 1.2s 
        > kubelet: 118.75 MiB / 118.75 MiB [-----------] 100.00% 45.38 MiB p/s 2.8s 
      - Generating certificates and keys ... 
      - Booting up control plane ... 
      - Configuring RBAC rules ... 
    
    * Configuring local host environment ... 
    * 
    
    ! The 'none' driver is designed for experts who need to integrate with an existing VM 
    * Most users should use the newer 'docker' driver instead, which does not require root! 
    * For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/ 
    * 
    ! kubectl and minikube configuration will be stored in /root 
    ! To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run: 
    *
      - sudo mv /root/.kube /root/.minikube $HOME
      - sudo chown -R $USER $HOME/.kube $HOME/.minikube 
    
    * 
    * This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true 
    * Verifying Kubernetes components... 
      - Using image gcr.io/k8s-minikube/storage-provisioner:v5 
    * Enabled addons: default-storageclass, storage-provisioner 
    * Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
    正常に実行されました.

    3.設置確認


    次に、クラスタ構成が正常かどうかを確認します.
    $ kubectl get pod --all-namespaces
    
    NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
    kube-system   coredns-64897985d-748ll                 1/1     Running   0          81s
    kube-system   etcd-ip-10-0-2-146                      1/1     Running   0          96s
    kube-system   kube-apiserver-ip-10-0-2-146            1/1     Running   0          92s
    kube-system   kube-controller-manager-ip-10-0-2-146   1/1     Running   0          92s
    kube-system   kube-proxy-m7rjw                        1/1     Running   0          81s
    kube-system   kube-scheduler-ip-10-0-2-146            1/1     Running   0          95s
    kube-system   storage-provisioner                     1/1     Running   0          91s
    kubectl get pod-all-namespaceでアップロードされたpodをすべてチェックしました.
    クバーネディスの制御平面コンポーネントetcd、api-server、controller、schedulerが正常に構成されていることがわかります.