一、Pod镜像及端口

  • 获取帮助文档
# kubectl explain pod.spec.containers
spec.containers <[]object>
  • pod.spec.containers.imagePullPolicy:镜像的拉取策略
- name <string>
image <string>
imagePullPolicy: <string> #如果标签是latest则默认值是Always,如果是其他标签则默认值是IfNotPresent
Always:总是去仓库下载,latest标签的镜像用
Never:本地有就用,没有就不用
IfNotPresent:本地有用本地的,本地没有去仓库下载
  • pod.spec.containers.ports:端口的暴露
  ports:
- name: http
containerPort: 80
- name: https
containerPort: 443

二、Pod标签及标签选择器和注解

  • pod标签
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
# kubectl get pods --show-labels  #查看所有pod的标签
# kubectl get pods --show-labels -L app #显示拥有app标签的值
# kubectl get pods --show-labels -L app,run #显示多个标签的标签值
# kubectl get pods --show-labels -l app #过滤拥有app标签的pod
# kubectl get pods --show-labels -l app=myapp #基于等值的标签选择器(=, ==, !=)
# kubectl get pods --show-labels -l "app in (myapp,noapp)" #基于集合关系的标签选择器(in, ontin)
# kubectl label pods pod-demo release=canary  #给pod打标
# kubectl label pods pod-demo release=stable --overwrite #修改标签的值
  • node标签
# kubectl get nodes --show-labels  #基于nodeSelector节点选择器
# kubectl label node node01 disktype=ssd #给node01增加disktype=ssd的标签
  • nodeSelector
spec:
nodeSelector: #使其pod只能运行在拥有disktype=ssd标签的node上
disktype: ssd
  • nodeName
spec:
nodeName: node01 #使其pod只能运行在node01上
  • annotations:与label不同的地方在于它不能用于挑选资源对象,仅用于为对象提供“元数据”
metadata:
annotations:
dongfei.tech/created-by: "cluster admin"
# kubectl describe pods pod-demo |grep Annotations

三、Pod生命周期

1、Pod生命周期中的行为

  1. init container:初始化容器,为主容器准备环境,可以有多个初始化容器(串行执行)
  2. main container:主容器
    1. post start:主容器启动后执行的程序
    2. liveness probe:存活状态监测,监测主进程是否正在运行
    3. readiness probe:就绪状态监测,监测主进程提供的服务是否就绪
    4. pre stop:主容器结束前执行的程序

2、Pod生命周期的状态

  1. Pending:挂起状态
  2. Running:运行状态
  3. Failed:失败状态
  4. Succeeded:成功状态
  5. Unknown:未知状态

3、Pod重启策略

spec:
restartPolicy:
Always:默认,总是重启
OnFailure:Pod失败则会重启
Never:不会重启

四、Pod容器存活性探测和就绪性探测

  • 三种探针类型:ExecAction、TCPSocketAction、HTTPGetAction

1、存活性探测

  • pods.spec.containers.livenessProbe.exec:存活性探测之exec探针
# cat liveness-exec.yaml
apiVersion: v1
kind: Pod
metadata:
name: liveness-exec-pod
namespace: default
spec:
containers:
- name: liveness-exec-container
image: busybox:latest
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c","touch /tmp/healthy; sleep 10; rm -rf /tmp/healthy; sleep 3600"]
livenessProbe:
exec:
command: ["test","-e","/tmp/healthy"] #探测命令
initialDelaySeconds: 1 #初始化延迟时间,默认0s
periodSeconds: 3 #隔多长时间探测一次,默认10s
failureThreshold: 3 #探测失败3次为失败,默认3次
successThreshold: 1 #探测成功1次为成功
restartPolicy: Always #探测失败时的重启策略
# kubectl get pods -w #监控POD状态
# kubectl describe pods liveness-exec-pod |grep "Restart Count" #查看Pod重启次数
  • pods.spec.containers.livenessProbe.tcpSocket:存活性探测之tcpSocket探针
  • pods.spec.containers.livenessProbe.httpGet:存活性探测之httpGet探针
# cat liveness-httpget.yaml
apiVersion: v1
kind: Pod
metadata:
name: liveness-httpget-pod
namespace: default
spec:
containers:
- name: liveness-httpget-container
image: dongfeimg/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
livenessProbe:
httpGet:
port: http
path: /index.html
initialDelaySeconds: 1
periodSeconds: 3
# kubectl exec -it liveness-httpget-pod -- /bin/sh #手动连入pod
/ # rm -f /usr/share/nginx/html/index.html #删除index.html文件,探测失败会重启

2、就绪性探测

  • pods.spec.containers.readinessProbe.httpGet:就绪性探测之httpGet探针
# cat readiness-httpget.yaml
apiVersion: v1
kind: Pod
metadata:
name: readiness-httpget-pod
namespace: default
spec:
containers:
- name: readiness-httpget-container
image: dongfeimg/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
readinessProbe:
httpGet:
port: http
path: /index.html
initialDelaySeconds: 1
periodSeconds: 3
  • 其他参考存活性探测

五、启动后和终止前钩子

  • pods.spec.containers.lifecycle.postStart:启动后钩子
# cat poststart-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: poststart-pod
namespace: default
spec:
containers:
- name: busybox-httpd
image: busybox:latest
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: ["mkdir","-p","/data/web/html"] #在command命令后执行此命令
command: ["/bin/sh","-c","sleep 3600"]
  • pods.spec.containers.lifecycle.preStop:终止前钩子

5、kubernetes资源清单之Pod应用190709的更多相关文章

  1. kubernetes资源清单之pod

    什么是pod? Pod是一组一个或多个容器(例如Docker容器),具有共享的存储/网络,以及有关如何运行这些容器的规范. Pod的内容始终位于同一地点,并在同一时间安排,并在共享上下文中运行. Po ...

  2. 6、kubernetes资源清单之Pod控制器190714

    一.Pod控制器的类别 ReplicationController:早期唯一的控制器,已废弃 ReplicaSet:控制Pod满足用户期望副本:标签选择器选择由自己管理的Pod副本:Pod资源模板完成 ...

  3. Kubernetes中资源清单与Pod的生命周期(二)

    一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...

  4. kubernetes 资源清单定义入门

    k8s中的资源 什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet Deploymen ...

  5. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  6. 【04】Kubernets:资源清单(pod)

    写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...

  7. (四)Kubernetes 资源清单定义

    Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...

  8. Kubernetes 学习5 kubernetes资源清单定义入门

    一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...

  9. 4、kubernetes资源清单快速入门190625

    一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发 ...

随机推荐

  1. 数据库oracle一些操作(MiTAC)

    oracle计算时间差函数: 两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: ROUND(TO_NUMBER(END_D ...

  2. Git复习(六)之标签管理

    标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库 ...

  3. html5_禁止复制网站内容

    ```//若是你不想别人复制你的网站内容,可以把这段js代码加到你网页上,即可屏蔽鼠标右键菜单.复制粘贴.选中等 有时候的需求是网站中有些内容不希望别人复制,那么就需要用代码控制.方法有多种:第一种: ...

  4. 使用python的selenium库刷超星网课

    网课很多看不完呀 所以动手做了一个基础的自动答题和下一节的程序 用到了python 3 selenium Chrome 如何自动化Chrome?https://www.cnblogs.com/eter ...

  5. 20、Nginx高可用架构

    1.Keepalived高可用基本概述 1.1.什么是高可用 一般是指2台机器启动着相同的业务系统,当有一台机器down机了, 另外一台服务器能快速的接管, 对于访问的用户是无感知的. 1.2.高可用 ...

  6. Dubble 01 架构模型&start project

    Dubbo 01 架构模型 传统架构 All in One 测试麻烦,微小修改 全都得重新测 单体架构也称之为单体系统或者是单体应用.就是一种把系统中所有的功能.模块耦合在一个应用中的架构方式.其优点 ...

  7. PAT Basic 1018 锤子剪刀布 (20 分)

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...

  8. 牛客小白月赛12 J 月月查华华的手机 (序列自动机模板题)

    链接:https://ac.nowcoder.com/acm/contest/392/J 来源:牛客网 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机.月月出于人类最单纯的好奇 ...

  9. Django学习系列11:在服务器中处理POST请求

    之前的代码还没有为表单指定action=属性,因此提交表单默认返回之前渲染的页面,即“/”,这个由视图函数home_page处理.下面修改这个视图函数,让它能处理POST请求. 这意味着要为视图函数h ...

  10. 找到并更改启动时间(timeout)

    centos7更改引导项等待时间 centos7已经不用grub,改用grub2. [ root]# vi /boot/grub2/grub.cfg 找到并更改启动时间(timeout) [root] ...