前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器编排引擎Kubernetes 05——命名空间和POD

容器编排引擎Kubernetes 05——命名空间和POD

原创
作者头像
用户8100582
修改2024-02-02 19:36:59
1730
修改2024-02-02 19:36:59
举报
文章被收录于专栏:微服务化微服务化

系列目录

  1. 容器编排引擎Kubernetes 01——一文带你认识K8S
  2. 容器编排引擎Kubernetes 02——k8s安装配置
  3. 容器编排引擎Kubernetes 03——初始化集群
  4. 容器编排引擎Kubernetes 04——部署Dashboard
  5. 容器编排引擎Kubernetes 05——命名空间和POD
  6. 容器编排引擎Kubernetes 06——kubectl常用命令
  7. 容器编排引擎Kubernetes 07——Deployment介绍及使用
  8. 容器编排引擎Kubernetes 08——Service介绍及使用
  9. 容器编排引擎Kubernetes 09——资源文件的介绍及使用
  10. 容器编排引擎Kubernetes 10——在k8s集群中部署项目

1 命名空间

命名空间,即 namespace,是对一组资源和对象的抽象集合,比如可以将系统内部的对象划分为不同的项目组或用户组。

在一个K8S集群中,可以存在多个逻辑上彼此隔离的命名空间。

1.1 查看K8S中的命名空间

K8S集群启动之后,会创建默认的几个namespace。

kubectl get namespace

分别介绍如下:

  • default 所有未指定namespace的对象,都会被分配在default命名空间中
  • kube-node-lease 集群节点之间的心跳维护,v1.13开始引入
  • kube-public 此命名空间下的资源可以被所有人访问,包括未认证用户
  • kube-system 所有由K8S系统创建的资源,都处于这个命名空间中
  • kubernetes-dashboard dashboard所在命名空间

1.2 查看命名空间详细信息

通过命名空间名称,可以查看该命名空间下的详细信息。

kubectl describe namespace kube-system

详情中的内容介绍如下:

  • Status Active表示命名空间正在使用中;Terminating 正在删除命名空间
  • ResourceQuota 针对当前命名空间做的资源限制
  • LimitRange 针对当前命名空间中的每个组件,做的资源限制

1.3 创建命名空间

命名空间的名称,只能由字母、数字、下划线、连接线等字符组成,并且开头和结尾都必须使用字母、数字或者字母数字组合。

1.3.1 使用指令创建

创建命名空间的指令为

kubectl create namespace mynamespace

也可简写为

kubectl create ns mynamespace

创建并查看当前K8S中的namespace

1.3.2 使用配置文件创建

由配置文件进行创建,如使用配置文件 test.yaml 创建的命名空间为 test。

配置文件内容如下:

代码语言:yaml
复制
kind: Namespace

apiVersion: v1

metadata:

  name: test

  labels: 

    name: test

执行以下指令生效文件

kubectl apply -f test.yaml

创建并查看当前K8S中的namespace

1.4 删除命名空间

执行以下指令,可删除命名空间

kubectl delete namespace mynamespace

或者使用 namespace 的简写形式

kubectl delete ns mynamespace

删除并查看当前K8S中的namespace

2 POD

2.1 pod是什么

pod是k8s集群能够调度和可部署的最小单元,是在K8S中创建和管理,是一个或多个容器的组合,这些容器共享存储、网络和命名空间。

pod中的容器总是并置(co-located)的并且一同调试,在共享的上下文中运行。

pod中的共享上下文包括一组linux命名空间、控制组(cgroup)和用来隔离容器的技术。在pod上下文中,每个独立的应用会进一步实施隔离。

pod类似于共享命名空间并共享文件系统卷的一组容器。

2.2 pod的特点

  • 最小的部署单元
  • 一个pod中的容器共享网络命名空间
  • 每个pod包含一个或多个紧密相关的用户业务容器
  • pod是多进程设计,运用多个应用程序

pod中的资源是临时性的,当节点宕机时,pod及其资源将会丢失。

2.3 创建pod

在master节点中,创建一个名为simple_nginx.ymal文件,用来创建一个nginx容器。

代码语言:yaml
复制
apiVersion: v1

kind: Pod

metadata:

  name: nginx

spec:

  containers:

  - name: nginx

    image: nginx:1.15.1

    ports:

    - containerPort: 8081    

文件中的

  • spec 是容器说明
    • 表示数组,可以有多条元素

生效配置文件并创建pod

kubectl apply -f simple_nginx.yaml

2.4 查看POD状态

2.4.1 在命令行中查看

kubectl get pod --all-namespaces

在创建POD时,没有指定命名空间,所以默认在 default 下,如果状态不是 running,需要等待一段时间,待容器下载完成后即可。

2.4.2 在dashboard中查看

登录dashboard,进入到工作负载页面,可以看到当前的nginx POD已经处于 running 状态。

2.5 POD创建过程

代码语言:Graph
复制
创建POD的yaml文件 --> 执行apply --> 通知master节点apiserver --> 存储POD信息到etcd --> 通知master节点apiserver --> Scheduler为pod分配节点 --> 更新POD信息到etcd --> 通知apiserver --> 通知对应节点上kubelet调用docker创建pod容器

2.6 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结构图

2.7 查看pod详细信息

通过pod名称,查询POD信息

kubectl describe pod nginx

pod是运行在node1节点。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列目录
  • 1 命名空间
    • 1.1 查看K8S中的命名空间
      • 1.2 查看命名空间详细信息
        • 1.3 创建命名空间
          • 1.3.1 使用指令创建
          • 1.3.2 使用配置文件创建
        • 1.4 删除命名空间
        • 2 POD
          • 2.1 pod是什么
            • 2.2 pod的特点
              • 2.3 创建pod
                • 2.4 查看POD状态
                  • 2.4.1 在命令行中查看
                  • 2.4.2 在dashboard中查看
                • 2.5 POD创建过程
                  • 2.6 pod的生命周期
                    • 2.7 查看pod详细信息
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档