NameSpace作用
初識:java的Package,Python的模塊,C++的Namespace
Namespace(命名空間)是kubernetes系統中的另一個非常重要的概念,簡稱:NS,NS在很多情況下用於實現多租戶的資源隔離
例子:cms項目用到數據庫,商場項目也需要數據庫,同一個namespace下面不允許出現兩個service叫mysql。
隔離對象:
- 資源對象的隔離:Service、Deployment、Pod
- 資源配額的隔離:Cpu、Memory
NameSpace划分方式
- 按環境划分:dev、test
- 按團隊划分
- 自定義多級划分
NameSpace管理命令
// 創建namespace
kubectl create namespace test
// 查看已創建的namespace
kubectl get namespace
// 刪除namespace(會將該命名空間下的所有service都會刪除)
kubectl delete namespace test
// 查看所有namespace下的所有資源
kubectl get all --all-namespaces
NameSpce案例
1、yaml方式創建NS
apiVersion: v1
kind: Namespace
metadata:
name: dev
2、創建Pod並指定NS
apiVersion: apps/v1
kind: Deployment
metadata:
name: myweb
# 指定namespace
namespace: dev
spec:
replicas: 2
selector:
matchLabels:
name: myweb
template:
metadata:
labels:
name: myweb
spec:
containers:
- name: nginx
image: 10.0.0.33/base_images/mynginx:4.0
ports:
- containerPort: 80
---
# service
apiVersion: v1
kind: Service
metadata:
name: myweb
# 指定namespace
namespace: dev
spec:
type: NodePort
selector:
name: myweb
ports:
- port: 80
targetPort: 80
nodePort: 30010
3、檢查對應的pod是否在dev名稱空間下運行
[root@k8s-master01 Namespace]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
myweb-689c79c879-l8875 1/1 Running 0 5m30s
myweb-689c79c879-lcfkz 1/1 Running 0 5m30s
