?一、使用 Minikube 創(chuàng)建集群
1、Kubernetes 集群
Kubernetes 協(xié)調(diào)一個高可用計算機集群,每個計算機作為獨立單元互相連接工作。?Kubernetes 中的抽象允許你將容器化的應用部署到集群,而無需將它們綁定到某個特定的獨立計算機。為了使用這種新的部署模型,應用需要以將應用與單個主機分離的方式打包:它們需要被容器化。與過去的那種應用直接以包的方式深度與主機集成的部署模型相比,容器化應用更靈活、更可用。?Kubernetes 以更高效的方式跨集群自動分發(fā)和調(diào)度應用容器。?Kubernetes 是一個開源平臺,并且可應用于生產(chǎn)環(huán)境。
一個 Kubernetes 集群包含兩種類型的資源:
- Control Plane?調(diào)度整個集群
- Nodes?負責運行應用
2、集群圖
Control Plane 負責管理整個集群。 Control Plane 協(xié)調(diào)集群中的所有活動,例如調(diào)度應用、維護應用的所需狀態(tài)、應用擴容以及推出新的更新。
Node 是一個虛擬機或者物理機,它在 Kubernetes 集群中充當工作機器的角色 每個Node都有 Kubelet , 它管理 Node 而且是 Node 與 Control Plane 通信的代理。 Node 還應該具有用于??處理容器操作的工具,例如 Docker 或 rkt 。處理生產(chǎn)級流量的 Kubernetes 集群至少應具有三個 Node,因為如果一個 Node 出現(xiàn)故障其對應的 etcd 成員和控制平面實例都會丟失,并且冗余會受到影響。 你可以通過添加更多控制平面節(jié)點來降低這種風險 。
Control Plane 管理集群,Node 用于托管正在運行的應用。
在 Kubernetes 上部署應用時,你告訴 Control Plane 啟動應用容器。 Control Plane 就編排容器在集群的 Node 上運行。 Node 使用 Control Plane 暴露的 Kubernetes API 與 Control Plane 通信。終端用戶也可以使用 Kubernetes API 與集群交互。
Kubernetes 既可以部署在物理機上也可以部署在虛擬機上。你可以使用 Minikube 開始部署 Kubernetes 集群。 Minikube 是一種輕量級的 Kubernetes 實現(xiàn),可在本地計算機上創(chuàng)建 VM 并部署僅包含一個節(jié)點的簡單集群。 Minikube 可用于 Linux , macOS 和 Windows 系統(tǒng)。Minikube CLI 提供了用于引導集群工作的多種操作,包括啟動、停止、查看狀態(tài)和刪除。
?3、創(chuàng)建 Minikube 集群
?首先確定已經(jīng)安裝minikube, kubectl。
minikube start
4、打開儀表板
打開 Kubernetes 儀表板。你可以通過兩種不同的方式執(zhí)行此操作:
打開一個新的終端,然后運行:
# 啟動一個新的終端,并保持此命令運行。
minikube dashboard
現(xiàn)在,切換回運行?minikube start
?的終端。
如果你不想 Minikube 為你打開 Web 瀏覽器,可以使用?--url
?標志運行儀表板命令。?minikube
?會輸出一個 URL,你可以在你喜歡的瀏覽器中打開該 URL。
打開一個新的終端,然后運行:
# 啟動一個新的終端,并保持此命令運行。
minikube dashboard --url
現(xiàn)在,切換回運行?minikube start
?的終端。
5、創(chuàng)建 Deployment
Kubernetes Pod 是由一個或多個為了管理和聯(lián)網(wǎng)而綁定在一起的容器構成的組。本教程中的 Pod 只有一個容器。 Kubernetes Deployment 檢查 Pod 的健康狀況,并在 Pod 中的容器終止的情況下重新啟動新的容器。 Deployment 是管理 Pod 創(chuàng)建和擴展的推薦方法。
-
使用?
kubectl create
?命令創(chuàng)建管理 Pod 的 Deployment。該 Pod 根據(jù)提供的 Docker 鏡像運行容器。# 運行包含 Web 服務器的測試容器鏡像 kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
-
查看 Deployment:
kubectl get deployments
輸出結果類似于這樣:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m
-
查看 Pod:
kubectl get pods
輸出結果類似于這樣:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
-
查看集群事件:
kubectl get events
-
查看?
kubectl
?配置:kubectl config view
6、創(chuàng)建 Service
默認情況下,Pod 只能通過 Kubernetes 集群中的內(nèi)部 IP 地址訪問。 要使得?hello-node
?容器可以從 Kubernetes 虛擬網(wǎng)絡的外部訪問,你必須將 Pod 暴露為 Kubernetes?Service。
-
使用?
kubectl expose
?命令將 Pod 暴露給公網(wǎng):kubectl expose deployment hello-node --type=LoadBalancer --port=8080
這里的?
--type=LoadBalancer
?參數(shù)表明你希望將你的 Service 暴露到集群外部。測試鏡像中的應用程序代碼僅監(jiān)聽 TCP 8080 端口。 如果你用?
kubectl expose
?暴露了其它的端口,客戶端將不能訪問其它端口。
-
查看你創(chuàng)建的 Service:
kubectl get services
輸出結果類似于這樣:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
對于支持負載均衡器的云服務平臺而言,平臺將提供一個外部 IP 來訪問該服務。 在 Minikube 上,
LoadBalancer
?使得服務可以通過命令?minikube service
?訪問。
-
運行下面的命令:
minikube service hello-node
這將打開一個瀏覽器窗口,為你的應用程序提供服務并顯示應用的響應。
7、啟用插件
Minikube 有一組內(nèi)置的插件, 可以在本地 Kubernetes 環(huán)境中啟用、禁用和打開。
-
列出當前支持的插件:
minikube addons list
輸出結果類似于這樣:
addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabled storage-provisioner-gluster: disabled
-
啟用插件,例如?
metrics-server
:minikube addons enable metrics-server
輸出結果類似于這樣:
The 'metrics-server' addon is enabled
-
查看通過安裝該插件所創(chuàng)建的 Pod 和 Service:
kubectl get pod,svc -n kube-system
輸出結果類似于這樣:
NAME READY STATUS RESTARTS AGE pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m pod/metrics-server-67fb648c5 1/1 Running 0 26s pod/etcd-minikube 1/1 Running 0 34m pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-apiserver-minikube 1/1 Running 0 34m pod/kube-controller-manager-minikube 1/1 Running 0 34m pod/kube-proxy-rnlps 1/1 Running 0 34m pod/kube-scheduler-minikube 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
-
禁用?
metrics-server
:minikube addons disable metrics-server
輸出結果類似于這樣:
metrics-server was successfully disabled
8、清理
現(xiàn)在可以清理你在集群中創(chuàng)建的資源:
kubectl delete service hello-node
kubectl delete deployment hello-node
停止 Minikube 集群:
minikube stop
可選地,刪除 Minikube 虛擬機(VM):文章來源:http://www.zghlxwxcb.cn/news/detail-516388.html
# 可選的
minikube delete
如果你還想使用 Minikube 進一步學習 Kubernetes,那就不需要刪除 Minikube。文章來源地址http://www.zghlxwxcb.cn/news/detail-516388.html
到了這里,關于Kubernetes創(chuàng)建集群—使用 Minikube 創(chuàng)建集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!