内容简介:Kubernetes(又稱 K8s,類似於 i18n/l10n,取中間字母的長度的簡寫命名)是一個協助我們自動化部署(automating deployment)、自動擴展(scaling)和管理容器應用程式(containerized applications)的指揮調度(Orchestration)工具。相比於傳統的手動部屬容器應用程式的方式,Kubernetes 主要有幾個好處:Kubernetes cluster 主要可以分為 Master 和 Node 兩部份,Master 負責指揮調度 Nod
Kubernetes(又稱 K8s,類似於 i18n/l10n,取中間字母的長度的簡寫命名)是一個協助我們自動化部署(automating deployment)、自動擴展(scaling)和管理容器應用程式(containerized applications)的指揮調度(Orchestration)工具。相比於傳統的手動部屬容器應用程式的方式,Kubernetes 主要有幾個好處:
-
Automated rollouts and rollbacks
Kubernetes 可以很容易更新容器版本並 rollback 回之前版本
-
Service Scalability
當定義好部屬服務需求,可以很容易因應流量進行 Auto Scaling
-
Service discovery and load balancing
自動分配容器相對應的 IP 位址,透過 Service cluster 達到 load balancing 效果
-
Self-healing
當 Container Application 出現 crash 時,可以根據部屬定義的需求,自動偵測重啟服務
Kubernetes 架構簡介
Kubernetes cluster 主要可以分為 Master 和 Node 兩部份,Master 負責指揮調度 Node。在 Kubernetes 世界裡,Node 上的 Pod 是運行調度的最小單位,裡面可以放多個 container(一般以有緊密相關的服務為主,同一個 Pod 共享 IP),也可以只有單個 Container,同一個 Pod 的 container 是一起被調度。而 Deployment 為管理 Pod 的 Controller,我們可以視一組 Deployment 為一組應用。而 Service 可以固定住我們對外服務的 IP,不會因為 Pod 關閉重啟而喪失原來的 IP 位置。
環境設定
Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day
在開始學習跑步之前,我們先學會走路。首先,我們透過 minikube 這個可以在本地端跑 Kubernetes 工作,來在本地端部屬我們的 Kubernetes cluster,感受一下 K8s 的應用。
首先,先準備好 virtualbox ,接著透過 homebrew 下指令來安裝 minikube
(我們這邊會以 macOS 為主,若是其他作業系統可以參考 minikube 官方 repo 教學)
$ brew cask install minikube
安裝好後可以透過以下指令確認版本,同時它也會一起安裝 kubectl 這個 Kubernetes 指令操作工具
$ minikube version
創建 cluster
接著啟動我們 Kubernetes cluster
$ minikube start Starting local Kubernetes v1.10.0 cluster... Starting VM... Downloading Minikube ISO 170.78 MB / 170.78 MB [============================================] 100.00% 0s Getting VM IP address... Moving files into cluster... Downloading kubelet v1.10.0 Downloading kubeadm v1.10.0 Finished Downloading kubelet v1.10.0 Finished Downloading kubeadm v1.10.0 Setting up certs... Connecting to cluster... Setting up kubeconfig... Starting cluster components... Kubectl is now configured to use the cluster. Loading cached images from config file.
若是啟動完成可以透過以下指令觀看 cluster 情況:
$ kubectl cluster-info
還可以透過圖形化介面來觀看和操作 Kubernetes
$ minikube dashboard
部屬應用
接著我們來部屬一個簡單範例應用到 Kubernetes。這個應用名稱叫 kubernetes-bootcamp,–image 後面接的是 docker image 位置和版本,–port 則是 container 對外的 port
$ kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=9000
應該可以看到 kubernetes-bootcamp-xxxxxxxx 的 Pod 已經啟動:
$ kubectl get pods
對外公開應用
由於 default 情況下 Pod 只允許 cluster 內部訪問,若是要讓外部可以訪問的話可以將容易的 port 對應到 Node 的 Port:
$ kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 9000
看一下 service 列表,發現已經隨機分配一個 port 31862
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP x.x.x.x <none> 443/TCP 4m kubernetes-bootcamp NodePort xx.xx.xx.xx <none> 9000:31862/TCP 4s
擴充應用
由於 default 情況下 deployment 只會有一個副本 replication,我們可以透過以下指令查看副本數:
$ kubectl get deployment
設定副本數量為 3:
$ kubectl scale deployments/kubernetes-bootcamp --replicas=3
設定副本數量為 2:
$ kubectl scale deployments/kubernetes-bootcamp --replicas=2
更新應用
若是我們想要更新 container 的版本的話可以下以下指令:
$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v2
若要回到 v1 版本可以透過 rollout undo 指令來進行:
$ kubectl rollout undo deployments/kubernetes-bootcamp
總結
以上簡單透過 minikube 介紹 Kubernetes 的架構和部屬 cluster 和應用在本地端。目前 Kubernetes 生態系發展非常快速,版本也持續更新。關於 Kubernetes 相關的實際應用,我們下回再繼續討論囉!
關於作者:
@kdchang 文藝型開發者,夢想是做出人們想用的產品和辦一所心目中理想的學校。A Starter & Maker. JavaScript, Python & Arduino/Android lover.:)
喜歡我們的文章嗎?歡迎分享按讚給予我們支持和鼓勵!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算群体智能基础
恩格尔伯里特 / 谭营 / 2009-10 / 69.00元
《计算群体智能基础》全面系统地介绍了计算群体智能中的粒子群优化(PSO)和蚁群优化(ACO)的基本概念、基本模型、理论分析及其应用。在简要介绍基本优化理论和总结各类优化问题之后,重点介绍了社会网络结构如何在个体间交换信息以及个体聚集行为如何形成一个功能强大的有机体。在概述了进化计算后,重点论述了粒子群优化和蚁群优化的基本模型及其各种变体,给出了分析粒子群优化模型的一种通用方法,证明了基于蚂蚁行为实......一起来看看 《计算群体智能基础》 这本书的介绍吧!