今天要讲的是 k8s 丛集对於 Workload 管理做讲解
以下将会解释一些名词定义, 以方边後续解说
一个应用跑在 k8s 丛集上叫作 Workload
Workload 可以是一到多个 Pod 所组成
Pod 整个运行周期, 可以分成几个阶段
Pending: 当 Pod 被 kubelet 开始生成 Pod 所需资源, 但还没完成资源建立
Running: 当 Pod 建立完成, 所有资源都建立完成, 但还有些 Container 没有到 Desired staus 或是即将 Restart
Succeeded: 所有 Container 都成功运行, 并且没有 Restart
Failed: 所有 Container 都进结束运行, 并且至少有一个是因为失败而结束
Unknown: 发生某些因素造成 Pod 状态无法获取
状态转换图描述如下:
前面有很多章节在讲解到 Pod 的发布, 都是直接透过 Deployment 来处理
然而, 其实还是可以独立产生一个 Pod
Pod 本身具有上述的生命周期需要注意
所以 k8s 丛集并不是直接与 Pod 做互动
而是透过一些管理元件来处理, 比如说 Deployment, ReplicaSet 等等
这些管理元件被称为 Workload Resources
要达成一个 Workload 就会透过以下 Workload Resources 来进行管理
k8s 丛集用 ReplicaSet 来管控多个相同 Pod 组成的集合能够维持一定的量
透过 selector 来找寻对应 labels 的 Pod
k8s 丛集用 Deployments 来管控多个 ReplicaSet
当 Deployment 建立时, replicas 参数用来设定 ReplicaSet 建立的数量
范例语法如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
k8s 丛集用 StatefulSet 来运行一或多个相关具有状态的 Pod
举例来说:
当一个 Workload 需要保存状态, 这时就可以使用 StatefulSet 来建立
并且让每个 Pod 都有 PersistentVolume 来存放状态
透过 StatefulSet 可以拓展资料备份, 让 Workload 更据可靠性
k8s 丛集用 DaemonSet 来运行提供节点上一些基础功能的 Pod,
比如一些网路辅助功能工具, 或是一些扩充工具
Job 代表一些只跑一次的工作
CrobJobs 则会根据定义的排程周期去执行
在更大的 k8s 生态系, 可能会找到更多第三方提供的 Workload Resources 来定义更多运行方式
k8s 提供 custom resources definition 来使用这些第三方提供的 Workload Resources
这样就可以提供更多样性, 更完善的运行 Pod 的方式
<<: [Day 29] 资料产品开发实务 - 自动贴标系统
>>: 我跟你一百万,再大你一百万,再show hand - 跟庄家吃香喝辣 ?
铁人赛的前20天,把常常混淆的那些观念重新理解过一遍之後,後面的10天打算来练习切版,希望透过实际练...
共变数covariance 共变数是用来衡量两个变数变动的方向及程度。若两变数分别X跟Y,如果X的变...
来练习帮 Google Sheets(电子试算表)增加一点内容吧。 今日要点: 》Spreadsh...
一个技术要火起来有时候不只要有真本事?还需要一点时机,巧合,比如发明平板的其实是微软,但让平板走入大...
始於糖醋,终於糖醋,一如挑战30天铁人出好菜的滋味,酸酸甜甜 最後一场铁人,再次挑战炸物料理,有了...