2-1.了解Pod对象
1.Pod参数定义
# 必填,版本号
apiVersion: string
kind: Pod
# 必填,元数据
metadata:
# 必填,Pod对象的名称(命名规范需要符合RFC 1035规范)
name: string
# 必填,Pod对象所属的命名空间,默认值为default
namespace: string
# 自定义标签列表(取值类型:List)
labels:
- name: string
# 自定义标签注解(取值类型:List)
annotations:
- name: string
# 必填,Pod对象中容器的详细定义
spec:
# 必填,Pod对象容器列表(取值类型:List)
containers:
# 必填,容器的名称(需要符合RFC 1035规范)
- name: string
# 必填,容器镜像名称
image: string
# 获取镜像的策略,默认值为:Always
# Always: 每次都尝试重新下载镜像
# Never: 仅使用本地镜像
# IfNotPresent: 如果本地不存在,就下载镜像
imagePullPolicy: [Always | Never | IfNotPresent]
# 容器启动命令列表,若不指定则使用镜像打包时使用的启动命令
command: [string]
# 容器的启动命令参数列表
args: [string]
# 容器的工作目录
workingDir: string
# 挂载到容器内部的存储卷配置(取值类型:List)
volumeMounts:
# 引用Pod定义的共享存储卷的名称,需使用镜像volumes[]部分定义的共享卷名称
- name: string
# 存储卷在容器内Mount的绝对路径(应少于512个字符)
mountPath: string
# 是否只读模式,默认false(读写模式)
readOnly: boolean
# 容器需要暴露的端口号(取值类型:List)
ports:
# 端口的名称
- name: string
# 容器需要监听的端口号
containerPort: int
# 容器所在主机需要监听的端口号,默认与containerPort相同
# (设置hostPort时,同一台宿主机将无法启动该容器的第二副本,由于端口占用问题)
hostPort: int
# 端口协议[TCP/UDP],默认为TCP
protocol: string
# 容器运行前需要设置的环境变量列表
env:
# 环境变量的名称
- name: string
# 环境变量的值
value: string
# 资源限制和资源请求的设置
resource:
# 资源限制设置
limits:
# CPU限制(单位为:core)将用于docker run --cpu-shares参数
cpu: string
# 内存限制(单位为:MiB/GiB)将用于docker run --memory参数
memory: string
# 资源限制设置(请求)
requests:
# CPU请求(单位为:core)将用于容器启动的初始化可用数量
cpu: string
# 内存请求(单位为:MiB/GiB)将用于容器启动的初始化可用数量
memory: string
# 对Pod对象内各个容器进行安全检查的设置,当探测无响应几次后,将自动重启该容器
# 包含[exec | httpGet | TcpSocket]三种方式,任选其一即可
livenessProbe:
exec:
# 需要执行的脚本
command: [string]
httpGet:
# 请求路径
path: string
# 请求端口
port: number
host: string
scheme: string
httpHeader:
- name: string
value: string
tcpSocket:
port: number
# 完成容器启动后首次进行探测的时间(单位为:s)
initialDelaySeconds: 0
# 对容器健康检查探测等待超时时间(单位为:s),默认值为1
timeoutSeconds: 0
# 对容器健康检查的探测时间周期(单位为:s),默认值为10
periodSeconds: 0
successThreshold: 0
failureThreshold: 0
securityContext:
privileged: boolean
#
# Pod对象的重启策略,可选值[Always | Never | OnFailure]
#
# Always: Pod对象一旦终止,则不关心容器是如何停止的,kubelet都将重器容器
#
# Never: Pod对象终止后,kubelet将退出码返回给Master,不再重启该容器
#
# OnFailure: 只有当Pod对象以非零退出码终止时,kubelet才会重启该容器
# (容器正常结束的退出码为零)
#
restartPolicy: [Always | Never | OnFailure]
# 表示将Pod对象调度到包含这些label的Node上(以key:value形式指定)
nodeSelector: object
# Pull镜像时使用的secret名称(以name:secretValue形式指定)
imagePullSecrets:
- name: string
# 是否使用主机模式(默认值为:false)
#
# 如果设置为true,表示容器使用宿主机网络,不再使用Docker网桥
# 该Pod对象将无法在同一台宿主机上启动第二个副本
hostNetwork: boolean
# 在该Pod对象上定义的共享储存卷列表
volumes:
# 共享储存卷名称,一个Pod对象中每个储存卷定义一个名称(命名应按照RFC 1035规范)
- name: string
# Pod对象同生命周期的一个临时目录,值为{}空对象
emptyDir: {}
# 挂载Pod对象所在宿主机的目录
hostPath:
# 将用于容器中mount的目录
path: string
# 挂载集群中预定义的secret对象到容器内部
secret:
secretName: string
items:
- key: string
path: string
# 挂载集群预定义的configMap对象到容器内部
configMap:
name: string
items:
- key: string
path: string
2.Pod的基本用法
Pod对象可以由1个或者多个容器组合而成。当两个或者多个容器应用为紧耦合关系,应该组合成一个整体对外提供服务,即将这两个容器打包为一个Pod对象。
2.1 静态Pod对象
静态Pod对象是由Kubelet进行管理的仅存在于特定Node上的Pod对象。他们不可以通过API Server进行管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet也无法对他们进行健康检查。静态Pod对象总是由kubelet进行创建,并且总是运行在kubelet所在的Node上运行。
创建静态Pod对象的两种方式:
配置文件
a.设置kubelet的启动参数[--config]: 指定kubelet需要监控的配置文件所在的目录,kubelet将会定期扫描该目录,并根据该目录下的*.yaml或者*.json进行创建.
b.重启kubelet服务HTTP方式
设置kubelet启动参数[--manifest-url]: kubelet将会定期请求此URL下载Pod对象的定义文件,并以*.yaml或*.json文件格式解析,创建Pod对象。
2.2 Pod对象容器共享卷
在同一个Pod对象中的多个容器能够共享Pod对象级别的存储卷。Volume可以被定义为各种类型,容器各自进行挂载操作,将一个Volume挂载为容器内容存储卷。
配置文件示例:
apiVersion: v1
kind: Pod
metadata:
name: volume-pod
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerPort: 8080
volumeMounts:
- name: app-logs
mountPath: /usr/local/tomcat/log
- name: logreader
image: busybox
command: ["sh", "-c", "tail -f /logs/catalina*.log"]
volumeMounts:
- name: app-logs
mountPath: /logs
volumes: app-logs
- name: app-logs
emptyDir: {}
2.3 Pod对象的配置管理
为了提高应用部署的复用能力以及灵活性,可以将应用所需要的配置文件与程序进行分离。将应用打包为容器镜像后,可以通过环境变量配置、挂载外部文件的方式在创建容器时进行配置注入,但唯一的缺点维护性与复杂性将会在大规模容器集群中所体现。但在Kubernetes中可以通过ConfigMap进行管理。
1)ConfigMap的概念
- 生成为容器内的环境变量
- 设置容器的启动命令参数
- 通过Volume的形式挂载到容器内部
ConfigMap以一个或者多个[Key:Value]
的形式保存在Kubernetes系统中。可以通过*.yaml
配置文件或者kubelet create [-f configmap.yaml]
命令进行创建配置管理内容。
2)创建ConfigMap资源对象
a) *.yaml实例
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-appvars
data:
apploglevel: info
appdatadir: /var/data
b) kubelet命令
# 1.创建configmap.yaml配置文件
kubelet create -f cm-appvars.yaml
> configmap "cm-appvars" created
# 2.查看创建完成的配置文件
kubelet get configmap
# NAME DATA AGE
# cm-appvars 2 3s
# 3.查看指定配置的详细内容
kubelet get configmap cm-appvars -o yaml
2-1.了解Pod对象的更多相关文章
- Kubernetes — 深入解析Pod对象:基本概念(一)
在上一篇文章中,我详细介绍了 Pod 这个 Kubernetes 项目中最重要的概念. 现在,你已经非常清楚:Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位.将这个设计落实到 A ...
- Kubernetes — 深入解析Pod对象:基本概念(二)
作为 Kubernetes 项目里最核心的编排对象,Pod 携带的信息非常丰富.其中,资源定义(比如 CPU.内存等),以及调度相关的字段.在本篇,我们就先从一种特殊的 Volume 开始,来帮助你更 ...
- [Kubernetes]深入解析Pod对象
k8s集群搭建是比较容易的,但是我们为什么要搭建,里面涉及到的内容,我们为什么需要? 这篇文章就尝试来讲讲,我们为什么需要一个Pod,对Pod对象来一个深入解析. 我们为什么需要Pod 我们先来谈一个 ...
- 14. 深入解析Pod对象(一)
14. 深入解析Pod对象(一) """ 通过前面的讲解,大家应该都知道: Pod,而不是容器,它是 Kubernetes 项目中的最小编排单位.将这个设计落实到 API ...
- 15. 深入解析Pod对象(二):使用进阶
15. 深入解析Pod对象(二):使用进阶 15.1 Projected Volume,投射数据卷 备注:Projected Volume 是 Kubernetes v1.11 之后的新特性 在 Ku ...
- kubernetes-深入理解pod对象(七)
Pod中如何管理多个容器 Pod中可以同时运行多个进程(作为容器运行)协同工作.同一个Pod中的容器会自动的分配到同一个 node 上.同一个Pod中的容器共享资源.网络环境和依赖,它们总是被同时调度 ...
- kubernetes实践之三:深入理解Pod对象
一.Pod定义 最小部署单元 一组容器集合 一个pod中的容器共享网络命名空间 Pod是短暂的 二.Pod容器分类 基础容器 维护整个Pod的网络命名空间 初始化容器 先于业务容器开始执行,在应用启动 ...
- 第6章:深入理解Pod对象
Pod是最小的部署单元,也是后面经常配置的地方,本章节带你熟悉Pod中常见资源配置及参数. 也就是YAML这部分: ... template: metadata: labels: app: web s ...
- Kubernetes对象之Pod
系列目录 Pod是Kubernetes调度的最小单元.一个Pod可以包含一个或多个容器,因此它可以被看作是内部容器的逻辑宿主机.Pod的设计理念是为了支持多个容器在一个Pod中共享网络和文件系统 因此 ...
随机推荐
- Mutual Information
Mutal Information, MI, 中文名称:互信息. 用于描述两个概率分布的相似/相关程度. 常用于衡量两个不同聚类算法在同一个数据集的聚类结果的相似性/共享的信息量. 给定两种聚类结果\ ...
- 用Java实现简单的网络聊天程序
Socket套接字定义: 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他 ...
- 深度学习中的特征(feature)指的是什么?
一般在machine learning意义上,我们常说的feature,是一种对数据的表达.当然,要衡量一种feature是否是合适的表达,要根据数据,应用,ML的模型,方法....很多方面来看.一般 ...
- Burpsuite Pro 2020.1最新破解版
简介 Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应的HTTP ...
- pytorch之 activation funcion
import torch import torch.nn.functional as F from torch.autograd import Variable import matplotlib.p ...
- 在Linux实例上自动安装并运行VNC Server
#!/bin/bash ######################################### #Function: install vnc server #Usage: bash ins ...
- [Python]JavaScript VS Python 函数
js function 相当于 python def js语句结束符; python为缩进符 JavaScript /*定义*/ function 函数名(参数1,参数2,参数3...){ 函数体 } ...
- 双向绑定Proxy VS Object.defineProperty
Vue3.0的双向绑定将使用Proxy代替Object.defineProperty,据尤大说,速度提升了1倍. 本文我们来探讨一下Proxy对比Object.defineProperty究竟有哪些优 ...
- Arm开发板+Qt学习之路-析构函数和对话框一起时
先记录一下代码 一:先将指针释放掉,在显示对话框 void MainWindow::canResponseError(SendCanMsgThread *sendCanMsgThread ){ std ...
- Python面试(基础)
第一部分 必答题 1,简述列举了解的编程语言及语言间的区别? Python 解释型语言,代码简洁,易懂 C语言 编译型语言,底层语言 c++ 编译型语言,在C语言基础上加了面向对象 Java 混合型语 ...