开源 k8s 的教程,全实战引导!顺带问各位大佬一个问题~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ligz
V2EX    程序员

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

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

    这个教程起初源自于我看过的一份用 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

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

    65 条回复    2024-12-26 18:08:31 +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
    收藏 就是会了...
    ryan961
        9
    ryan961  
       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
    给了颗星
    Dav1s
        15
    Dav1s  
       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 ,还在看官方文档中。。。支持一下
    BaldPhoenix
        35
    BaldPhoenix  
       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 教程!感谢
    nelvko
        65
    nelvko  
       290 天前 via iPhone
    搜生产环境部署的教程,发现作者在 v 站也有号教程写的很好,真小白也能看懂,顺带提了几个 pr , 就是没有生产环境部署的教程(受虐滑稽)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2842 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 13:13 PVG 21:13 LAX 06:13 JFK 09:13
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86