iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
Cloud Native

docker系列 第 24

Day24 Namespace, Label, Annotations

  • 分享至 

  • xImage
  •  

在前幾天,我們透過指令成功添加了兩台 Worker 節點,與一台 Master 節點一同構成了一個 Cluster。在開發或部署專案時,通常會將它們部署到同一個 Cluster 中,由 Cluster 中的所有節點共同分擔工作。

當我們有多個專案需要區分開發環境和生產環境,或者有多個專案需要同時開發時,將它們混在一起管理可能會變得不便。使用 Cluster 進行管理又稍顯繁瑣,因為需要重複將節點添加到新的 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 中特殊的資源通常存放在 kube-system Namespace 中,這些資源與 Kubernetes 系統相關。

3.kube-public
kube-public Namespace 中存放可被所有使用者讀取的資源,通常也與系統相關。

4.kube-node-lease
這個 Namespace 主要存放與節點有關的資源,用於檢測節點是否故障。
https://ithelp.ithome.com.tw/upload/images/20231009/20150239fMtOOFvENE.png
談到了預設的 Namespace,接下來我們看看如何建立自己的 Namespace。

# 在 Master 節點上執行以下指令
kubectl create namespace <namespace_name>
# 範例
kubectl create namespace k8s-test

需要注意的是,Namespace 和 Label 都有命名規則,必須遵從以下三點:

名稱最多不超過 63 個字符。
只能包含數字、小寫字母和連字符(Dash)。
名稱必須以數字或小寫字母開頭和結尾。
創建完成後,我們可以查看新建的 Namespace,使用以下指令:

kubectl get namespace
# 或者
kubectl get ns

https://ithelp.ithome.com.tw/upload/images/20231009/20150239uaq1Cxf8XC.png

接下來,我們可以設定我們的預設 Namespace,這樣我們就不用擔心忘記指定 Namespace,將資源放到錯誤的 Namespace 中。

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

切換完成後,可以使用以下指令來驗證:

# 驗證
kubectl config view --minify | grep namespace:

https://ithelp.ithome.com.tw/upload/images/20231009/20150239M3UkyJfsZF.png

如果我們想刪除某個 Namespace,也很簡單:

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

這樣就完成了刪除。

如需更詳細的內容,可以參考官方文件Namespace的部分。


上一篇
Day23 Worker Node
下一篇
Day25 ConfigMap & Secret
系列文
docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言