V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ligz
V2EX  ›  程序员

开源 k8s 的教程,全实战引导!顺带问各位大佬一个问题~

  •  5
     
  •   ligz · 2022-08-29 09:36:59 +08:00 · 6727 次点击
    这是一个创建于 842 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个教程起初源自于我看过的一份用 ruby 写的 k8s 英文教学文章,觉得写的很好,后来我自己也开始分享 k8s 相关的知识给周边的小伙伴听,过程发现还是有很多大佬对 k8s 不是很熟悉的,所以我想着整理出了这一份 k8s 的基础教程,帮助大家入门和精进 k8s 的使用。

    这份教程的优点在于:

    • 教学镜像是基于 golang 编写的基础代码,只要有代码基础的人都能看懂!
    • 教学镜像做过多次优化,目前是用打包成二进制的方式运行在 base image 中,压缩到 dockerhub 中仅 10MB !非常适合练习使用!
    • 实战代码很全,不是像其他教程一样理论说一大堆,最后来个 hello world 的 pod 。
    • 不仅是 k8s 的教程,后面会加上一些高级用法,例如 helm, k9s 等待。

    k8s 作为云原生时代的操作系统,学习它的必要性不言而喻,如果你觉得这个仓库有趣,可以在下方评论或者分享让更多人知道,如果你觉得这个仓库对你有价值,欢迎 start 或者提 PR / Issue ,让它变得更好!

    repository: https://github.com/guangzhengli/k8s-tutorials

    我目前的疑惑点是:为了让大家直接上手操作,理论方面没写太多,在平常线下分享时,我可以口头解释很多知识,但是文档的话,是否会对初学者不够友好?

    64 条回复    2023-12-10 09:14:52 +08:00
    scyuns
        1
    scyuns  
       2022-08-29 09:43:46 +08:00
    看了一下,OP 的这个仓库的教程风格我个人非常喜欢 感谢
    w568w
        2
    w568w  
       2022-08-29 09:47:41 +08:00
    我觉得理论方面可以暂时先不提,但是文档要逻辑自洽。比如一开头就提及的陌生术语要提示读者「 xxx 术语的含义在 xxx 节有详细解释,你可以暂时理解成 xxx 」,避免把教程写成操作指南。

    拜读了一下,感觉对 Pod 、Service 这些概念的解释有点太随意了,其他内容比较完整的
    ligz
        3
    ligz  
    OP
       2022-08-29 09:50:14 +08:00
    @scyuns 谢谢,有人喜欢就算没白费功夫😂
    ligz
        4
    ligz  
    OP
       2022-08-29 09:50:51 +08:00
    @w568w 很有道理,晚上回去就完善一波
    ligz
        5
    ligz  
    OP
       2022-08-29 10:14:30 +08:00
    老哥们,别光 start 和 收藏呀,评论评论,给点意见,要不然帖子沉了😂
    pota
        6
    pota  
       2022-08-29 10:18:39 +08:00
    star 了
    root01
        7
    root01  
       2022-08-29 10:21:41 +08:00
    已收藏帖子 谢谢
    fiypig
        8
    fiypig  
       2022-08-29 10:23:14 +08:00
    收藏 就是会了...
    ryalu
        9
    ryalu  
       2022-08-29 10:24:37 +08:00
    @ligz #5 收藏 + star = 学会
    Danic
        10
    Danic  
       2022-08-29 10:26:47 +08:00
    已 star
    Angzk3348
        11
    Angzk3348  
       2022-08-29 10:26:50 +08:00
    收藏 + star = 学会 doge
    StephenZzz
        12
    StephenZzz  
       2022-08-29 10:30:39 +08:00
    收藏 + star = 学会
    StephenZzz
        13
    StephenZzz  
       2022-08-29 10:31:22 +08:00
    请问 OP 开头提到的 Ruby 写的教程还有链接吗?
    q474818917
        14
    q474818917  
       2022-08-29 10:33:59 +08:00
    给了颗星
    crazychang
        15
    crazychang  
       2022-08-29 10:41:46 +08:00
    很有用 感谢!
    c332030
        16
    c332030  
       2022-08-29 10:45:29 +08:00
    star 了
    anakinsky
        17
    anakinsky  
       2022-08-29 10:47:50 +08:00
    已 star 👍
    ligz
        18
    ligz  
    OP
       2022-08-29 10:54:54 +08:00
    @StephenZzz 有,不过那份文章是收费的,我在这个基础上优化改动了很多,感觉没必要去购买。https://www.educative.io/module/1j8yMXCkjGqYGZ9Py/10370001/6434695478247424
    f1363797
        19
    f1363797  
       2022-08-29 10:57:42 +08:00
    写的非常不错,感谢
    mango88
        20
    mango88  
       2022-08-29 11:00:43 +08:00
    已 star
    amon
        21
    amon  
       2022-08-29 11:02:24 +08:00
    已 star ,支持一下 OP 。
    wsw
        22
    wsw  
       2022-08-29 11:02:25 +08:00
    写的可以,学习下,我看是 go 的,可以出份 java 的
    ligz
        23
    ligz  
    OP
       2022-08-29 11:16:13 +08:00
    @wsw Java 是不太适合做 k8s 教程的练习的,用 jre 的基础镜像打包也有 200MB 左右,pull image 就需要很久。用 GraalVM Native Image 来打包镜像是一个解决方案,但是写出来的代码可能也不是大家熟悉的 Java 代码。
    saxon
        24
    saxon  
       2022-08-29 11:21:14 +08:00
    风格很好!基于上面文档能录制一个视频版的教学绝对会火,我记得站内已经有个不错 docker \ k8s 视频教程发到 B 站了。
    saxon
        25
    saxon  
       2022-08-29 11:23:09 +08:00
    我的建议是 答主直接视频教学, 一方面让读者吸收更全面 (在平常线下分享时,我可以口头解释很多知识,但是文档的话,是否会对初学者不够友好?), 一方面更容易传播推广(不论是公益、还是收费) 视频带来的流量远比文档多。
    yanqic
        26
    yanqic  
       2022-08-29 11:23:38 +08:00
    教程挺好的,理论部分可以直接看官方教程。另外是否可以增加 CI/CD 到 K8S 部署发布这一步骤流程配置教程
    cweijan
        27
    cweijan  
       2022-08-29 11:24:15 +08:00
    666, 好详细, 最近正打算学 k8s
    ligz
        28
    ligz  
    OP
       2022-08-29 11:25:12 +08:00
    @wsw 不过多语言版本的教程也是一个方向,感兴趣的小伙伴先提 Issue 讨论这个事情,后续可以提 PR 来完善
    lazyyz
        29
    lazyyz  
       2022-08-29 11:28:25 +08:00
    已 star ,搭好了 k8s 集群,刚好可以上手实践
    lmshl
        30
    lmshl  
       2022-08-29 11:29:45 +08:00
    @ligz 内网都是千兆宽带,百兆镜像都是秒 pull ,基础镜像和没变化的 jar 都在前几层 layer ,hash 不变更快
    并且 graal 的 native 很难做教程,java 到处都是反射。

    总之:java 版很容易,那点体积在内网 registry 不是问题。native 不值得
    ligz
        31
    ligz  
    OP
       2022-08-29 11:31:04 +08:00
    @saxon 感谢,我打算暂时先完善一下教程和文档,后续文档稳定后可以考虑视频这个事情!
    ligz
        32
    ligz  
    OP
       2022-08-29 11:37:07 +08:00
    @yanqic CICD 我也有些经验,但是在本地环境的教程似乎无法通过 CICD 部署到 minikube ?不知道各位大佬有什么建议?或者后续增加 CICD 到云服务厂商的 k8s 集群上最佳实践相关文档?
    ligz
        33
    ligz  
    OP
       2022-08-29 11:47:25 +08:00   ❤️ 1
    @lmshl 我理解内网 registry 并不常见,特别对于入门者来讲,dockerhub 还是比较通用的 registry 。特别对于国内的网络而言,镜像大小对练习的流畅度还是影响比较大的。
    DamonLin
        34
    DamonLin  
       2022-08-29 11:53:50 +08:00
    最近刚好在学 k8s ,还在看官方文档中。。。支持一下
    wufumina
        35
    wufumina  
       2022-08-29 11:59:58 +08:00
    感谢 op ,已收藏
    wsw
        36
    wsw  
       2022-08-29 13:30:42 +08:00
    @ligz 另外,可以考虑多平台,windows 也可以完善下,写的还是挺好的
    lmshl
        37
    lmshl  
       2022-08-29 13:35:11 +08:00
    @ligz 如果你是用 minikube 教学的话,体积更不是问题了。
    就算是在云上做练习,EKS 或者 Aliyun ACK ,都可以推到自己私有 registry 里去,毕竟 dockerhub 能成功拉取看运气,运气不好一个 pause-amd64 也能卡两个小时,这家伙可才 300kb
    TOUJOURSER
        38
    TOUJOURSER  
       2022-08-29 13:45:08 +08:00
    # Install Docker CLI
    brew install docker
    brew install docker-compose

    请问通过这种方式安装的 docker 如何启动
    leixx
        39
    leixx  
       2022-08-29 14:05:22 +08:00
    哪里线下分享,杭州会有吗,想参与
    leixx
        40
    leixx  
       2022-08-29 14:05:51 +08:00
    已 star ,k8s 教程已经很多了,期待精品
    Cloud9527
        41
    Cloud9527  
       2022-08-29 14:09:49 +08:00
    已 star ,请问 OP 不会 go ,只会 java 好学吗,还是需要补充一下 go 的基础?
    yimiaoxiehou
        42
    yimiaoxiehou  
       2022-08-29 14:31:45 +08:00
    @TOUJOURSER 启动不了吧,docker on mac 也是基于虚拟机的,只有个 二进制应该跑不起来
    wsw
        43
    wsw  
       2022-08-29 14:38:21 +08:00
    28Sv0ngQfIE7Yloe
        44
    28Sv0ngQfIE7Yloe  
       2022-08-29 15:09:59 +08:00
    谢谢 OP ,最近刚好承担了集群管理的工作,但是我是 K8S 小白,对 helm 一窍不通。希望可以通过你的文章学习。
    ligz
        45
    ligz  
    OP
       2022-08-29 15:38:14 +08:00
    @TOUJOURSER 在教程中是用 minikube 作为容器运行时,docker 只做为 CLI 。不过对于个人开发者或者入门小白用 docker desktop 确实方便一点,个人主要是觉得 docker desktop 天天作妖,不太想用。
    ligz
        46
    ligz  
    OP
       2022-08-29 15:40:32 +08:00   ❤️ 1
    @Cloud9527 不需要 go 基础。去看看第一节 container 的代码,你会发现只要有代码基础都能看懂。而且 golang 只是像基础使用的话非常好学。
    Cloud9527
        47
    Cloud9527  
       2022-08-29 16:14:50 +08:00
    好的,谢谢
    xxmaqzas
        48
    xxmaqzas  
       2022-08-29 16:53:13 +08:00
    已✨
    ghost3281
        49
    ghost3281  
       2022-08-29 17:01:28 +08:00
    star 了 支持一下
    ShunYea
        50
    ShunYea  
       2022-08-29 17:12:14 +08:00
    谢谢,正需要一份这样的教材。
    IfEles
        51
    IfEles  
       2022-08-29 17:19:18 +08:00
    已 star
    AlwaysBeKid
        52
    AlwaysBeKid  
       2022-08-29 21:29:44 +08:00
    正准备学,有联系方式可以交流下吗
    solxnp
        53
    solxnp  
       2022-08-30 09:20:20 +08:00
    已 star
    收藏从未停止(你帮我补下句)
    joApioVVx4M4X6Rf
        54
    joApioVVx4M4X6Rf  
       2022-08-30 09:27:23 +08:00
    天呐正好趁机学学!感谢楼主
    kylix
        55
    kylix  
       2022-08-30 10:19:59 +08:00
    嗯嗯,已收藏 /doge
    ligz
        56
    ligz  
    OP
       2022-08-30 10:42:45 +08:00
    @AlwaysBeKid GitHub 主页有联系方式
    californiaroll
        57
    californiaroll  
       2022-08-30 16:03:28 +08:00 via iPhone
    期待后面的 helm 部分
    v2long
        58
    v2long  
       2022-08-30 16:59:50 +08:00
    已 star ,支持一下
    wsw
        59
    wsw  
       2022-08-30 17:07:49 +08:00
    mac 安装 minikube 后 无法通过 minikube ip 访问 pods 有解吗?
    ligz
        60
    ligz  
    OP
       2022-08-30 20:25:14 +08:00
    @wsw 你通过 `kubectl port-forward hellok8s-pod 3000:3000` 无法访问 pod 吗
    wuchujie
        61
    wuchujie  
       2022-09-06 10:41:27 +08:00
    @TOUJOURSER 还缺一个 linux 的虚拟机
    brew install colima
    wuchujie
        62
    wuchujie  
       2022-09-06 10:44:45 +08:00
    @ligz
    细看了一下 op 的内容。好像缺乏了 StatefulSet 的内容。希望能补上 StatefulSet + 本机数据库 /云数据库的引用,和如何在容器外持久化保存数据库内容。
    lasuar
        63
    lasuar  
       2023-07-28 23:28:46 +08:00
    3q 3q
    johnzr
        64
    johnzr  
       2023-12-10 09:14:52 +08:00 via iPhone
    原来是你写的啊!!我最喜欢的 k8s 教程!感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4157 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 05:30 · PVG 13:30 · LAX 21:30 · JFK 00:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.