k8s基础概念理解(1)

  1. 在k8s中,一个pod里面的容器与另外主机上的pod容器能够直接通信
  • 因为k8s为每个pod都分配了唯一的IP地址称为pod ip
  • 一个pod里的多个容器共享这个pod IP地址。
  • k8s要求底层网络支持集群内任意两个pod之间的TCP/IP直接通信,采用虚拟机二层网络技术实现
  1. pod的ip加上容器端口(containerPort)组成一个新概念----endpoint
  • 他代表此pod里的一个服务进程的对外通信地址
  • 一个pod可以有多个endpoint 比如Tomcat定义为一个pod时,可以对外暴露管理端口和服务端口这两个endpoint
  • endpoint=(pod ip + container port )
  1. k8s里面的event概念: event是一个事件的记录,记录了事件的最早产生时间、最后重现时间、重复次数、发起者、类型、以及导致该事件的原因等
  • 通常会被关联到某个具体资源上,是排查故障的重要信息。命令: kubectl describe pod xxxx
  1. k8s中对于资源的配合限定有两个参数:
Requests:资源的最小申请量,系统必须满足
Limits: 该资源最大允许使用的量 不能被突破,当容器试图使用超过这个量的资源时,可能会被k8s杀掉而重启 
  • 通常会把requests设置成一个较小的数值 符合容器平时的工作负载情况下的资源需求 。
  • limits设置成峰值负载情况下资源占用的最大量
spec:
  containers:
         resources:
      limits: {cpu: 500m, memory: 100Mi}
      requests: {cpu: 250m, memory: 30Mi}

该容器申请至少0.25个CPU和30M内存  运行过程中容器所能使用的资源配额为0.5个CPU和100M内存
  1. label(标签)
  • 一个label是一个key=value的键值对
  • key value可以由用户指定 可以附加到各种资源对象上,比如node、pod、server、rc
  • 通过给指定的资源对象捆绑一个或者多个label 来实现多维度的资源分配管理功能
  • 打上标签之后,我们就可以通过label selector(标签选择器)查询和筛选某些label的资源对象(类似于SQL那种简单又通用的对象查询机制)

Label selector可以类比成SQL语句中的where查询条件

  • 比如kube-controller进行通过在资源对象rc上定义的label selector来筛选要监控的pod副本数量 达到副本数量始终符合预期的设定的全自动控制流程
例子:以nginx pod为例子 label被定义到metadata中:

apiVersion: v1
kind: pod
metadata:
  name: nginx
  labels:
    app:nginx
	
	
在管理对象Rc 和service则通过selector字段设置需要关联pod的label:

apiVersion: v1
kind: Service
metadata:
    name: nginx
spec:
    selector:
        app: nginx
  1. kind: pod 表示这是一个pod的定义
  2. metadata里面的name属性是pod的名称,在metadata里还能定义资源对象的标签
  3. 在pod中所包含的容器组的定义在spec一节中声明
  4. 我们可以采用yaml或者json格式声明(定义或者创建)一个kubernetes资源对象,每个资源对象都有自己的特定语法形式(可以理解为数据库中的一个特定的表)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值