iT邦幫忙

2

Kubernetes 超入門

  • 分享至 

  • xImage
  •  

Kubernetes 超入門

Kubernetes 是一種讓使用者管理Cluster 的一種工具,能更輕鬆的管理node。本身提供Service Discovery 與 load-balance 的功能,像是自動配置IP等等。此外也提供進一步的操作,如設定記憶體限制、資料映射的區域等等。但更重要的事情是提供Self-healingAutomated rollouts and rollbacks,讓正在運行的node 可以自動的上下線,甚至可以自行修復node。

From personal blog

Pod

是在kubernetes 中最小單位,一個Pod指的是一個小的服務集,換句話說Pod 包含許多的container即微服務,但一個pod 不代表是一個Node。若是對比 docker 生態系,Pod 類似 docker-compose,可設定記憶體配置、mount disk 、cpu 數量等等,且都是透過yaml檔案進行設置。

Pod 可以想成 group of container

Pod ymal 設定

Pod ymal 檔案主要有幾個必填項目[1]:

  • apiVersion - Which version of the Kubernetes API you're using to create this object
  • kind - What kind of object you want to create
  • metadata - Data that helps uniquely identify the object, including a name string, UID, and optional namespace
  • spec - What state you desire for the object

那一般來說一個Pod 的設定檔會包含兩個Object, spec、status這兩個Object,spec 主要是定義Pod 有哪些container運行與設定,status主要是提供Pod狀態讓 controller (control plane)去更新、撤銷[2]。換句話說spec 是在 yaml 檔案進行設定Pod的狀態,然而status則是需透過 api或者cmd的方式讀取目前Pod 的狀態。

例如下列 nginx 範例。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

範例實作

由於k8s 本身的硬體需求比較龐大,因此各家機構紛紛推出自己的k8s開放工具,如Ubuntu基金會的Micro-K8s 或者 Rancher 的 k3s...等等,本範例使用k3s 進行解說,測試環境作業系統為ubuntu 20.04。

Attachment demo.yml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

step 1.安裝k3s

// install k3s
curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -

step 2.執行demo.yml 檔案

sudo kubectl apply -f demo.yml

step 3.取得status

sudo kubectl get pod/nginx-demo -o yaml

status example

Reference

[1] https://kubernetes.io/docs/home/
[2] https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
[3] https://rancher.com/docs/k3s/latest/


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
雷N
iT邦研究生 1 級 ‧ 2022-02-10 13:06:00

期待有更多k8s針對我這種新手的超入門文章

感謝你的回應,我的drafts 其實是在https://xiang753017.gitbook.io/zixiang-blog/
如果對於文章內容有指教的話歡迎留言給我XD

我要留言

立即登入留言