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
- 自己搭建
- 使用別人搭建好的
- 修改映象源,並將 base-image
- 問題二:預設會使用最新版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執行,不推薦
- 錯誤資訊(提示需要使用cri-docker):
- 執行成功截圖:
- 官方命令:
- 步驟三 檢查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
- 測試結果:✅透過
- 使用yum源下載指定版本(centos)
- 解決方案1:
- 步驟四 建立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>