什么是pod?

Pod是一组一个或多个容器(例如Docker容器),具有共享的存储/网络,以及有关如何运行这些容器的规范。 Pod的内容始终位于同一地点,并在同一时间安排,并在共享上下文中运行。 Pod对特定于应用程序的“逻辑主机”进行建模-它包含一个或多个相对紧密耦合的应用程序容器-在容器之前的世界中,在同一物理或虚拟机上执行将意味着在同一逻辑主机上执行 。

简单示例

apiVersion: v1
kind: Pod
metadata:
     name: nginx-pod
     namespace: default
spec:
     containers:
     - name: nginx-container
       image: nginx:latest

将清单提交给kubernetes集群,将创建定义的pod及其管理的pod

[root@master kubernetes]# kubectl apply -f pod-nginx.yaml

验证:

[root@master kubernetes]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 59s

pod的资源清单属性介绍:

kubectl explain pod

apiVersion <string>、kind <string>、metadata <Object>、spec <Object>、status <Object>(只读)。只要五个字段。

apiVersion: v1  #稳定版

kind: Pod    #资源类型为Pod

status只读不需要定义,所以只剩下两项metadata和spec。下面详解这两项

kubectl explain pod.metadata  这里只介绍常用的属性

annotations <map[string]string>   #注释是与资源一起存储的非结构化键值映射

labels <map[string]string>       #用法请看下面示例,看到<map[string]string>这种都是用下面的示例用法。

name <string>          #名称是显示在kubectl get pod的名称

namespace <string>        #类型有4种,查询namespace命令:kubectl get namespace

metadata.labels示例

labels:
  keys:values
  ...

kubectl explain pod.spec

containers <[]Object> -required-    #kubernetes根据这个属性需求进行创建pod,请看下面介绍。

nodeName <string>          #根据nodeName的值与节点的名称进行匹配,成功就创建pod。查看节点:kubectl get node

nodeSelector <map[string]string>    #根据nodeSelector的标签与节点的标签进行匹配,成功就创建pod。查看节点标签:kubectl get node --show-labels

restartPolicy <string>          #重启策略,有3种策略(Always, OnFailure(正常退出才会重启), Never. Default to Always.)

kubectl explain pod.spec.containers

name <string> -required-      #容器的名称

image <string>           #容器的镜像,用法:image: 镜像:标签

imagePullPolicy <string>      #有三个策略(Always(不管存不存,都从网上拉镜像), Never(不管存不存,都不从网上拉镜像), IfNotPresent(当节点存在镜像就不拉镜像). Defaults to Always)

command <[]string>        #启动pod的命令

args <[]string>            #启动pod命令的参数

ports <[]Object>            #pod暴露的端口给宿主机。用法请看下面的示例。 看到<[]Object>这种都是下面的示例用法。

spec.containers.ports示例

ports:
- name: <string>            #port的名称
  containerPort: <integer> -required-    #暴露的端口号

综合示例:

---
apiVersion: v1
kind: Pod
metadata:
  annotations:
    Author: mycloudedu
  name: busybox-pod
  namespace: default
  labels:
    app: busybox
    tier: backup
spec:
  containers:
  - name: busybox-container
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    command:
    - '/bin/sh'
    - '-c'
    - 'sleep 3600'
  nodeName: node01

验证:

[root@master kubernetes]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-pod 1/1 Running 0 2m52s 10.244.1.40 node01 <none> <none>

[root@master kubernetes]# kubectl describe pods busybox-pod

...展示部分内容

Command:
/bin/sh
-c
sleep 3600

...

Pod Lifecycle:管理系统响应容器生命周期事件应采取的措施。

示例

---
apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-poststart-pod
  namespace: default
  labels:
    app: nginx
    tier: frontend
spec:
  containers:
  - name: lifecycle-poststart-container
    image: nginx:latest
    imagePullPolicy: IfNotPresent
  lifecycle:
    postStart:
      exec:
        command: ["/bin/sh","-c","echo Hello from the postStart handler > /usr/share/nginx/html/index.html"]

验证:

[root@master kubernetes]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
lifecycle-poststart-pod 1/1 Running 0 13s 10.244.2.36 node02 <none> <none>
[root@master kubernetes]# curl 10.244.2.36
Hello from the postStart handler

查看lifecycle用法:kubectl explain pod.spec.containers.lifecycle

pod livenessProbe:定期检查容器的活动性。如果探测失败,容器将重新启动。

示例

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 /1.txt; sleep 10; rm -f /1.txt; sleep 3600"
    livenessProbe:
    periodSeconds: 2
    exec:
      command:
      - "cat"
      - "/1.txt"

验证:

[root@master kubernetes]# kubectl get pod
NAME READY STATUS 5s

[root@master kubernetes]# kubectl get pod
NAME READY STATUS 54s

查看livenessProbe用法:kubectl explain pod.spec.containers.livenessProbe

pod readinessprobe:定期调查容器服务准备情况。如果探测失败,容器将从服务端点中删除。

示例

---
apiVersion: v1
kind: Pod
metadata:
  name: readinessprobe-httpget-pod
  namespace: default
spec:
  containers:
  - name: readinessprobe-httpget-container
    image: nginx:latest
    ports:
    - name: http
      containerPort: 80
    imagePullPolicy: IfNotPresent
    readinessProbe:
    httpGet:
      port: 80
       periodSeconds: 3
          initialDelaySeconds: 2

验证

[root@master kubernetes]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
readinessprobe-httpget-pod 1/1 Running 0 23s 10.244.2.38 node02 <none> <none>

交互式进入pod,人为破坏主页文件

[root@master kubernetes]# kubectl exec readinessprobe-httpget-pod -it -- /bin/sh

# rm /usr/share/nginx/html/index.html

验证

[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
readinessprobe-httpget-pod 0/1 Running 0 113s

交互式进入pod,人为创建主页

[root@master kubernetes]# kubectl exec readinessprobe-httpget-pod -it -- /bin/sh

# echo 'hello' > /usr/share/nginx/html/index.html

验证

[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
readinessprobe-httpget-pod 1/1 Running 0 2m56s
[root@master ~]# curl 10.244.2.38
hello

查看readinessProbe用法:kubectl explain pod.spec.containers.readinessProbe

更常用的是pod ReplicaSets,查看请点击

kubernetes资源清单之pod的更多相关文章

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

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

  2. 5、kubernetes资源清单之Pod应用190709

    一.Pod镜像及端口 获取帮助文档 # kubectl explain pod.spec.containers spec.containers <[]object> pod.spec.co ...

  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. LAMP之Apache调优

    一.环境的搭建 实验环境: 操作系统:Centos 7.4 [root@xuegod70 ~]# ls apr-1.6.3.tar.gz apr-util-1.6.1.tar.bz2 httpd-2. ...

  2. [ZT]Enhancement-01

    Enhancement(1)--BTEs 最近一个同事碰到一个FI的增强,要用BTEs实现,我也是第一次接触到这种增强,所以跟着他一起做了一下.写一个这方面的小节.    BTEs(Business ...

  3. springboot-定时任务-单线程

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annot ...

  4. iOS UITextField限制输入字数

    关于iOS的文本框有时需要限制字数,如手机号,在UITextField的代理单纯写一个判断,在字数超过限制时,这时再想删除就删除不掉,可以在代理这样写,就解决 - (BOOL)textField:(U ...

  5. 【VS开发】【C/C++开发】C++参数策略传递内存

    参数策略 如果函数的参数是一个指针,不要指望用该指针去动态申请内存.如下: void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(c ...

  6. teach-es6-2(class)

    1 属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. var foo = 'bar'; var baz = {foo}; baz // {foo: &quo ...

  7. day31 socket套接字编程

    为什么要有套接字编程? 在上节课的学习中,我们学习了OSI七层协议,但是如果每次进行编程时我们都需要一层一层的将各种协议使用在我们的程序中,这样编写程序实在是太麻烦了,所以为了让程序的编写更加的简单, ...

  8. [转帖]中芯国际14nm秋季量产 7nm工艺或在2020年底问世

    中芯国际14nm秋季量产 7nm工艺或在2020年底问世 https://news.mydrivers.com/1/641/641087.htm 中芯正在发力.. 今年秋天 14nm两场 明年底 7n ...

  9. [ZJOI2010]数字计数 题解

    题面 这道题是一道数位DP的模板题: 因为窝太蒟蒻了,所以不会递推,只会记忆化搜索: 首先,咋暴力咋来: 将一个数分解成一个数组,这样以后方便调用: 数位DP的技巧:(用1~b的答案)-(1~a的答案 ...

  10. 【NOIP2015普及组】 推销员(纪中数据-标准)

    题目 [题目描述] 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家住户,第 i 家住户到入口的距离为 ...