Kubernetes 强大的namespace
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