Minikube with Docker driver on MacOS

2021-04-02 Kubernetes

Minikube 是由 Google 發布的一個 Kubernetes 輕量級工具,可以很容易的在開發者環境建立一個 Kubernetes Cluster,由於現在 Kubernetes 當道,這類的需求非常廣泛,相同類型的也有 K3s, Kind 可以用

寫這篇主要是記錄一下新手上路的過程,上一次使用 Minikube 也一段時間了才發現當時沒有寫下來 XDD …

Minikube 依賴 Virtual Machine or Container 作為 Kubernetes Cluster 的底層,可以選擇 Virtualbox 或者是 Docker 等等作為 driver,而系統資源至少必須保留 2 CPU, 2GB RAM, 1GB Swap 啟動 Signle-node Kubernetes Cluster。

Installation & Config

brew 一行指令安裝將 Docker, Minikube

$ brew install docker minikube

先把 Minikube 預設的 driver 設為 Docker (macOS 預設為 Hyperkit) 可以減少每次 minikube start 都要指定 driver 的指令,執行更快

$ minikube config set driver docker

然後就可以無腦 minikube start

$ minikube start

😄  minikube v1.18.1 on Darwin 10.15.7
✨  Using the docker driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔥  Creating docker container (CPUs=2, Memory=1990MB) ...
🐳  Preparing Kubernetes v1.20.2 on Docker 20.10.3 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v4
🌟  Enabled addons: storage-provisioner, default-storageclass

🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

測試一下 deploymentservice 的使用和 Kubernetes 是不是都通用

# nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
   -  protocol: TCP
      port: 80
      targetPort: 80

拿最簡單的 nginx 來試試看

$ kubectl apply -f nginx.yml
deployment.apps/nginx-deployment created
service/nginx created

這時候應該可以拿到 Pods, Service

$ kubectl get pods
$ kubectl get services

另外 minikube 也支援將 Docker tunnel 到本機,透過瀏覽器 127.0.0.1 連到 Service

$ minikube service nginx --url

🏃  Starting tunnel for service nginx.
http://127.0.0.1:64666

測試完成後只要 minikube delete 就能將資源全數刪除,相當方便

$ minikube delete

另外幾個也很常用的 minikube 指令

  • 暫停正在運行的 Kubernetes 且不影響已經部署的服務 “當前狀態”
$ minikube pause
  • 停止 Node 和所有的 Pods, Services
$ minkube stop
  • 啟動第二個 Kubernetes,常見用來測試不同版本的 Kubernetes Cluster
$ minikube start -p aged --kubernetes-version=v1.16.1
  • 刪除所有 minikube cluster
$ minikube delete --all

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱