美文网首页
K8S资源对象简介

K8S资源对象简介

作者: Walker_7797 | 来源:发表于2022-01-20 14:41 被阅读0次

一、资源简介

1.1 Pod

  • pod是k8s中的最小单元。
  • 一个pod中可以运行一个容器,也可以运行多个容器。
  • 运行多个容器,这些容器是一起被调度的。
  • pod的生命周期是短暂的,不会自愈,是用完就销毁的实体。
  • 所以一般使用Controller来创建和管理pod。

1.2 Pod控制器

  • Replication Controller:简称rc,第一代pod副本控制器。
  • rc对于标签选择只支持"="和"!="。
  • ReplicaSet:简称rs,第二代pod副本控制集。
  • rs和rc的区别是,对标签不仅支持"="和"!=",还支持"in"、"notin"。
  • Deployment:简称deploy,第三代pod控制器,除了有rs的功能之外,还有更多高级的功能,例如:滚动升级、回滚等。

1.3 Service

  • service解耦了服务和应用。
  • 常用service有两种:集群内部的service,通过selector指定pod,自动创建endpoints;集群外部的service,手动创建endpoints,指定外部服务的ip,端口和协议。
  • kube-proxy监听这k8s-apiserver,一旦service资源发生变化(调k8s-api修改srevice信息),kube-proxy就会生成对应的负载调度的调整,保证service的最新状态。

1.4 Volume

  • 数据和镜像解耦,容器间的数据共享。
  • k8s抽象出来的一个对象,用来保存数据,做存储用。
  • emptyDir:本地临时卷,当pod被分配给节点时,首先创建emptyDir卷,并且只要该pod在该节点上运行,卷就会存在;正如卷的名字所述,它最初是空的;pod中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到容器中的相同或不同路径上;无论pod由于任何原因从节点删除时,emptyDir中的数据会被永久删除。
  • hostPath:本地卷,将主机节点的文件系统中的文件或目录挂载到集群中,pod删除的时候,卷不会被删除。
  • nfs:共享卷,允许将现有的nfs(网络文件系统)共享挂载到您的容器中。不像emptyDir,当删除pod时,nfs卷的内容被保留,卷仅仅是被卸载;这意味着nfs卷可以预填充数据,并且可以在pod之间“切换”数据;nfs可以被多个写入者同时挂载。
  • configMap:配置文件,配置信息和镜像解耦,将配置信息放到configMap对象中,然后在pod的对象中导入configmap对象,实现导入配置的操作。

1.5 PV/PVC

  • PersistentVolume:实现pod和storage的解耦,这样修改storage的时候不需要修改pod,也可以实现存储胡和应用权限的隔离;PV是由管理员设置的存储,是集群中的一部分;就想节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但是有独立于使用PV的pod的生命周期;此API对象包含存储实现的细节,即NFS,ISCSI或特定于云供应商的存储系统。
  • PersistentVolumeClaim:PVC是用户存储的请求。它与pod相似;pod消耗节点资源,PVC消耗PV资源;pod可以请求特定级别的资源(CPU和内存),声明可以请求特定的大小和访问模式。

1.6 StatefulSet

  • 为了解决有状态服务的问题,它管理的pod拥有固定的pod名称,主机名,启停顺序。

1.7 DaemonSet

  • 在当前集群中每个节点运行同一个pod,当有新的节点加入集群时也会为新的节点配置相同的pod,当节点从集群中移除时,其pod也会被kubernetes回收,但是删除DaemonSet将删除其创建的所有pod。

二、NodePort和SVC

2.1 SVC

  • pod控制器只能通过pod的ip去访问,如果pod重建,ip会变换,所以可以用svc的方式,svc会分配一个内部的ClusterIP,也可以通过svc的域名访问,前提是域名能够被解析。

2.2 NodePort

  • svc默认模式是ClusterIP模式,只能在集群内的pod中访问,如果想要从集群外部访问,需要创建nodeport模式,可以指定端口,不指定端口,会随机分配一个端口,该端口集群内所有节点上都会监听,包括master节点。
  • 集群外部访问时,会先访问节点上的nodeport端口(主机上的端口),然后nodeport端口转发给svc的端口,svc的端口转发给容器的target端口。

三、NFS

3.1 安装nfs

环境:CentOS系统

  • 在服务端安装nfs-server
yum install -y nfs-server
  • 在node端安装nfs-utils
yum install -y nfs-utils
  • 编辑服务端/etc/exports文件,设置共享目录
# 注:*和()之间不能有空格,设置读写权限
DIR *(rw,no_root_squash)
  • node端使用命令查看分享的目录
showmount -e SERVER_IP
  • 编写yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ng-deploy-80
  template:
    metadata:
      labels:
        app: ng-deploy-80
    spec:
      containers:
      - name: ng-deploy-80
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /usr/share/nginx/html/mysite
          name: my-nfs-volume
      volumes:
      - name: my-nfs-volume
        nfs:
          server: SERVER_IP    # 替换为nfs server端ip
          path: DIR    # 替换为nfs server端共享目录

四、探针

4.1 探针三种处理方式

  • ExecAction:在容器内执行指定命令,如果命令退出时返回码为0则认为诊断成功。
  • TCPSocketAction:对指定端口上的容器的ip地址进行TCP检查,如果端口打开,则认为诊断成功。
  • HTTPGetAction:对指定的端口与和路径上的ip地址执行HTTPGet请求,如果响应码的状态大于等于200且小于400,则认为诊断成功。

4.2 LivenessProbe

  • livenessProbe:存活探针
  • 检测容器是否正在运行,如果存活探测失败,则kubelet会杀死容器,并且容器将会受到其重启策略的影响,如果容器不提供存活探针,则默认状态为success,用于控制是否重启pod。

4.3 ReadinessProbe

  • readinessProbe:就绪探针
  • 如果就绪探测失败,端点控制器将从与pod匹配的所有service的端点中删除该pod的ip地址,初始延迟之前就绪探针默认为Failure(失败),如果容器不提供就绪探针,则默认状态为success,用于控制pod是否添加至service。

相关文章

  • K8s Ingress Nginx 支持 Socket.io

    Ingress 及 Ingress Controller 简介 Ingress:是k8s 资源对象,用于对外暴露服...

  • K8S资源对象简介

    一、资源简介 1.1 Pod pod是k8s中的最小单元。 一个pod中可以运行一个容器,也可以运行多个容器。 运...

  • k8s 资源清单与pod

    k8s中的资源 k8s中所有的内容都抽象成了资源,资源实例化后,称为对象。所有对象可以通过 get delete ...

  • Kubernetes 学习笔记(三)--- 资源清单定义入门

    目录 一、K8S中常见的资源 Kubernetes中把资源实例化以后称之为对象,这里先介绍K8S中常见的核心资源有...

  • K8s 的ReplicaController ReplicaSe

    什么是ReplicationController ReplicationController是k8s的一种资源对象...

  • kubectl命令

    kubectl命令 command:子命令,用于操作k8s集群资源对象的命令,例如create、delete、de...

  • k8s常用命令

    包含了常用命令kubectl 操作k8s 常用命令 kubectl 输出格式 查看日志 创建资源对象 查看资源对...

  • 外部Prometheus监控k8s集群资源

    Prometheus监控k8s资源 通过Prometheus监控k8s集群中各种资源:如微服务,容器资源指标 并在...

  • K8s 常见资源简介

    Pod pod是一个逻辑单位,由多个容器组合,是kubernetes原子调度单位,Pod 的共享上下文包括一组 L...

  • kubernetes容器编排YAML详解

    简单认识 k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式( YAML)文件来解决, 也 就是可以把需...

网友评论

      本文标题:K8S资源对象简介

      本文链接:https://www.haomeiwen.com/subject/fbqchrtx.html