K8S Pod

2023-05-16

Pod管理

  • Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。
  • 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。

• container实际上是一个单进程模型 • pod可以类比为进程组概念 • pod在k8s中必须是原子调度单位 • Pod 要解决的问题核心就在于如何让一个 Pod 里的多个容器之间最高效的共享某些资源 和数据。 • 通过infra container的方式共享同一个network namespace • 镜像k8s.gcr.io/pause由汇编语言编写、永远处于“暂停”状态,大小100~200KB • 直接使用localhost通信 • pod内的所有容器共享一份网络资源,一个pod一份。 • 整个pod的生命周期跟infra容器一致,而与其它容器无关 • 所有同属于一个 Pod 的容器,他们共享所有的 volume。

 1.查看定义变量

2.列出所有pod

 查看demo,显示正在拉取

get pod 显示runing

 查看pod是否运行及运行节点

添加外部仓库地址

 在master中开启busybox

 查看运行中的pod

删除时在delete pod dome 后加 --force可以强制删除

创建Pod应用 

拉去实验环境

创建容器,指定镜像

查看运行的节点是否全部就绪,发现在node1和node2上均衡

expose后跟暴露的服务器(deployment)指定暴露容器端口为80,目标端口为80

可以看到svc的名字和刚才创建的demo一样

编辑svc type:NodePor

 

 

 

多了一个80端口分配了32370

资源清单

格式如下: • apiVersion: group/version  //指明api资源属于哪个群组和版本,同一个组 可以有多个版本 $ kubectl api-versions //查询命令 • kind: //标记创建的资源类型,k8s主要支持以下资源类别 Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob • metadata: //元数据 name: //对像名称 namespace: //对象属于哪个命名空间 labels: //指定资源标签,标签是一种键值数据 annotations: //用来描述资源的注解 ownerReference:// 用来描述多个资源之间相互关系 • spec: //定义目标资源的期望状态 • status: //用来描述观测到的状态 • $ kubectl explain pod //查询帮助文档

 

 

  

新建pod,并编写pod.yaml文件

 

-o查看

将打开的yaml导入到pod2.yaml中

可以对文件进行编辑

 

 

运行查看结果 

kubectl api-versions 
mkdir pod
cd pod/
vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod
spec:
  containers:
  - name: pod1
    image: nginx
    imagePullPolicy: IfNotPresent 
    ports:
      - name: http
        containerPort: 80
        hostPort: 80
    resources:
      limits: 
        cpu: 0.5
        memory: 200Mi
      requests:
        cpu: 0.5
        memory: 200Mi

 

标签: • $ kubectl get pod --show-labels //查看标签

NAME READY STATUS RESTARTS AGE LABELS demo 2/2 Running 0 8s app=demo

• $ kubectl get pod -l app //过滤包含app的标签

NAME READY STATUS RESTARTS AGE demo 2/2 Running 0 34s

• $ kubectl get pod -L app

NAME READY STATUS RESTARTS AGE APP demo 2/2 Running 0 39s demo

• $ kubectl label pod demo version=v1 //打标签

pod/demo labeled

• $ kubectl get pod --show-labels

NAME READY STATUS RESTARTS AGE LABELS demo 2/2 Running 0 4m1s app=demo,version=v1

• $ kubectl label pod demo app=nginx --overwrite //更改标签

pod/demo labeled

• $ kubectl get pod --show-labels

NAME READY STATUS RESTARTS AGE LABELS demo 2/2 Running 0 5m40s app=nginx,version=v1

更改标签

 

编辑文件

 

查看kube-flannel.yml文件 

Pod生命周期

Pod 遵循一个预定义的生命周期,起始于 Pending 阶段,如果至少 其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以 失败状态结束而进入 Succeeded 或者 Failed 阶段。

在 Pod 运行期间,kubelet 能够重启容器以处理一些失效场景。 在 Pod 内部,Kubernetes 跟踪不同容器的状态 并确定使 Pod 重新变得健康所需要采取的动作。

在 Kubernetes API 中,Pod 包含规约部分和实际状态部分。 Pod 对象的状态包含了一组 Pod 状况(Conditions)。 如果应用需要的话,你也可以向其中注入自定义的就绪性信息。

Pod 在其生命周期中只会被调度一次。 一旦 Pod 被调度(分派)到某个节点,Pod 会一直在该节点运行,直到 Pod 停止或者 被终止。

编辑文件

更改为如下格式

 get pod查看

并通过以下方式检查其状态:

kubectl get -f myapp.yaml

kubectl describe -f myapp.yaml

 

随后创建服务

 通过svc可以观察到已打开

使用get pod查看myapp-pod

 

第二个仍然有问题

继续添加

 

 查看无误

 完成 没有出现报错

 

探针

 • 探针 是由 kubelet 对容器执行的定期诊断:

• ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为 诊断成功。

• TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果 端口打开,则诊断被认为是成功的。

• HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功 的。

• 每次探测都将获得以下三种结果之一:

• 成功:容器通过了诊断。

• 失败:容器未通过诊断。

• 未知:诊断失败,因此不会采取任何行动。

• Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应:

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

• readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点 控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初 始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状 态为 Success。

• startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探测 (startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失 败,kubelet 将杀死容器,容器服从其重启策略进行重启。如果容器没有提 供启动探测,则默认状态为成功Success。

参数解释:

• initialDelaySeconds pod启动后延迟多久进行检测

• periodSeconds 检测的间隔时间,默认10秒

• timeoutSeconds 检测的超时时间,默认1秒

• successThreshold 检测失败后再次判断成功的阈值,默认1次

• failureThreshold 检测失败的重试次数,默认3次 

先确定三台主机都安装nginx

 

在master主机中写入

启动

get pod 可以看到已经runing

 但如果将端口改为8000 

get pod -w 持续查看发现一直在读取

添加就绪探针

readinessProbe:

httpGet: path: /test.html

port: 80 initial

DelaySeconds: 1

periodSeconds: 3

timeoutSeconds: 1

 get svc可以看到myservice

 

 

 再次pod已经成功running

也可以通过svc liveness-http查看到endpoints

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K8S Pod 的相关文章

  • 十六、K8s安全管理与资源限制

    实验环境 按照图示部署好了K8s集群 一个Master 两个worker nodes 访问控制概述 apiserver作为k8s集群系统的网关 是访问及管理资源对象的唯一入口 余下所有需要访问集群资源的组件 包括kube controlle
  • (5)minikube玩转k8s集群之访问pod里的服务

    配套视频教程 1 Minikube介绍 简单说 创建k8s集群很麻烦 minikube可以让我们快速搭建一个k8s集群用于学习 Minikube 是一种可以让您在本地轻松运行 Kubernetes 的工具 Minikube 在笔记本电脑上的
  • 社区的代码规范及e2e测试

    golangci lint 静态代码检查工具 是对golint gofmt的集成 速度更快 1 安装 go install github com golangci golangci lint cmd golangci lint v1 38
  • DHorse系列文章之操作手册

    在介绍DHorse的操作之前 我们先来看一下发布一个系统的流程是什么样的 发布系统的流程 我们以一个Springboot系统为例 来说明一下发布流程 1 首先从代码仓库下载代码 比如Gitlab 2 接着是进行打包 比如使用Maven 3
  • k8s job机制初探

    博客作为学习笔记记录 若有理解或表述错误 欢迎指出 k8s的job机制 k8s官网参考 k8s的job是用来执行一次性任务的一类资源 相关的还有cronjob 用于执行以下周期性任务 部署job之后 k8s会起对应pod 当pod的状态为f
  • underlay和overlay? & 传统网络和数据中心网络 ?

    underlay和overlay 百度 Underlay 和 Overlay 是网络架构中两个常用的概念 用于描述不同层次或视角下的网络结构和通信方式 1 Underlay 底层网络 Underlay 是指基础网络层 即物理网络或基础网络架
  • 局域网使用kubeadm安装高可用k8s集群

    主机列表 ip 主机名 节点 cpu 内存 192 168 23 100 k8smaster01 master 2核 2G 192 168 23 101 k8smaster02 node 2核 2G 192 168 23 102 k8sma
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s
  • Prometheus监控 controller-manager scheduler etcd

    用prometheus插件监控kubernetes控制平面 例如 您使用kubeadm构建k8s集群 然后kube控制器管理器 kube调度程序和etcd需要一些额外的工作来进行发现 create service for kube cont
  • 十八. Kubernetes Ingress

    目录 一 Ingress 基础解释 二 ingressController 安装 六 ingress 使用示例 pathType 详细 annotations 基于k8s注解为 nginx 添加功能示例 路径重写 Session Affin
  • k8s Pod定义yaml配置文件详解

    此文件相关配置查询 此文件只做参考 以查询为准 kubectl explain 为文档查询命令如 kubectl explain pod spec volumes apiVersion v1 版本 kind pod 类型 pod metad
  • 初学容器:Docker

    1 环境初始化 1 1 安装git vim curl等常用工具 sudo apt update sudo apt install y git vim curl jq 1 2 ubuntu是不支持远程连接的 需要安装ssh服务 sudo ap
  • kube-flannel.yml

    flannel作为k8s的集群中常用的网络组件 其yml文件的获取 建议去github中获取 具体的获取方式如下 apiVersion policy v1beta1 kind PodSecurityPolicy metadata name
  • CentOS 7 下 minikube 部署 && 配置

    CentOS 7 下 minikube 部署 配置 文章目录 CentOS 7 下 minikube 部署 配置 下载 安装 下载安装脚本 安装 minikube 启动 minikube 环境 安装 kubectl 工具 启动 miniku
  • k8s基本命令

    k8s命令 https kubernetes io zh docs tutorials kubernetes basics 官网地址 基本命令 查看节点服务器 kubectl get nodes 查看命名空间 kubectl get ns
  • kubectl常用命令

    alias k kubectl alias kc k create f alias kgp k get pods alias kdp k describe pods alias kdep k delete pods alias kl k l
  • k8s 裸机安装 nginx1.19 ingrass

    k8s 裸机安装 nginx1 19 ingrass deploy yaml文件如下 apiVersion v1 kind Namespace metadata name ingress nginx labels app kubernete
  • k8s问题 CrashLoopBackOff

    我们创建资源发现资源出现CrashLoopBackOff解决 CrashLoopBackOff 告诉我们 Kubernetes 正在尽力启动这个 Pod 但是一个或多个容器已经挂了 或者正被删除 root localhost kubectl
  • kubeadm 安装k8s

    关于k8s集群化部署 以下均是个人一步一步的完成部署 并且会罗列出在部署过程中遇到的各种问题及其解决方式 一 环境准备 环境准备阶段试用与master节点部署与work节点部署 即master和work节点全部都需要执行这些步骤 1 关闭防
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常

随机推荐

  • centos7安装python3不影响python2

    文章目录 一 前言二 安装python3 一 前言 Centos7中很多软件命令依赖于系统自带的python2 比如yum 卸载python2会造成yum不可用 所以没必要卸载python2 如果要使用python3 可以通过软链接的方式安
  • Python异常的传递以及完整结构

    文章目录 异常的传递 异常的完整结构 异常的传递 span class token triple quoted string string 34 34 34 异常的传递是异常处理的底层机制 是原理层面 异常传递 当一行代码发生异常后 会向外
  • Python互斥锁小技巧

    span class token triple quoted string string 34 34 34 需求 创建两个线程 其中一个输出 1 52 另一个输出 A Z 输出格式要求 12A 13B 56C 5151Z 34 34 34
  • Python-TCP服务端程序开发

    文章目录 一 TCP服务端程序开发二 端口复用三 判断客户端程序是否断开四 多任务版本 一 TCP服务端程序开发 span class token triple quoted string string 34 34 34 主动套接字 可以收
  • Python-TCP网络编程基础以及客户端程序开发

    文章目录 一 网络编程基础 什么是IP地址 什么是端口和端口号 TCP介绍 socket介绍 二 TCP客户端程序开发三 扩展 一 网络编程基础 什么是IP地址 IP地址就是标识网络中设备的一个地址 IP地址分为 IPv4 和 IPv6 I
  • HTML介绍

    文章目录 一 HTML介绍二 创建三 HTML结构四 常见的标签五 链接标签六 图片标签七 资源路径八 列表标签九 表格标签十 表单标签十一 表单提交 一 HTML介绍 HTML 超文本标记语言作用 书写前端页面前端三大技术 三大标准 HT
  • CSS介绍

    文章目录 一 CSS介绍二 CSS的引入方式三 CSS选择器 一 CSS介绍 定义 层叠样式表作用 美化界面 设置标签文字大小 颜色 字体加粗等样式控制页面布局 设置浮动 定位等样式 基本语法 选择器 样式规则 样式规则 属性名1 属性值1
  • JavaScript介绍

    文章目录 一 JavaScript介绍二 JavaScript的引入方式三 JavaScript的变量与数据类型四 JavaScript中的函数五 JavaScript变量的作用域六 JavaScript运算符七 JavaScript判断语
  • JQuery介绍

    文章目录 一 JQuery介绍二 JQuery使用三 JQuery选择器四 JQuery选择集过滤五 JQuery选择集转移六 JQuery获取和操作标签内容七 JQuery获取和设置元素属性八 JQuery事件九 JQuery事件代理 事
  • 树莓派操作系统烧录

    准备 硬件 xff1a 树莓派4BMicroSD卡 xff08 16GB xff09 SD卡读卡器 软件 xff1a SD卡格式化软件 xff08 SDFormatter xff09 系统烧录软件 xff08 balenaEtcher xf
  • 嵌入式系统开发必读经典书目

    读本科的时候就对嵌入式系统感兴趣 xff0c 虽然在校的时候积累了大量材料 xff0c 但是在较长的时间里都没有机会细读 xff0c 这学期终于静下心来 xff0c 系统学习一遍 xff0c 期间把以前积累的各类教材或粗粗浏览或仔细揣摩 x
  • 百度笔试题2018

    题外话 首先我要吐槽一下 xff0c csdn简直是在作死啊 xff0c 复制博文底下的那个引用太恶心了 xff0c 我复制自己的博客 xff0c 还有引用 xff0c 啥玩意啊 所以我决定换地方了 xff0c 以后github xff08
  • 统计计算——基于R语言的随机数生成

    统计计算 基于R语言的随机数生成 R中常见一元分布函数 代码展示 xff1a set seed 191206 设置随机数种子 xff0c 为了保证多次生成的随机数一致 xff0c 需要保证数据一样情况下进行再次实验时可用到 N 61 100
  • 第九章 Linux下的虚拟化部署

    第一步 查看CPU信息 打开虚拟机安装程序在四种方式中选择第一种 找到对应镜像 走安装流程 等待安装完成 点击协议 点击我同意 即可打开虚拟机
  • 第二本书 第一章 linux中的网络配置

    配置新网络 ifconfig ping ip 指令的使用 无图形模式生成新网络 nmcil指令的使用 dhcp服务配置 块网卡上配置多个IP 设定dns
  • 阿里云培训-负载均衡(CLB/ALB)

    什么是传统型负载均衡CLB 传统型负载均衡CLB xff08 Classic Load Balancer xff09 是将访问流量根据转发策略分发到后端多台云服务器 xff08 ECS实例 xff09 的流量分发控制服务 CLB扩展了应用的
  • 阿里云培训-AS(弹性伸缩)

    什么是弹性伸缩Auto Scaling 弹性伸缩 xff08 Auto Scaling xff09 是根据业务需求和策略自动调整计算能力 xff08 即实例数量 xff09 的服务 您可以指定实例的类型 xff0c 即ECS实例或ECI实例
  • php源码安装

    php源码安装 下载php的rpm包并解压 在解压之后的目录中 xff0c 查看是否有configure xff0c 如果有此文件 xff0c 使用 configure gt make gt make install方式进行源码安装 roo
  • K8S集群部署

    环境准备 由于k8s 集群比较吃配置 xff0c 使用 按量计费 来进行学习 xff0c 三台 4核8G 的费用大概再 1 6元 小时 三台云服务器 配置 xff1a 2核2G 三台服务器内网互通 xff08 内网可以互相访问 VPC xf
  • K8S Pod

    Pod管理 Pod是可以创建和管理Kubernetes计算的最小可部署单元 xff0c 一个Pod代表着集群中运行的一个进程 xff0c 每个pod都有一个唯一的ip 一个pod类似一个豌豆荚 xff0c 包含一个或多个容器 xff08 通