开发 k8s 管理平台 - k8sailor 16. 创建 Deployment
开发 k8s 管理平台 - k8sailor 16. 创建 Deployment
原文地址: https://tangx.in/posts/books/k8sailor/chapter02/16-create-deployment/
tag: https://github.com/tangx/k8sailor/tree/feat/16-create-deployment
使用 kubectl 命令创建如下
|
|
创建成功后查看结果, 大部分参数为默认参数。
|
|
在使用命令行传递参数的时候只传递了
name, image, replicas, pods
kubectl 根据传递的信息, 自动补全了一些信息
- 以 name 补全了
labels
:app: my-nginx-5
- 以 image 生成了
container name
; 如果传递多个 相同名称 image 将会报错 container name 冲突。
- 以 name 补全了
接下来的工作就真没什么技术含量了, 就是最简单最无脑的拼凑字段。
在 Annotations
字段中, 也可以夹带很多 私货。 例如, 在 CI 中可以加入很多关于 commit 的信息, 例如 提交人, 提交信息 等。 一切想夹带的都可以放进去。
|
|
一个标准的 image 地址类似 docker.io/libray/nginx:1.13-alpine
。 其中出现了多种特殊符号。 而 container name 只允许 小写字母, 数字,-
, 所以需要改造一下。 为了解决相同镜像冲突的问题, 还在末尾加上了 container 的 id
|
|
写下来也发现了一个问题 , 即使要拼凑字段, 也不应该写在一个结构体中。
- 本身 k8s 提供的诸多 Workloads 就是对 Pods 的 调度管理 的一层抽象,从而应对不同的场景。
- Pod 与 Containers 之间是一个组合关系。 Container 和 InitContainer 本身是一样的, 只是在不同阶段运行的区分。
因此, 更应该将三个 Spec 分开处理, 这样就能更好、更方便的进行组合复用。
- 向 Container 的构造函数中传入关键参数, 创建 Container 对象:
NewContainerSpec(params)
- 向 Pod 的构造函数中传入 关键参数和 container 对象, 创建 Pod 对象:
NewPodSpec(params, containers)
- 向 Deployment(或其他 Workload) 的构造函数中传入 关键参数和 pod 对象, 创建
Deployment
对象,NewDeploymentSpec(params, pod)
- 原文链接:https://typonotes.com/posts/books/k8sailor/chapter02/16-create-deployment/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。