iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 9
1
DevOps

從題目中學習k8s系列 第 9

【從題目中學習k8s】-【Day9】第一題 - Pod Scheduling 1


title: 【從題目中學習k8s】-【Day9】第一題 - Pod Scheduling 1
description: 以無比的恆毅力堅持30天鍊成鐵人--連續30天,一天發表一篇IT技術文章

【從題目中學習k8s】-【Day9】第一題 - Pod Scheduling 1

tags: DevOps CICD K8s Docker

Question

Schedule a Pod as follows:

Name:nginx-kusc00101

Image:nginx

Nodeselector:disk=ssd

概念

這題是個Pod Scheduling的概念題,也就是如何將Pod運行在適合的Node上。考點在labelnodeSelector。那麼label是甚麼呢?它其實就是一個key:value的結構,以key對應的value來區隔它們屬性的異同。label可以被附加到各種resource-objects上,例如NodePodService等。一個label可以被增加到任意數量的物件上;一個物件也可以添加任意數量的label
有了label後就可以利用Selector將共同label的物件一次選取,實現多維度的資源分組管理功能。Pod中定義label其實很簡單,定義在Pod的YAML就行了。或也可以透過指令方式。

常用的label包含release(版本)、environment(環境)、tier(架構)、partition(分區)、track(品質管控)等。

label常見操作如下:

  • 查看Pod label
$ kubectl get po --show-labels
  • 查看特定labelPod
$ kubectl get po --selector <key>=<value>
  • 新增Pod label
$ kubectl label po <pod-name> <key>=<value>
  • 刪除Pod label
$ kubectl label po <pod-name> <key>-

Nodelabel則可以透過以下命令新增:

$ kubectl label nodes <node-name> <key>=<value>
## 例如
$ kubectl label nodes g8node1 cpu=power

刪除label的話則是:

$ kubectl label nodes <node-name> <key>=<value>-
## 例如
$ kubectl label nodes g8node1 cpu=power-

nodeSelector則是將Pod到某Node上最簡單、直接的調度方式,直接利用label選取即可。

那這題步驟其實就很簡單了:

  1. 創建一個Pod
  2. nodeSelectorPod調度到labeldisk=ssdNode

Answer


## 先透過kubectl run命令建立Pod基本YAML
$ kubectl run nginx-kusc00101  --image=nginx --restart=Never --dry-run=client -o yaml> q1.pod

## 將YAML 修改為以下
$ vim q1.pod

apiVersion: v1
kind: Pod 
metadata:
  creationTimestamp: null
  labels:
    run: nginx-kusc00101
  name: nginx-kusc00101
spec:
  containers:
  - image: nginx
    name: nginx-kusc00101
    resources: {}
  ## nodeSelector選擇disk: ssd
  nodeSelector:
    disk: ssd
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

## 創立物件
$ kubectl apply -f q1.pod

結論

K8s中的Scheduling方式非常多,但是今天只是第一道題,就先來個簡單的label問題,其他的方式以後也會陸續介紹到。好啦,今天就到這囉~ 謝謝大家~

參考資料

Labels and Selectors
Assign Pods to Nodes

Thank you!

You can find me on

  • george4908090@gmail.com

上一篇
【從題目中學習k8s】-【Day8】K8s常用指令 (Cheat Sheet)&解題技巧
下一篇
【從題目中學習k8s】-【Day10】第二題 - Deployment Rolling Update
系列文
從題目中學習k8s31

尚未有邦友留言

立即登入留言