minikube

navyum發表於2024-10-28

minikube安裝踩坑筆記

  • 步驟一:minikube 執行檔案下載(linux x86-64為例子):
    • 官方地址:(https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download)´
        curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
        sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
  • 步驟二 minikube 執行:
    • 官方命令: minikube start
    • 我們需要做如下改動: minikube start --vm-driver=docker --base-image="anjone/kicbase" --force --kubernetes-version=1.23.0
    • 問題一:因為政策等原因,dokcer-hub無法拉取到base映象
      • 錯誤資訊(阻塞在映象下載): ``` Pending: Pulling base image v0.0.44 … > index.docker.io/kicbase/sta…: 0 B E0811 15:29:59.503923 16810 cache.go:189] Error downloading kic artifacts: failed to download kic base image or any fallback image

        ```

      • 解決方案1:

        • 使用命令列引數修改映象源為阿里雲
         minikube start --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers
        • 測試結果:❌未透過,猜測大部分雲廠商的源站失效
      • 解決方案2:

        • 修改映象源,並將 base-image anjone/kicbase 拉到本地
            $ sudo vi /etc/docker/daemon.json
            $ 修改registry-mirrors:
            {
                "registry-mirrors": [
                    "https://hub.uuuadc.top",
                    "https://dockerpull.com",
                    "https://docker.1panel.live"
                ]
            }
            $ sudo systemctl restart docker
            $ docker pull anjone/kicbase
        • 測試結果:✅ 透過
        • 源站來源:https://github.com/Navyum/CF-Workers-docker.io
          • 自己搭建
          • 使用別人搭建好的
    • 問題二:預設會使用最新版kubernetes(測試時為v1.30.0),不支援docker
      • 錯誤資訊(提示需要使用cri-docker): ❌ Exiting due to RT_DOCKER_MISSING_CRI_DOCKER_NONE: sudo systemctl enable cri-docker.socket: Process exited with status 1
      • 解決方案1:
        • 使用ci-dockerdgithub地址
        • 測試結果:未測試
      • 解決方案2:
        • 使用支援docker的低版本kubernetes,例如1.23.0
         --kubernetes-version=1.23.0
        • 測試結果:✅ 透過
      • –vm-driver 引數說明:
        • 指定為docker,即透過docker執行minikube環境。我是在EC2環境中使用
      • –force 引數說明:
        • 使用root執行,不推薦
    • 執行成功截圖:
  • 步驟三 檢查minikube 執行狀態: $ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready control-plane,master 16h v1.23.0 $ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
  • 步驟四 安裝kubectl、kubeadm、kubelet:
    • 解決方案1:
      • 使用官方地址下載可執行檔案:
        • 本例子使用的kubenetes版本為1.23.0,需要下載對應版本的kubectl
        • KUBERNETES_VERSION 替換為你需要的版本,本例子為1.23.0
        $ curl -LO https://dl.k8s.io/release/KUBERNETES_VERSION/bin/linux/amd64/kubectl
      • 測試結果:❌ 未透過,速度太慢
    • 解決方案2:
      • 使用yum源下載指定版本(centos)
        • 新增k8s倉庫源
        cat << EOF > /etc/yum.repos.d/kubernetes.repo 
            [kubernetes]
            name=Kubernetes
            baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
            enabled=1
            gpgcheck=1
            repo_gpgcheck=1
            gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        EOF
        • 下載1.23.0 版本kubectl
        $ yum install -y kubectl-1.23.0
      • 測試結果:✅透過
  • 步驟四 建立Deployment:
    • 官方推薦的yaml,拉取image太慢,使用阿里雲的測試即可
    $ kubectl create deployment hello-minikube --image=registry.aliyuncs.com/google_containers/echoserver:1.10
  • 步驟五 expose到外網:
    • 如果使用的是阿里雲、騰訊雲主機,需要在控制檯開啟對應埠號,否則可能無法訪問,本例子需要手動開啟Port 8080
    • expose 到8080埠
    $ kubectl expose deployment hello-minikube --type=NodePort --port=8080
    • 檢視服務:
    $ kubectl get pod -o wide
        NAME                              READY   STATUS    RESTARTS   AGE     IP           NODE       NOMINATED NODE   READINESS GATES
        hello-minikube-6899fcbcf5-qdb2p   1/1     Running   0          2m28s   172.17.0.3   minikube   <none>           <none>
    

    $ kubectl get svc -o wide
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
    hello-minikube NodePort 10.109.145.31 <none> 8080:32484/TCP 100s app=hello-minikube
    kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2m38s <none>

相關文章