深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
116705 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

12 | 牛刀小试:我的第一个容器化应用

声明式API
Metadata和Spec
控制器模式
创建API对象
使用YAML文件
容器管理方式的转变
API对象管理关系
Kubernetes推荐的使用方式
Volume更新
Volume声明
Volume类型
使用kubectl apply命令
使用kubectl replace指令
修改YAML文件
应用发布的一致性
使用kubectl apply命令
使用kubectl create指令
配置文件编写
制作容器的镜像
准生产级别的Kubernetes集群
部署完整的Kubernetes集群
思考题
总结
应用删除操作
Volume管理
应用升级操作
应用发布操作
应用开发者角色
Kubernetes集群部署
牛刀小试之我的第一个容器化应用
牛刀小试:我的第一个容器化应用

该思维导图由 AI 生成,仅供参考

你好,我是张磊。今天我和你分享的主题是:牛刀小试之我的第一个容器化应用。
在上一篇文章《从 0 到 1:搭建一个完整的 Kubernetes 集群》中,我和你一起部署了一套完整的 Kubernetes 集群。这个集群虽然离生产环境的要求还有一定差距(比如,没有一键高可用部署),但也可以当作是一个准生产级别的 Kubernetes 集群了。
而在这篇文章中,我们就来扮演一个应用开发者的角色,使用这个 Kubernetes 集群发布第一个容器化应用。
在开始实践之前,我先给你讲解一下 Kubernetes 里面与开发者关系最密切的几个概念。
作为一个应用开发者,你首先要做的,是制作容器的镜像。这一部分内容,我已经在容器基础部分《白话容器基础(三):深入理解容器镜像》重点讲解过了。
而有了容器镜像之后,你需要按照 Kubernetes 项目的规范和要求,将你的镜像组织为它能够“认识”的方式,然后提交上去。
那么,什么才是 Kubernetes 项目能“认识”的方式呢?
这就是使用 Kubernetes 的必备技能:编写配置文件。
备注:这些配置文件可以是 YAML 或者 JSON 格式的。为方便阅读与理解,在后面的讲解中,我会统一使用 YAML 文件来指代它们。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了作者在Kubernetes集群中发布第一个容器化应用的实践过程。作者首先解释了Kubernetes中与开发者关系最密切的概念,包括制作容器镜像和编写配置文件。他详细介绍了使用YAML文件来定义Kubernetes中的API对象,以及如何使用kubectl命令来创建、更新和管理这些对象。文章还涵盖了Pod、Deployment和控制器模式的概念,以及如何使用kubectl命令来检查和描述API对象的状态和细节。最后,作者展示了如何通过修改YAML文件并使用kubectl apply命令来更新Kubernetes中的应用。整篇文章以实际操作为主线,通过具体的代码示例和命令展示了容器化应用在Kubernetes集群中的发布和管理过程。 文章重点介绍了Kubernetes中使用YAML文件定义API对象、通过kubectl命令管理对象、以及容器化应用在Kubernetes集群中的发布和更新过程。读者可以通过本文了解Kubernetes的基本操作方式,以及如何利用YAML文件实现声明式API,从而更好地理解和应用Kubernetes技术。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(101)

  • 最新
  • 精选
  • gogo
    推荐使用replica=1而不使用单独pod的主要原因是pod所在的节点出故障的时候 pod可以调度到健康的节点上,单独的pod只能在节点健康的情况下由kubelet保证pod的健康状况吧

    作者回复: 对的

    2018-09-19
    7
    261
  • shao
    下面的写法有问题 hostPath: /var/data 建议改成: volumes: - name: nginx-vol hostPath: path: "/home/vagrant/mykube/firstapp/html"

    作者回复: 已修正

    2018-09-19
    29
  • 千寻
    emptyDir创建一个临时目录,pod删除之后临时目录也会被删除。在平时的使用下,有哪些场景会用到这种类型volume呢?

    作者回复: 临时写文件,又不想提交到镜像里。另外,volume并不跟pod同生命周期,不会删的这么快。

    2018-09-19
    5
    28
  • 巩夫建
    yaml文件中如何使用变量,不是环境变量env那种,而是我在yaml定义一个版本号的变量,当版本发生变更,我只需要修改版本号变量,或者外部传参就行了。不希望频繁修改yaml文件。

    作者回复: 可以使用placeholder,或者yaml模板jinja

    2018-09-20
    5
    22
  • fiisio
    想问下大规模集群使用怎样的部署方式比较好,主要考虑到后期的运维,更新?例如2000节点以上。

    作者回复: 2k节点一般得用saltstack等专业武器了,毕竟管2k个机器已经可以排除大部分工具了……

    2018-09-19
    20
  • 西堤小筑
    老师您好,咨询一个问题: 对于一些需要科学上网才能pull下来的docker image,通常是使用docker hub上的私人image pull到本地再改tag来完成。但k8s上用yaml写的image地址,运行的时候就直接从网上pull了,什么写法可以做到使用本地image,不让k8s从网上pull呢?

    作者回复: 一样的啊,写private registry不就可以了。密码可以用Secret保存。

    2018-10-10
    3
    12
  • 落叶
    请问,业务为了负载,起相同两个pod,属于同一个service里面,这个有负载功能会把请求负载到两个pod上面吗?我测试对于长链接,只有一个pod在接受请求,另一个什么都没有

    作者回复: 你都说了是长链接了……

    2018-09-20
    5
    12
  • hjt353
    kubernetes 有很多资源对象:包括 configmap Deployment Namespace 等资源,我在编写这些资源 yaml 文件时,比如:deployment.yaml 文件,怎么查阅 deployment 资源包括哪些属性(比如:apivseresion kind spec等),这些属性又包含哪些配置信息(比如:.spec.replicas 配置)

    作者回复: 看kubernetes api文档

    2019-05-17
    3
    9
  • 送普选
    先给这专栏赞一个!如何在yml中的镜像版本号使用变量,这样开发修改后修改了代码递增了镜像版本,在yml中自动使用,不用修改yml文件?谢谢

    作者回复: sed替换,或者用yaml模板jinjia

    2018-09-22
    9
  • hhh
    从best practice的角度,一个pod是推荐运行一个容器还是多个容器?

    作者回复: 正是下一篇的内容

    2018-09-19
    7
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部