部署托管的 Pod
存活探针(liveness probe) :检查容器是否还在运行,探测失败, Kubemetes 将定期执行探针并重新启动容器。
HTTP GET 探针对容器的 IP 地址(你指定的端口和路径)执行 HTTP GET 请求。
TCP 套接字探针尝试与容器指定端口建立 TCP 连接。
Exec 探针在容器内执行任意命令,并检查命令的退出状态码。如果状态码是 0, 则探测成功,所有其他状态码都被认为失败。
显示前一个容器的日志
kubectl logs <Pod-Name> --previous
当容器被强行终止时,会创建一个全新的容器----而不是重启原来的容器。
务必设置一个探针初始延迟来说明应用程序的启动时间。
退出代码 137 表示进程被外部信号终止, 退出代码为 128+9 (SIGKILL)。 退出代码 143 对应于 128+15 (SIGTERM)。
如果你在容器中运行Java应用程序, 请确保使用 HTTP GET 存活探针,而不是启动全新 JVM 以荻取存活信息的 Exec 探针。任何基于 JVM 或类似的应用程序也是如此, 它们的启动过程需要大量的计算资源。
Kubernetes会在容器崩溃或其存活探针失败时, 重启容器,这项任务由承载 pod 的节点上的 Kubelet 执行。
ReplicationController 是一种 Kubemetes 资源,确保它的 pod 始终保持运行状态。
ReplicationController 有三个主要部分
label selector (标签选择器), 用于确定 ReplicationController 作用域中有哪些 pod
replica count (副本个数), 指定应运行的 pod 数量
pod template (pod模板), 用于创建新的 pod 副本
更改标签选择器和 pod 模板对现有 pod 没有影响。更改标签选择器会使现有的 pod 脱离ReplicationController 的范围, 因此控制器会停止关注它们。
定义 ReplicationController 时不要指定 pod 选择器,让 Kubemetes 从 pod 模板中提取它。
# Pod选择器 spec: selector: app: kubia
获取 ReplicationController
kubectl get rc # rc 是 ReplicationController 的缩写
显示 rc 详情
kubectl describe rc <RC-Name>
编辑 Pod 模板
kubectl edit rc <RC-Name>
删除 RC
kubectl delete rc <RC-Name> --cascade=false
ReplicationController :标签选择器只允许包含某个标签的匹配pod。 ReplicaSet :选择器允许匹配缺少某个标签的 pod, 或包含特定标签名的 pod。
apiVersion 属性指定的两件事情:
API 组(在这种情况下是 apps)
实际的 API 版本(v1beta2)
显示 ReplicaSet
kubectl get rs kubectl describe rs [RS-Name]
matchExpressions
In : Label 的值必须与其中一个指定的 values 匹配。
Notln : Label 的值与任何指定的 values 不匹配。
Exists : pod 必须包含一个指定名称的标签(值不重要)。使用此运算符时,不应指定values字段。
DoesNotExist : pod 不得包含有指定名称的标签。values 属性不得指定。
如果指定多个表达式,则所有这些表达式都必须为 true 才能使选择器与 pod 匹配。
如果同时指定 matchLabels 和 matchExpressions, 则所有标签都必须匹配,并且所有表达式必须计算为 true 以使该 pod 与选择器匹配。
DaemonSet 在每个节点上只运行一个 pod 副本。
节点可以被设置为不可调度, 防止 pod 被部署到节点上。DaemonSet 会将 pod 部署到这些节点上,因为无法调度的属性只会被调度器使用,而 DaemonSet 管理的 pod 完全绕过调度器。
Job:运行完成工作后就终止任务。completions 指定次数,parallelism 指定并行任务。
小结:
使用存活探针,让 Kubemetes 在容器不健康的情况下立即重启它(应用程
序定义了健康的条件)。
不应该直接创建 pod , 因为如果它们被错误地删除,或正在运行的节点异常,或者它们从节点中被删除时, 它们将不会被重新创建。
ReplicationController 始终保持所需数量的 pod 副本正在运行。
水平缩放(Scale) pod 与在 ReplicationController 上更改所需的副本个数一样简单。
pod 不属于 ReplicationController, 如有必要可以在它们之间移动。
ReplicationController 将从 pod 模板创建新的 pod。更改模板对现有的 pod 没有影响。
ReplicationController 应该替换为 ReplicaSet 和 Deployment, 它们提供相同的能力, 但具有额外的强大功能。
ReplicationController 和 ReplicaSet 将 pod 安排到随机集群节点, 而 DaemonSet 确保每个节点都运行一个 DaemonSet 中定义的 pod 实例。
执行批处理任务(batch)的 pod 应通过 Kubernetes Job 资源创建, 而不是直接或通过ReplicationController 或类似对象创建。
需要在未来某个时候运行的 Job 可以通过 CronJob 资源创建。
Last updated
Was this helpful?