首先要先介紹的是 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 。
講完了預設的 Namespace ,那我們要如何建立自己的 Namespace 呢?
# 皆是在 Master 節點上下指令
$ kubectl create namespace <namespace_name>
# 範例
$ kubectl create namespace k8s-test
這邊需要注意一下, Namespace 跟 Label 有著命名規則,須遵守一定的規範(Annotations 因為 Kubernetes 系統不會使用,因此沒有特別限制)。大致有以下 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 整理得更有條理的東西,避免後面一片混亂。
大家掰~掰~