k8s miniKube 入門


k8s miniKube 入門

miniKube 是單機版kubernetes, 可以配置運行在同一台主機上的服務和pod,並使用docker作為虛擬化工具

  1. 下載:直接下載可執行文件,復制到path 路徑,免安裝。

  2. 啟動:minikube 支持多種虛擬化工具,如:virtualbox, 不過在linux里可以支持docker

    minikube start --vm-driver=none
    

    等待一會最終輸出 * Done! kubectl is now configured to use "minikube"

    由於需要下載很多支持的東西,經常失敗,最好添加74.125.204.82 k8s.gcr.io 到hosts文件。

  3. 然后創建一個Deployment

    kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
    

    這個鏡像下載比較慢,可以下載阿里的registry.cn-qingdao.aliyuncs.com/k8slast/echoserver

    kubectl run hello-minikube --image=registry.cn-qingdao.aliyuncs.com/k8slast/echoserver --port=8080
    

    輸出:deployment.apps/hello-minikube created

  4. 再將deployment 暴露成服務

    kubectl expose deployment hello-minikube --type=NodePort
    

    輸出:service/hello-minikube exposed

  5. 最后獲取訪問url

    minikube service hello-minikube --url
    

    輸出訪問url:http:😕/xxxxx:port

    通過url可以訪問服務資源

刪除服務資源

  1. 先刪除服務: minikube delete service hello-minikube
  2. 再刪除deployment: minikube delete deployment hello-minikube
  3. 最后刪除minikube集群 minikube stop && minikube delete

一個簡單的演示完成

通過yaml 文件管理服務和deployment

  • 通過yaml 文件管理好處是可以通過git 來管理yaml文件,
  • yaml的格式簡單,只有maps 和 lists,兩者可以相互嵌套
  • minikube 的很多命令可以使用 --dry-run -o yaml 來導出yaml 文件,簡化編寫效率

首先看一個 yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: myapp
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      run: myapp
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: myapp
    spec:
      containers:
      - image: 'springboot'
        name: myapp
        ports:
        - containerPort: 8088
        resources: {}
status: {}

這里說明一下參數

  • kind:Deployment, 這里表示這個yaml是用來生成deploy的,另外還有Service,

  • replicas: 1 這個表示備份的個數,1個表示一個pod

其他配置看字面意思可以理解。

這個yaml是通過dry-run 生成的,dry-run 意思是只跑一遍,但不會生成資源

minikube run myapp --image=springboot --port=8088 --dry-on -o yaml

將命令的輸出保存到demo.yaml, 有了yaml 文件可以直接指定文件執行,跟上面的命令一樣的效果

minikube create -f demo.yaml

另外再寫服務的yaml

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: myapp
  name: myapp
spec:
  ports:
  - port: 8088
    protocol: TCP
    targetPort: 8088
    nodePort: 30001
  selector:
    run: myapp
  type: NodePort
status:
  loadBalancer: {}

命令導出的yaml 需要手動添加 nodePort 參數,暴露到外部的端口

  • port : 8088 表示集群內部訪問端口,集群里的多個服務可以通過這個端口訪問
  • targetPort: 8088 是本pod 的監聽端口,springboot 監聽在8088
  • nodePort 才是暴露在外面的端口

另外,為了避免與主機其他服務沖突, nodePort 默認范圍在30000-32767

然后通過指定yaml 來暴露服務,效果與命令執行一樣

minikube expose -f demo_service.yaml

最后通過命令獲取url minikube service myapp --url

通過yaml文件可以刪除服務和deploy:

minikube delete -f demo_service.yaml

minikube delete -f demo.yaml


免責聲明!

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



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