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
posted @ 2020-02-02 04:27  jasonminghao  阅读(1683)  评论(0编辑  收藏  举报