kubernetes杂谈之(二)Pod初谈

Kubernetes Pod是部署和管理应用的最小单元,由pause容器和业务容器组成,共享网络命名空间和数据卷。Pod内的容器可以通过localhost互相访问,简化了紧密关联业务的通信。Pod设计考虑了健康检查、文件共享和通信效率,但多容器可能导致日志管理和进程生命周期复杂。Pod的配置文件包括API版本、元数据、容器定义、网络、存储、安全和健康检查等关键元素。
摘要由CSDN通过智能技术生成

一    Pod的概念

(1)pod和容器的关系

pod和容器'containers'的关系 --> '一个pod至少包含两个容器'-->'一个pause容器,一个业务容器'

Pod:Kubernetes部署和管理的最小单位,也是'最小的调度单位'

(2)pause容器

Pause容器的'作用'  --> 所有的'业务容器''共享'pause的'网络命名空间和数据卷'

pause:沙盒容器,它永远是pod中'第一个被创建'的容器,其它定义的容器都是通过'join network namespace'的方式,与infra容器'关联'在一起的
 
1)所有的业务容器-->'网络模式类似Docker container模式'-->'同一个pod内容器共享同一个网络栈(命名空间)' -->'共享ip和port'

效果1:一个POD里的容器都可以通过'localhost'访问

效果2:'流量进出'都是通过infra容器

2)Pod中的所有容器都可以'访问共享的volume'

所以:pause总是先启动,自然'网络和数据卷会先创建' --> '因为要为其它业务容器提供'

###############  '原理'  ###############

每当'一个Pod被创建',那么首先创建一个 'pause' 容器,之后这个pod里面的其他容器通过'共享'这个pause容器的网络栈,实现与外部pod'进行通信',然后通过'localhost'进行pod内部的'container的通信'

(3)Kubernetes为什么让一个POD里放置多个容器

Docker的理念:'一个容器一个进程'

为什么:KUbernetes设计出一个'全新的Pod概念',并且Pod有这样'特殊的组成结构'?

1) 引入'业务无关且不易死亡'的Pause容器作为'Pod的根容器',通过pasue状态代表'整个容器的状态',作为pod是否'健康的标准'

2) Pod里多个业务容器共享Pause的IP和Port,共享Pause容器挂接的Volume,简化了'紧密关联'的业务容器之间的'通信问'题,很好的解决容器间'文件共享'

*******************  'pod多容器的劣势'  *******************

违反'一个容器一个进程'的原则

因为同一个容器中有'多个进程',系统将很难排错,因为来自不同进程的'日志'将'被混合在一起',很难管理进程的'生命周期'

二    Pod定义详解

说明:'Deployment、DaemonSet、StatefulSet'都是基于'pod',所以必须详细了解pod的'配置文件'

1)Pod属于'namespace'级别的资源

2)从Pod的配置文件引出一些'核心的概念'-->'Annoations等'

3)pod是k8s'最小的调度单位'

(1)常见的

apiVersion: v1   --YAML描述文件'所使用的Kubernetes API版本'-->kubectl explain pods -->'不同版本可能不一样'
kind: Pod        --Kubernetes '对象资源'
metadata:        --pod'元数据'(名称、标签和注解)
  labels:
    run: httpd        --'pod的自定义标签,方便标签选择器进行选择'
  name: httpd-gv4bl   --'pod的名字'-->'后续贴出规范'
  namespace: default  --'pod所处的命名空间'
spec:                 --'pod中容器的详细定义' --> '规格/内容(pod的容器列表、volume)'
  containers:
  - image: httpd             -- '容器的镜像名称' -->'仓库:标签'
    imagePullPolicy: Always  -- '镜像的拉取策略'
    name: httpd              -- '容器的镜像名称'
    ports:                   -- '容器暴露的端口列表'
    - containerPort: 80      -- '容器需要监听的端口号'
      protocol: TCP          -- '端口协议,默认是TCP'
    resources: {}            -- '资源限制和资源请求-->后续讲解'
  dnsPolicy: ClusterFirst    -- 'DNS策略' --> '后续自定义DNS引入kubernetes'
  nodeName: minikube         -- '定向调度-->非必须'
  restartPolicy: Always      -- 'pod的重启策略'
  securityContext: {}        -- '安全上下文'
  serviceAccount: default    -- '用户身份'

(2)网络

(3)存储

(3)安全

(4)账户

(5)健康检查

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值