容器化进阶Kubernetes核心技术

本文深入介绍了Kubernetes的核心概念,包括Pod的详细结构、Label的作用、Replication Controller与Replica Set的功能,以及Deployment的编排机制。此外,还探讨了Horizontal Pod Autoscaler(HPA)如何自动调整Pod的副本数量以适应负载变化。
摘要由CSDN通过智能技术生成

1 Pod详解

Pod是Kubernetes的最重要概念,每一个Pod都有一个特殊的被称为”根容器“的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器。
在这里插入图片描述
在这里插入图片描述

  • Podvs应用
    每个Pod都是应用的一个实例,有专用的IP
  • Pod Vs容器
    一个Pod可以有多个容器,彼此间共享网络和存储资源,每个Pod 中有一个Pause容器保存所有的容器状态,
    通过管理pause容器,达到管理pod中所有容器的效果
  • Pod vs节点
    同一个Pod中的容器总会被调度到相同Node节点,不同节点间Pod的通信基于虚拟二层网络技术实现
  • Pod vs Pod
    普通的Pod和静态Pod

1.1pod的定义
下面是yaml文件定义的Pod的完整内容

apiVersion: v1//版本
kind: Pod//类型,pod
metadata: //元数据
 name: string//元数据,pod的名字
 namespace: string//元数据,pod的命名空间
 labels://元数据,标签列表
  - name: string //元数据,标签的名字
 annotations:  //元数据,自定义注解列表
  - name: string  //元数据,自定义注解名字
spec: // pod中容器的详细定义
 containers: //pod中的容器列表,可以有多个容器
 - name:string//容器的名称
   image:string//容器中的镜像
   imagesPullPolicy:[Always|Never|IfNotPresent]//获取镜像的策略,默认值为Always,每次都尝试重新下载镜像
   command:[string]//容器的启动命令列表(不配置的话使用镜像内部的命令)
   args:[string]//启动参数列表
   workingDir:string//容器的工作目录
   volumeMounts: //挂载到到容器内部的存储卷设置
   - name:string
     mountPath:string//存储卷在容器内部Mount的绝对路径
     readOnly:boolean//默认值为读写
   ports: //容器需要暴露的端口号列表
   - name:string
     containerPort:int //容器要暴露的端口
     hostPort:int //容器所在主机监听的端口(容器暴露端口映射到宿主机的端口,设置hostPort时同一台宿主机将不能再启动该容器的第2份副本)
     protocol:string //TCP和UDP,默认值为TCP
   env: //容器运行前要设置的环境列表
   - name:string
     value:string
   resources:
     limits: //资源限制,容器的最大可用资源数量
      cpu:Srting
      memory:string
     requeste: //资源限制,容器启动的初始可用资源数量
      cpu:string
      memory:string
   livenessProbe: //pod内容器健康检查的设置
    exec:
     command:[string]//exec方式需要指定的命令或脚本
    httpGet: //通过httpget检查健康
     path:string
     port:number
     host:string
     scheme:Srtring
     httpHeaders:
     - name:Stirng
       value:string
    tcpSocket: //通过tcpSocket检查健康
     port:number
    initialDelaySeconds:0//首次检查时间
    timeoutSeconds:0//检查超时时间
    periodSeconds:0//检查间隔时间
    successThreshold:0
    failureThreshold:0
    securityContext: //安全配置
     privileged:falae
   restartPolicy:[Always|Never|OnFailure]//重启策略,默认值为Always
   nodeSelector:object//节点选择,表示将该Pod调度到包含这些label的Node上,以key:value格式指定
   imagePullSecrets:
   - name:string
   hostNetwork:false//是否使用主机网络模式,弃用Docker网桥,默认否
volumes : //在该pod上定义共享存储卷列表
- name: string
  emptyDir: {
   }//是一-种与Pod同生命周期的存储卷,是一个临时目录, 内容为空
  hostPath : //Pod所在主机上的目录,将被用于容器中mount的目录
   path: string
  secret: //类型为secret的存储卷
   secretName: string
   item:
   - key: string
     path: string
  configMap: //类型为configMap的存储卷
   name: string
   items:
   - key: string
     path: string

1.2 Pod的基本用法
在kubernetes中对运行容器的要求为:容器的主程序需要一直在前台运行,而不是后台运行。应用需要改造成前台运行的方式。如果我们创建的Docker镜像的启动命令是后台执行程序,则在kubelet创建包含这个容器的pod之后运行完该命令,即认为Pod已经结束,将立刻销毁该Pod。如果为该Pod定义了RC,则创建、销毁会陷入一个无
限循环的过程中。
Pod可以由1个或多个容器组合而成。

# 一个容器组成的Pod
apiversion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值