網站首頁 編程語言 正文
正文
命名空間系統對計算來說并不陌生,我們大多數人可能在幾乎所有編程語言中都見過命名空間,無論您在哪里遇到命名空間,其基本目的都是相同的:用于邏輯分組。
同樣,在 Linux 內核中,也有命名空間的概念,比如存儲和網絡命名空間。每個容器也有自己的存儲命名空間和網絡命名空間,用于資源的隔離和分配。
Kubernetes命名空間是指由同一物理集群支持的虛擬集群,此選項專為在多個用戶分布在多個工作團隊或項目的環境中使用而設計。
本文將介紹如何創建Kubernetes命名空間。
命名空間類型
Kubernetes 中有三種命名空間。
- Default:默認命名空間用于沒有其他命名空間的對象。
- Kube-system:Kubernetes 系統起源對象的命名空間。
- Kube-public:用于需要對所有用戶公開可用的資源的命名空間。
查看命名空間
可以使用以下命令查看當前的命名空間:
kubectl get namespaces
它將列出現有的命名空間、狀態等。
如果想知道特定命名空間的概要,可以使用以下命令:
Kubectl get namespaces <name>
還可以使用以下命令獲取特定命名空間的詳細描述:
Kubectl describe namespace <name>
描述顯示資源配額(如果指定)和資源范圍,其中資源配額顯示命名空間可以使用的資源總量,資源范圍顯示可以消耗的最小或最大資源。
還顯示名稱空間是活動的還是終止的,這是任何命名空間的兩種狀態,活動命名空間是當前使用的命名空間,而終止命名空間是正在刪除且無法進一步使用的命名空間。
創建命名空間
嘗試在不存在的特定命名空間中創建一個 pod。
要在“test-env”命名空間中創建一個 pod,請執行以下命令。
kubectl run nginx --image=nginx --namespace=test-env #嘗試在不存在的命名空間中創建一個pod。
Pod 不會在不存在的命名空間中創建,因此我們首先需要創建一個命名空間。
要創建命名空間“test-env”,請執行以下命令(k8s create namespace)。
kubectl create namespace test-env #創建命名空間
kubectl get namespace #獲取命名空間列表
現在我們有了一個命名空間,我們想在其中創建一個 pod。
要在我們創建的命名空間中創建一個 pod,請將 --namespace=test-env 選項傳遞給命令。
kubectl run nginx --image=nginx --namespace=test-env #在命名空間中創建一個pod。
如果您嘗試在不指定命名空間的情況下獲取 pod,您將無法獲取 pod 的詳細信息。
kubectl get pods #獲取pod列表
要獲取屬于“test-env”命名空間的 pod 的詳細信息,請使用以下命令。
kubectl get pods --namespace=test-env #獲取指定命名空間中的pod列表
如果要將命名空間設置為默認命名空間,則不需要在命令中指定命名空間選項,請使用以下命令。
kubectl config set-context --current --namespace=test-env #設置默認命名空間
現在無需在命令中指定命名空間即可獲取 pod 的詳細信息。
kubectl get pods #從默認命名空間中獲取 pod 列表
要切換到默認命名空間,請使用以下命令。
kubectl config set-context --current --namespace=default #檢查命名空間為默認值
kubectl get pods #獲取pod列表
要檢查哪個是默認命名空間,請使用以下命令。
kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.
kubectl config view --minify | grep namespace:
檢查哪些 Kubernetes 資源是命名空間,執行以下命令。
kubectl api-resources --namespaced=true #獲取可以在命名空間中的Kubernetes對象
要查看哪些 Kubernetes 資源不在命名空間中,請使用以下命令。
kubectl api-resources --namespaced=false #獲取永遠不能在命名空間中的Kubernetes對象列表
您可以使用下面提到的命令獲取命名空間的詳細信息。
kubectl get namespaces #獲取命名空間列表。
kubectl describe namespace test-env #獲取命名空間的詳細信息。
命名空間也可以使用 .yml 文件創建。
vim namespace-using-file.yml #創建命名空間定義文件
執行以下命令以創建對象定義文件中指定的命名空間。
kubectl create -f namespace-using-file.yml #使用.yml文件創建命名空間
kubectl get namespaces #獲取命名空間列表
當您不再需要命名空間時,可以使用以下命令將其刪除。
kubectl get namespaces #獲取命名空間列表
kubectl delete namespaces env-prod test-env #刪除一個命名空間
kubectl get namespaces #獲取命名空間列表
使用命令“kubectl change namespace”切換到不同的命名空間。
結論
Kubernetes 使得用戶可以自由地在自己的空間中使用分配的資源進行工作,以最佳方式利用他們的時間和資源,而不會在團隊之間造成混亂,Kubernetes 命名空間有助于應用程序開發,并使開發人員的日常任務易于完成。
原文鏈接:https://juejin.cn/post/7165474139069906952
相關推薦
- 2022-07-27 Python實現倉庫管理系統_python
- 2022-06-04 服務器中TIME_WAIT狀態過多時的排查分析_應用技巧
- 2022-06-21 詳解C#中檢查null的語法糖_C#教程
- 2022-10-29 python使用正則表達式匹配反斜杠\遇到的問題_python
- 2022-05-05 Entity?Framework實現數據遷移_實用技巧
- 2022-10-13 Python?YAML文件的讀寫操作詳解_python
- 2023-03-23 Rust應用調用C語言動態庫的操作方法_Rust語言
- 2022-08-17 python可視化分析繪制帶趨勢線的散點圖和邊緣直方圖_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支