本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。

1、Namespace

Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离
默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的”组”,以方便不同的组的资源进行隔离使用和管理。
可以通过kubernetes的授权机制,将不同的namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等等,来实现租户可用资源的管理
image.png
kubernetes在集群启动之后,会默认创建几个namespace

1.1、创建

  1. kubectl create ns dev

1.2、查看

  1. # 1 查看所有的ns 命令:kubectl get ns
  2. [root@master ~]# kubectl get ns
  3. NAME STATUS AGE
  4. default Active 45h
  5. kube-node-lease Active 45h
  6. kube-public Active 45h
  7. kube-system Active 45h
  8. # 2 查看指定的ns 命令:kubectl get ns ns名称
  9. [root@master ~]# kubectl get ns default
  10. NAME STATUS AGE
  11. default Active 45h
  12. # 3 指定输出格式 命令:kubectl get ns ns名称 -o 格式参数
  13. # kubernetes支持的格式有很多,比较常见的是wide、json、yaml
  14. [root@master ~]# kubectl get ns default -o yaml
  15. apiVersion: v1
  16. kind: Namespace
  17. metadata:
  18. creationTimestamp: "2021-05-08T04:44:16Z"
  19. name: default
  20. resourceVersion: "151"
  21. selfLink: /api/v1/namespaces/default
  22. uid: 7405f73a-e486-43d4-9db6-145f1409f090
  23. spec:
  24. finalizers:
  25. - kubernetes
  26. status:
  27. phase: Active
  28. # 4 查看ns详情 命令:kubectl describe ns ns名称
  29. [root@master ~]# kubectl describe ns default
  30. Name: default
  31. Labels: <none>
  32. Annotations: <none>
  33. Status: Active # Active 命名空间正在使用中 Terminating 正在删除命名空间
  34. # ResourceQuota 针对namespace做的资源限制
  35. # LimitRange针对namespace中的每个组件做的资源限制
  36. No resource quota.
  37. No LimitRange resource.

1.3、删除

  1. kubectl delete ns dev

1.4、配置方式

首先准备一个yaml文件:ns-dev.yaml

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: dev

然后就可以执行对应的创建和删除命令了
创建:kubectl create -f ns-dev.yaml
删除:kubectl delete -f ns-dev.yaml

2、Pod

3、Label

4、Deployment

5、Service