文章目录

Kubernetes(二)资源概况

kubernetes中有五种比较重要的资源:pod,namespace,label,deployment,service

Namespace

namespace是k8s中用来实现多套环境资源隔离的,默认情况下,k8s中所有pod都是可以相互访问的,但是在实际中,可能不想让某两个pod相互访问,此时就可以将这两个pod划分到不同的namespace中,形成逻辑隔离

Kubernetes(二)资源概况_键值对

查看所有ns:

kubectl get ns [ns-name]

Kubernetes(二)资源概况_键值对_02

获取某一ns下的pods

kubectl get pods -n ns-name

获取某一ns的详情

kubectl describe ns ns-name

创建ns

kubectl create ns ns-name

删除ns

kubectl delete ns ns-name

Pod

pod是k8s中最小的资源管理单位,程序必须要运行在容器中,容器必须要运行在Pod中,一个pod可以存在一个或多个容器,k8s中的组件也是以pod的形式运行

Kubernetes(二)资源概况_对象创建_03

创建并运行pod

kubectl run pod-name [tags]

Kubernetes(二)资源概况_负载均衡_04

查看pod信息

kubectl get pod -n ns-name

查看pod详情

kubectl describe pod pod-name [tags]

label

Label是k8s中的一个重要概念,用于给资源添加标签,来进行区分和选择,特点:

  • Label是通过键值对的方式添加到各种资源对象上去,如Node,Pod,Service等
  • 一个资源对象可以定义多个标签,一个标签可以打到多个资源对象上去
  • 一个label是在对象创建时就自动创建,也可以在对象创建后进行动态的添加和删除
  • 使用label selector来筛选标签label
  • 基于等式的选择:label-name = “”
  • 基于集合的选择:label-name in []

为pod打标签

kubectl label pod pod-name label-name=label-value -n ns

根据标签获取pod

kubectl get pod label-name=label-value -n ns

更新pod上的标签

kubectl label pod pod-name label-name=label-value -n ns --overwrite

deployment

在k8s中,Pod是最小的控制单元,但是k8s很少直接控制pod,一般通过pod控制器完成pod的控制,确保pod资源符合预期设定,当pod挂了,会对pod进行重启获取重建,deployment就是其中的一种pod

查看deployment信息:

kubectl get deploy -n ns

deployment和pod之间的关联通过label

查看deployment详情:

kubectl describe deploy name -n ns

删除deployment

kubectl delete deploy name

service

虽然每个pod都会有自己单独的ip,但是这个ip会随着pod重建而重新分配一个ip,是变化的,而且这个ip仅仅是集群内部可见,外部无法访问,k8s通过service来解决这个问题,service是同一组pod的外部访问接口,可以用于实现服务发现和负载均衡,通过标签选择器找同一组的pod

Kubernetes(二)资源概况_键值对_05