因為 ubernete 剛好有 8 個字母
所以就把中間的字母用 8 代替了
k8s 是一套用來自動部署、擴展和管理容器化應用程式的開源系統。
minikube 是由 Google 發布的一個輕量級工具。讓開發者可以在本機上輕易架設一個 Kubernetes 叢集(Cluster)
hyperkit 是一套 for macOS 的虛擬機器監視器(hypervisor),透過這個 driver 來啟動 minikube。
minikube start --vm-driver=hyperkit
ctl 全名其實就是 control 的意思,所以 kubectl 意思就是 control kubernetes 的工具啦!
在官網上是這樣說明的
Pods are the smallest deployable units of computing that can be created and managed in Kubernetes.
簡單來說 Pod 就是 k8s 中可以執行的最小單位
由於 Pod 只是一個可以被執行的最小單位,可想而知在一個 Pod 內一定有能被執行的內容
這些可以被執行內容的我們稱之為 container
簡單來說 Pod 的架構圖會長這樣:
在這些 Pod 中的 container 其實是用 docker 跑起來的
在 k8s 中預設的 docker image 是從 dockerHub 上面抓下來
當然也可以自己寫 Dockerfile 來建立 image
不過就要加上一些設定讓 k8s 在建立 Pod 的時候優先以本地端的 image 為主
imagePullPolicy: IfNotPresent
替 Pod 上標籤,讓這些 Pod 可以方便地被分類分群
而 Label 就是一對具有辨識度的 key-value pair,所以可能會這樣寫
labels:
tier: frontend
env: dev
Labels 的一種,一樣提供識別用,只不過這個識別用是給開發人員看的,k8s 並不會採用此標籤
annotations:
version: latest
contact: andychen@koodata.com.tw
在官網上是這樣說明的:
An abstract way to expose an application running on a set of Pods as a network service.
service 的存在就是建立一個網路連線通道讓應用程式可以正確地連結到正在運行的 Pods
加上 service 之後,目前 k8s 的流程圖會長這樣:
在官網上是這樣說明的
An API object that manages external access to the services in a cluster, typically HTTP.
Ingress 可以幫助我們統一一個對外的 port number,並且根據 hostname 或是 pathname 決定封包要轉發到哪個 Service 上
再加上 Ingress 之後,目前 k8s 的流程圖會長這樣:
Volumes 為 k8s cluster 用來儲存資料的地方,不但能將 container 的資料存下來,同時也能利用掛載(mounting) 的方式提供給其他 Pod 使用
當新增一個新的 Pod 的時候,k8s 就會在這個 Pod 新增一個 emptyDir ,讓這個 Pod 內所有的 container 都可以存取這個 emptyDir ,當 Pod 被移除時,該 emptyDir 也會跟著被移除。
在 Pod 物件上,掛載 Node 的資料夾或檔案,簡單來說就是直接把機器上的檔案掛載到 Pod 中
使用雲端硬碟的 Volumes ,常見的有 AWS EBS、Google Disk、Microsoft Azure Disk
利用 NFS 的原理存取同一個網域下的機器中的資料
用來儲存 k8s 上的機密資料
例如使用者帳密、ssl等等
首先準備一份比較機密的資料,這邊用 tls 憑證做範例
kubectl create secret generic secretName --from-file=file1Path --from-file=file2Path
kubectl get secret
相較於 Secret,ConfigMap 通常是用來存放比較不機密但偏向部署面的資料
例如 nginx 設定、 DB IP 等等
首先準備一份部署面的設定檔,這邊以 nginx 設定檔為範例
kubectl create configmap configName --from-file=filePath
kubectl get configmap
Namespace 就是抽象的 cluster
讓我們能根據專案不同,將原本擁有實體資源的單一 k8s cluster
劃分成幾個不同的 virtual cluster
預設所有建立的 Pod 都會擺放在 default 這個 Namespace
下次分享會的主題會是 k8s 進階觀念
謝謝大家!