入门实战-Namespace
一、 Namespace
介绍
Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多 租户的资源隔离。
默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间 进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配 到不同的Namespace中,可以形成罗辑上的“组”,以方便不同的组的资源进行隔离使用和管理。
可以通过kubernetes的授权机制,将不同的namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等 等,来实现租户可用资源的管理。
k8s创建后,会默认创建以下几个namespace
对namespace的操作
# 查看所有的ns
kubectl get ns
# 查看指定的namespace
kubectl get ns default
# 指定输出格式wide、json、yaml
kubectl get ns default -o wide
# 查看指定的namespace的描述信息
kubectl descripbe ns default
# 创建一个namespace
kubectl create ns dev
# 删除
kubectl delete ns dev
# 使用文件方式创建namespace,暂时先不用管具体内容是什么意思,后面会讲到
apiversion: v1
kind: Namespace
metadata:
name: dev
# 然后就可以创建 、删除
kubectl create -f ns-dev.yml
kubectl delete -f ns-dev.yml
二、Pod
介绍
pod 是Kubernetes集群进行管理的最小单位,程序运行必须部署在容器中,而容器必须运行在pod中,pod可以认为是容器的封装,一个pod可以存在一个或多个容器
对pod的操作
创建并运行pod
没有单独提供运行pod的命令,是通过pod控制器来实现的
# 命令格式 kubectl run (pod控制器名称) [参数]
# --image 指定容器的镜像
# --port 指定暴露的端口
# --namespace 指定命名空间
kubectl run nginx --image=nginx:1.17.1 --port=