iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

首先要先介紹的是 Namespace, Label & Annotations。

前幾天我們使用指令加入了兩台 Worker 節點,一台 Master 節點跟兩台 Worker 節點組成了 Cluster ,在開發或部屬專案時基本上都是部屬至同一個 Cluster 中,由 Cluster 中所有 Node 共同分擔。

如果今天有個專案需要有一個開發環境及一個生產環境,或是有多個專案需要開發時,這時候如果全部混在一起,在管理時可能會造成不便,用 Cluster 來管理又稍嫌麻煩,需要重複將 Node 再加入新的 Cluster ,因此就有了 Namespace 用來建立一個虛擬的小 Cluster ,方便我們進行管理。

在 Kubernetes 中我們可以透過 Namespace 來為專案建立一個單獨的區域,這樣即使我們之後同時使用多個專案時,也可以透過 Namespace 區分各個專案的資源,避免在更動的時候去不小心動到不屬於它的東西;Label 及 Annotations 則是可以對我們專案中的各個資源做個標記,例如開發版本或是其他的標記,有利於我們在查看各個資源時,更容易理解各個資源的屬性,兩者之間的差異就是 Label 是提供給 Kubernetes 內部使用的,讓各個資源可以互相連結;而 Annotations 則是給開發者看的。

這篇會先介紹如何建立 Namespace ,Label 及 Annotations 會在之後介紹各個資源時候一起說明。

首先 Kubernetes 安裝好之後,會有 4 個預設的 Namespace 。

  1. default
    預設的 Namespace 名稱為 default ,沒特別指定 Namespace 都是資源都是在這個 Namespace 中。
  2. kube-system
    Kubernetes 中比較特別的資源都會存放在這個 Namespace 底下,通常是與 Kubernetes 系統相關的資源。
  3. kube-public
    Kubernetes 中可被所有使用者讀取的資源都會放在這個 Namespace 底下,通常也都是系統相關(沒有特殊需求正常是不會放在這裡的,因此通常是與系統相關)。
  4. kube-node-lease
    這個 Namespace 主要是放置與節點有關的資源,用來檢測節點是否故障。

講完了預設的 Namespace ,那我們要如何建立自己的 Namespace 呢?

# 皆是在 Master 節點上下指令
$ kubectl create namespace <namespace_name>
# 範例
$ kubectl create namespace k8s-test

這邊需要注意一下, Namespace 跟 Label 有著命名規則,須遵守一定的規範(Annotations 因為 Kubernetes 系統不會使用,因此沒有特別限制)。大致有以下 3 點。

  1. 最多不超過 63 個字符
  2. 只能包含數字、小寫字母及 '-' (Dash,減號)
  3. 必須以數字、小寫字母開頭及結尾

創建好之後,就可以來查看一下我們剛剛建立的 Namespace 了,我們可以透過下面這個指令來查看。

$ kubectl get namespace
# or
$ kubectl get ns

接著我們可以設定我們預設的 Namespace ,這樣我們就不用擔心沒加指令,把資源放到錯誤的 Namespace 中。

$ kubectl config set-context --current --namespace=<insert-namespace-name-here>

切換完成之後,我們可以用下面的指令來驗證一下。

# Validate it
$ kubectl config view --minify | grep namespace:

如果我們要刪除某個 Namespace 也很簡單。

# 皆是在 Master 節點上下指令
$ kubectl delete namespace <namespace_name>
# 範例
$ kubectl delete namespace k8s-test

這樣就可以刪除了。

詳細內容可參考官方文件 Namespace

那麼就先到這邊,因為剛進入 Kubernetes 的世界,因此先講一些可以幫助各位將 Kubernetes 整理得更有條理的東西,避免後面一片混亂。

大家掰~掰~


上一篇
Day 14 Worker Node
下一篇
Day 16 ConfigMap & Secret
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言