命名空间,即 namespace,是对一组资源和对象的抽象集合,比如可以将系统内部的对象划分为不同的项目组或用户组。
在一个K8S集群中,可以存在多个逻辑上彼此隔离的命名空间。
K8S集群启动之后,会创建默认的几个namespace。
kubectl get namespace
分别介绍如下:
通过命名空间名称,可以查看该命名空间下的详细信息。
kubectl describe namespace kube-system
详情中的内容介绍如下:
Status
Active表示命名空间正在使用中;Terminating 正在删除命名空间ResourceQuota
针对当前命名空间做的资源限制LimitRange
针对当前命名空间中的每个组件,做的资源限制命名空间的名称,只能由字母、数字、下划线、连接线等字符组成,并且开头和结尾都必须使用字母、数字或者字母数字组合。
创建命名空间的指令为
kubectl create namespace mynamespace
也可简写为
kubectl create ns mynamespace
创建并查看当前K8S中的namespace
由配置文件进行创建,如使用配置文件 test.yaml 创建的命名空间为 test。
配置文件内容如下:
kind: Namespace
apiVersion: v1
metadata:
name: test
labels:
name: test
执行以下指令生效文件
kubectl apply -f test.yaml
创建并查看当前K8S中的namespace
执行以下指令,可删除命名空间
kubectl delete namespace mynamespace
或者使用 namespace 的简写形式
kubectl delete ns mynamespace
删除并查看当前K8S中的namespace
pod是k8s集群能够调度和可部署的最小单元,是在K8S中创建和管理,是一个或多个容器的组合,这些容器共享存储、网络和命名空间。
pod中的容器总是并置(co-located)的并且一同调试,在共享的上下文中运行。
pod中的共享上下文包括一组linux命名空间、控制组(cgroup)和用来隔离容器的技术。在pod上下文中,每个独立的应用会进一步实施隔离。
pod类似于共享命名空间并共享文件系统卷的一组容器。
pod中的资源是临时性的,当节点宕机时,pod及其资源将会丢失。
在master节点中,创建一个名为simple_nginx.ymal文件,用来创建一个nginx容器。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.1
ports:
- containerPort: 8081
文件中的
生效配置文件并创建pod
kubectl apply -f simple_nginx.yaml
kubectl get pod --all-namespaces
在创建POD时,没有指定命名空间,所以默认在 default 下,如果状态不是 running,需要等待一段时间,待容器下载完成后即可。
登录dashboard,进入到工作负载页面,可以看到当前的nginx POD已经处于 running 状态。
创建POD的yaml文件 --> 执行apply --> 通知master节点apiserver --> 存储POD信息到etcd --> 通知master节点apiserver --> Scheduler为pod分配节点 --> 更新POD信息到etcd --> 通知apiserver --> 通知对应节点上kubelet调用docker创建pod容器
pod遵循预定义的生命周期,起始于 Pending 阶段,如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。
与 docker 中的容器一样,Pod 也是相对临时性的实体。Pod被创建的同时被赋予一个唯一的ID,并被调度到对应节点,并在终止(根据重启策略)或者删除之前一直运行在该节点。
如果一个节点发生宕机,调度到该节点的Pod也被计划在给定超时期限结束后删除。
Pod状态如下:
状态 | 描述信息 |
---|---|
Pending | Pod被k8s系统接受,但有一个或者多个容器尚未创建也未执行。 此阶段包括等待Pod被调度的时间和通过网络下载镜像的时间。 |
Running | Pod已经绑定到了某个节点,Pod中所有的容器都已被创建。 至少有一个容器仍在运行,或者正处于启动或重启状态。 |
Succeeded | Pod中的所有容器都已成功终止,并且不会再重启。 |
Failed | Pod中的所有容器都已终止,并且至少有一个容器是因为失败终止。 即容器以非0状态退出或者被系统终止。 |
Unknown | 因为某些原因无法取得 Pod 状态。 这种情况通常是因为与 Pod 所在主机通信异常导致。 |
pod结构图
通过pod名称,查询POD信息
kubectl describe pod nginx
pod是运行在node1节点。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。