kubernetes资源清单之pod
什么是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的更多相关文章
- 6、kubernetes资源清单之Pod控制器190714
一.Pod控制器的类别 ReplicationController:早期唯一的控制器,已废弃 ReplicaSet:控制Pod满足用户期望副本:标签选择器选择由自己管理的Pod副本:Pod资源模板完成 ...
- 5、kubernetes资源清单之Pod应用190709
一.Pod镜像及端口 获取帮助文档 # kubectl explain pod.spec.containers spec.containers <[]object> pod.spec.co ...
- Kubernetes中资源清单与Pod的生命周期(二)
一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...
- kubernetes 资源清单定义入门
k8s中的资源 什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet Deploymen ...
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- 【04】Kubernets:资源清单(pod)
写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...
- (四)Kubernetes 资源清单定义
Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...
- Kubernetes 学习5 kubernetes资源清单定义入门
一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...
- 4、kubernetes资源清单快速入门190625
一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发 ...
随机推荐
- keepalived+LVS-DR集群
一.Keepalived介绍 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的 ...
- matlab中如何给一个矩阵中的某几个特定位置赋值
用sub2ind >> a=zeros(5); i = [2;3;4]; j = [1;4;2]; >> a(sub2ind(size(a), i, j))=1 a = 0 0 ...
- SpringBoot: 5.访问静态资源(转)
springboot默认从项目的resources里面的static目录下或者webapp目录下访问静态资源 方式一:在resources下新建static文件(文件名必须是static) 在浏览器中 ...
- k8s 网络模型解析之实践
一. 实践说明 首先我们先创建一组资源,包括一个deployment和一个service apiVersion: apps/v1 kind: Deployment metadata: name: ng ...
- 【HANA系列】对话SAP全球CEO孟鼎铭:未来最大的发展机遇属于中国中小企业
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]对话SAP全球CEO孟鼎铭:未来 ...
- HTML5元素周期表
HTML5元素周期表 根元素 1. html 文档根元素 元数据和脚本 1. head HTML文档中的第一个元素.包含文档元数据 2. title 文档标题 3. meta 文档的元数据. meta ...
- loadrunner脚本因为没有token报错
目录 场景 解决过程 解决方案 总结 场景 用loadrunner11录制脚本,处理后回放,加上检查点,报错找不到检查点对应的内容,去掉检查点,没有报错,但是打开页面没有该操作的痕迹.手动在页面上操作 ...
- 用myeclipse连接MySQL8.0时没有配置jar包
先上测试代码 package testJdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...
- Python学习笔记——集合
1. 定义 num = {} print(type(num)) num2 = {1,2,3,4,5} print(type(num2)) <class 'dict'> <class ...
- 关于bootstrap的响应式插件respond.min.js在IE8下出现:拒绝访问。respond.min.js,行: 5,列: 746报错问题
本地在IE8浏览器下测试兼容性的时候,出现了以下的报错: 该问题在bootstrap的官网有介绍:https://v3.bootcss.com/getting-started