云原生之Kubernetes资源管理,Namespace、Pod、Label、Deployment、Service基本使用

资源管理介绍 ●Kubernetes的本质就是一个集群系统,用户可以在集群中部署各种服务。所谓的…

资源管理介绍

●Kubernetes的本质就是一个集群系统,用户可以在集群中部署各种服务。所谓的部署服务,其实就是在Kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。
●Kubernetes的最小管理单元是Pod而不是容器,所以只能将容器放在Pod中,而Kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。
●Pod提供服务之后,就需要考虑如何访问Pod中的服务,Kubernetes提供了Service资源实现这个功能。
●当然,如果Pod中程序的数据需要持久化,Kubernetes还提供了各种存储系统。

命令式对象管理:只能操作活动对象,无法审计、跟踪,用法

命令式对象配置:项目大的时候,配置文件多,操作麻烦

Namespace

  • Namespace是kubernetes系统中一种非常重要的资源,它的主要作用是用来实现多套系统的资源隔离或者多租户的资源隔离

  • 默认情况下,kubernetes集群中的所有Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那么此时就可以将两个Pod划分到不同的Namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组”,以方便不同的组的资源进行隔离使用和管理。

  • 可以通过kubernetes的授权机制,将不同的Namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等等,来实现租户可用资源的管理

kubernetes在集群启动之后,会默认创建几个namespace

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

Pod

  • Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。

  • Pod可以认为是容器的封装,一个Pod中可以存在一个或多个容器。

kubernetes在集群启动之后,集群中的各个组件也是以Pod方式运行的,可以通过下面的命令查看:

创建并运行Pod,主要是通过Pod控制器来实现

命令式对象配置,新建pod-nginx.yaml

执行创建和删除命令

Label

Label是kubernetes的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。

Label的特点:

  • 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等。
  • 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去。
  • Label通常在资源对象定义时确定,当然也可以在对象创建后动态的添加或删除。
  • 可以通过Label实现资源的多纬度分组,以便灵活、方便地进行资源分配、调度、配置和部署等管理工作,比如版本标签、环境标签等

为资源打标签

命令式对象配置

执行创建和删除命令

Deployment

  • 在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。

  • Pod控制器用于Pod的管理,确保Pod资源符合预期的状态,当Pod的资源出现故障的时候,会尝试进行重启或重建Pod,新创建的ip地址与原来的不一样。

Deployment创建pod时会在pod上打标签,通过标签选择器选择需要管理的pod

命令式对象配置,创建一个deploy-nginx.yaml

Service

  • 我们已经能够利用Deployment来创建一组Pod来提供具有高可用性的服务,虽然每个Pod都会分配一个单独的Pod的IP地址,但是却存在如下的问题:

  • Pod的IP会随着Pod的重建产生变化。
  • Pod的IP仅仅是集群内部可见的虚拟的IP,外部无法访问

service可以看做是一组同类的Pod对外的访问接口,借助Service,应用可以方便的实现服务发现和负载均衡

重新创建集群外部可访问的Service

对象配置方式,新建svc-nginx.yaml

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/5500.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部