使用 minikube 安裝指定版本的 k8s 集群


1. k8s_install_by_minikube

  • 國內安裝 minikube

1.1. 安裝准備

1.1.1. 安裝配置 docker 環境

  • 使用阿里雲源安裝 docker
mkdir -p /opt/tools/k8s
cd /opt/tools/k8s
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

1.1.2. 安裝 kubectl

  • 下載 kubectl
wget "https://storage.googleapis.com/kubernetes-release/release/v1.18.1/bin/linux/amd64/kubectl" -O "/usr/local/bin/kubectl"
chmod 755 /usr/local/bin/kubectl
kubectl version
  • 更新 kubectl 版本
wget "https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl" -O "/usr/local/bin/kubectl"
chmod 755 /usr/local/bin/kubectl
kubectl version

1.1.3. 安裝基礎工具

apt install conntrack -y

1.2. 下載安裝 minikube

1.2.1. 國內主機推薦-安裝阿里雲版本的 minikube-v1.18.1

  • 國內主機可以使用阿里雲鏡像倉庫下載安裝
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64
chmod 755 minikube
mv minikube /usr/local/bin/
ll /usr/local/bin/minikube

文檔:https://developer.aliyun.com/article/221687
其他:https://developer.aliyun.com/article/672675
倉庫:https://github.com/AliyunContainerService/minikube

1.2.2. 國外主機推薦-安裝最新版 minikube

  • 國外主機可以嘗試下載安裝最新版 minikube,體驗新功能
  • 最新版需要從谷歌倉庫下載,國內訪問可能會有限制
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
ll /usr/local/bin/

官方倉庫:https://github.com/kubernetes/minikube/releases/tag/v1.19.0
官方文檔:https://minikube.sigs.k8s.io/docs/start/

1.3. 使用 minikube 安裝 k8s 集群

1.3.1. 刪除舊的 minikube 虛擬機及緩存

minikube delete
rm -rf /root/.minikube

1.3.2. 使用 minikube 啟動 k8s 虛擬機

  • 默認聯網安裝最新版 k8s 集群,使用官方倉庫,國內主機可能安裝失敗
minikube start
  • 國內主機建議使用阿里雲倉庫安裝指定版本的 k8s 集群
# 指定安裝版本
minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com  --image-mirror-country cn --kubernetes-version=v1.18.3
  • 常用安裝選項
# 為了訪問海外的資源,阿里雲提供了一系列基礎設施,請按照如下參數進行配置。其中常見參數
--driver=***                從1.5.0版本開始,Minikube缺省使用本地最好的驅動來創建Kubernetes本地環境,測試過的版本 docker, kvm
--image-mirror-country cn   將缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作為安裝Kubernetes的容器鏡像倉庫 (阿里雲版本可選)
--iso-url=***               利用阿里雲的鏡像地址下載相應的 .iso 文件 (阿里雲版本可選)
--registry-mirror=***       為了拉取Docker Hub鏡像,需要為 Docker daemon 配置鏡像加速,參考阿里雲鏡像服務
--cpus=2                    為minikube虛擬機分配CPU核數
--memory=2048mb             為minikube虛擬機分配內存數
--kubernetes-version=***    minikube 虛擬機將使用的 kubernetes 版本
  • 其他不常用的安裝選項
# 使用舊版本運行第二個 minikube 虛擬機,驅動為 docker 時可用
minikube start -p aged --kubernetes-version=v1.16.1

# 安裝 minikube,指定虛擬機配置
minikube start --cpus=4 --memory=4096mb

# 安裝 minikube,指定虛擬機使用 Docker 驅動,適用於物理機安裝 minikube
minikube start --driver=docker

# 安裝 minikube,指定虛擬機使用 KVM2 驅動,適用於 kvm 虛擬機安裝 minikube
minikube start --driver=kvm2

1.4. minikube 集群管理命令

  • minikube 常用命令
# 檢查安裝結果
minikube help
minikube status
kubectl version
kubectl get nodes
kubectl get pods -A

# 查詢運行的 pod
minikube kubectl -- get po -A

# 掛起虛擬機
minikube pause

# 停止虛擬機
minikube stop

# 修改虛擬機內存配置
minikube config set memory 16384

# 查看 minikube 的安裝目錄列表
minikube addons list

# 啟動 dashboard 控制台
minikube dashboard
curl 127.0.0.1:23341

# 刪除所有 minikube 虛擬機
minikube delete --all

# 部署目錄
/var/lib/kubelet
/var/lib/minikube
  • k8s 常用命令
# 創建帶有終端的 Pod,並進入(后續測試用)
kubectl run busybox --image=busybox -it

# 部署 app 進行測試
kubectl run nginx02 --image=nginx
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8081

# deployment
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get service hello-minikube

# 使用 minikube 訪問服務
minikube service hello-minikube

# 使用端口映射訪問服務
kubectl port-forward service/hello-minikube 7080:8080
curl http://localhost:7080/

# 使用 LB 類型的 deployment 測試
kubectl create deployment balanced --image=k8s.gcr.io/echoserver:1.4  
kubectl expose deployment balanced --type=LoadBalancer --port=8080
minikube tunnel
kubectl get services balanced

1.5. 實例演示

  • 實例演示:安裝默認版本 minikube
root@zuiyoujie:/opt/scrtips/k8s# ll /usr/local/bin/
total 95516
drwxr-xr-x  2 root root     4096 Apr 19 17:50 ./
drwxr-xr-x 13 root root     4096 Apr  6 12:31 ../
-rwxr-xr-x  1 root root 44032000 May 20  2020 kubectl*
-rwxr-xr-x  1 root root 53765167 Apr 19 17:49 minikube*

-------------------------
root@zuiyoujie:/opt/tools/k8s# minikube start
* minikube v1.18.1 on Ubuntu 18.04
* Automatically selected the docker driver
* 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/

root@zuiyoujie:/opt/tools/k8s# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com  --image-mirror-country cn
* minikube v1.18.1 on Ubuntu 18.04 (amd64)
* Using the none driver based on user configuration
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=4, Memory=7774MB, Disk=100664MB) ...
* OS release is Ubuntu 18.04.3 LTS
* Preparing Kubernetes v1.20.2 on Docker 20.10.6 ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 37.40 MiB / 37.40 MiB [---------------] 100.00% 17.10 MiB p/s 2s
    > kubectl: 38.37 MiB / 38.37 MiB [---------------] 100.00% 15.26 MiB p/s 3s
    > kubelet: 108.73 MiB / 108.73 MiB [-------------] 100.00% 12.13 MiB p/s 9s
  - 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 registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
root@zuiyoujie:/opt/tools/k8s# 

---------------------------------
root@zuiyoujie:/opt/scrtips/k8s# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:52:00Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
root@zuiyoujie:/opt/scrtips/k8s# 

root@zuiyoujie:/opt/scrtips/k8s# kubectl get pod -A
NAMESPACE     NAME                                                        READY   STATUS         RESTARTS   AGE
default       busybox                                                     1/1     Running        1          9m11s
default       hello-minikube                                              0/1     ErrImagePull   0          7m42s
kube-system   coredns-546565776c-ggfpx                                    1/1     Running        1          21m
kube-system   etcd-zuiyoujie                      1/1     Running        1          21m
kube-system   kube-apiserver-zuiyoujie            1/1     Running        1          21m
kube-system   kube-controller-manager-zuiyoujie   1/1     Running        1          21m
kube-system   kube-proxy-x5pft                                            1/1     Running        1          21m
kube-system   kube-scheduler-zuiyoujie            1/1     Running        1          21m
kube-system   storage-provisioner                                   

root@zuiyoujie:/opt/scrtips/k8s# kubectl run busybox --image=busybox -it
Error from server (AlreadyExists): pods "busybox" already exists
root@zuiyoujie:/opt/scrtips/k8s# kubectl attach busybox -c busybox -it
If you don't see a command prompt, try pressing enter.
/ # 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
/ # 
Session ended, resume using 'kubectl attach busybox -c busybox -i -t' command when the pod is running
  • 實例演示:安裝指定版本 minikube
root@zuiyoujie:/opt/tools/k8s# minikube delete
* Uninstalling Kubernetes v1.20.2 using kubeadm ...
* Deleting "minikube" in none ...
* Removed all traces of the "minikube" cluster.

root@zuiyoujie:/opt/tools/k8s# minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com  --image-mirror-country cn --kubernetes-version=v1.18.3
* minikube v1.18.1 on Ubuntu 18.04 (amd64)
* Using the none driver based on user configuration
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=4, Memory=7774MB, Disk=100664MB) ...
* OS release is Ubuntu 18.04.3 LTS
* Preparing Kubernetes v1.18.3 on Docker 20.10.6 ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    > kubelet.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
    > kubectl.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 37.97 MiB / 37.97 MiB [---------------] 100.00% 11.72 MiB p/s 3s
    > kubectl: 41.99 MiB / 41.99 MiB [---------------] 100.00% 10.95 MiB p/s 4s
    > kubelet: 108.04 MiB / 108.04 MiB [------------] 100.00% 10.87 MiB p/s 11s
  - 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 registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4 (global image repository)
* Enabled addons: default-storageclass, storage-provisioner

! /usr/local/bin/kubectl is version 1.20.2, which may have incompatibilites with Kubernetes 1.18.3.
  - Want kubectl v1.18.3? Try 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

root@zuiyoujie:/opt/tools/k8s# kubectl get node
NAME                                STATUS   ROLES    AGE     VERSION
zuiyoujie   Ready    master   4m26s   v1.18.3

root@zuiyoujie:/opt/tools/k8s# kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:28:09Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
root@zuiyoujie:/opt/tools/k8s# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM