V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrLonely
V2EX  ›  Kubernetes

学不会 k8s 怎么办?

  •  
  •   MrLonely · 2024-08-13 11:26:05 +08:00 · 5898 次点击
    这是一个创建于 385 天前的主题,其中的信息可能已经有所发展或是发生改变。
    曾经几次跟着网上各种教程尝试入门 k8s ,用过 k3s ,minikube 等轻量化入门版本。但是最终都以失败告终。回想起来当年入门 Docker 时也是花了很长时间才成功理解 image 和 container 的区别。

    网上看到过很多次劝退 k8s 的内容。说太难,学习曲线陡峭,学会了也是个屠龙之术。我是做量化交易员工作的。Docker 也只是工作中辅助性质的一个环节。k8s 也只会作为辅助 Docker 的一个环节。也就是说就算我学会了 k8s ,对我来说也是个辅助中的辅助。

    但不得不说我现在对 Docker 的依赖越来越高了,所有的 Docker 都是单节点部署的。有时需要迁移花费的精力还是很大的。也需要经常去备份虚拟机以保留一个恢复到历史状态的可能性。

    兄弟们觉得我是应该再继续努力一下呢?还是去寻找别的方案来优化一下我在 Docker 上的工作流?

    在这里先多谢各位建言。
    32 条回复    2024-08-21 17:19:02 +08:00
    ipwx
        1
    ipwx  
       2024-08-13 11:28:24 +08:00
    ummm 作为量化交易员你用这个干嘛。

    另外 image 和 container 区别需要很久才能理解,你可能需要让你的学习能力进步一点(
    ww2000e
        2
    ww2000e  
       2024-08-13 11:31:21 +08:00
    就像学不会开车一样,没啥影响啊
    ipwx
        3
    ipwx  
       2024-08-13 11:32:12 +08:00
    然后,单节点部署我不觉得是麻烦事情。

    推荐你学习一下 ansible ,配合 docker ,几十台机器随便你管理。


    最后的最后,为啥你都用 docker 了还需要备份虚拟机状态?不是直接 docker compose down ,然后复制一整个 docker compose 目录,最后 docker compose up 就行了嘛?

    或者你不知道 docker compose ?
    XDiLa
        4
    XDiLa  
       2024-08-13 11:34:02 +08:00
    @ww2000e
    对的学不会开车 可以学如何打车,你自己学不会 k8s 可以让公司买云产品,ack 之类的 你用的有问题,厂家技术就帮你解决了
    ma836323493
        5
    ma836323493  
       2024-08-13 11:36:27 +08:00
    花了很长时间才成功理解 image 和 container 的区别....
    这我当年学, 这不就是类和 对象吗
    liuliancao
        6
    liuliancao  
       2024-08-13 11:43:37 +08:00
    建议是少引入东西了,管理 docker 的东西也有很多,可以用 docker compose 或者 rancher 这些,主要还是把数据做好备份就可以了 本身就是一个运行时
    JoeDH
        7
    JoeDH  
       2024-08-13 11:46:09 +08:00
    不太理解你学习 k8s 的目的,同时你入门难似乎是没有正式的使用场景导致的?
    可以先搞个阿里云的 ack 玩一下,大概了解下 k8s 部署流程
    然后尝试在本地搭个集群,找下尚硅谷的 k8s 入门教程里面有
    just4id
        8
    just4id  
       2024-08-13 11:51:53 +08:00 via iPhone
    不是科班出身就别瞎捣鼓了
    coderxy
        9
    coderxy  
       2024-08-13 11:52:38 +08:00
    你是学 k8s 原理还是啥? 学习使用很简单吧, 打个镜像,部署上去就完事了。 如果是学习原理,除非你是运维/SRE ,不然的话没必要啊, 开发会使用就够了。
    LsLsLsLsLs
        10
    LsLsLsLsLs  
       2024-08-13 11:54:13 +08:00
    根据官方文档 耐心来一遍
    Lihanx9
        11
    Lihanx9  
       2024-08-13 12:39:22 +08:00 via Android
    也许你只是需要一本合适的入门书… in action 系列了解一下。docker in action , kubernetes in action 个人感觉都还行。不需要看实现原理的话,看书就够用了,更细节的可以查官方文档…
    me1onsoda
        12
    me1onsoda  
       2024-08-13 14:06:57 +08:00
    k8s 学很久,我还以为你是说做二开😂
    8355
        13
    8355  
       2024-08-13 14:13:36 +08:00
    反其道而行之,学习一下 serverless
    johnhuangemc2
        14
    johnhuangemc2  
       2024-08-13 14:20:59 +08:00
    边用边学才来得快. 不然很多东西都很难理解它为什么要这么做, 为什么搞这么复杂
    Niphor
        15
    Niphor  
       2024-08-13 14:26:04 +08:00
    按照官方文档用 kubeadm 部署个 k8s 是很简单的,但是要灵活贯通各种 yaml 写法是比较困难的,特别是你还不是经常用的情况下

    看 OP 是看中了 K8S 多节迁移方便?
    但是多节点迁移你得有合适的存储方案,最不济弄个 NFS ,然后各种配置
    且和用 Docker+云存储没啥区别
    kele999
        16
    kele999  
       2024-08-13 14:50:30 +08:00
    v 站的很多技术我都从来没用过,感觉很 out
    hxndg
        17
    hxndg  
       2024-08-13 15:28:24 +08:00
    如果你使用 docker 经常“需要备份虚拟机以保留恢复到历史状态”,可能是不是软件栈不对呀?尝试提取出来固定的东西? k8s 和 docker 这一套我理解本身就是认为云上的软件可以随意销毁和创建的?
    isno
        18
    isno  
       2024-08-13 15:57:23 +08:00
    有兴趣看看我写的 Kubernetes 内容。

    https://www.thebyte.com.cn/intro.html [第七章]
    isno
        19
    isno  
       2024-08-13 15:58:27 +08:00
    学会了记得给我发个红包。
    ninjashixuan
        20
    ninjashixuan  
       2024-08-13 16:02:55 +08:00
    开发真的会用就行了,甚至公司有钱都买云的服务就更简单了,纯运维的话才需要深度折腾吧。
    partner666
        21
    partner666  
       2024-08-13 16:11:05 +08:00   ❤️ 1
    网上找篇靠谱的二进制安装文档,照着装一遍,版本尽量高一点。
    1. 先了解各个组件的作用和联系,这些有利于排查集群问题
    apiserver 、scheduler 、proxy (几种模式)、kubelet 、etcd
    2. 了解 pod 和高级调度组件,对比写法和使用场景
    pod 、deployment 、daemonset 、stafulset
    3. 服务
    service 、无头服务、service 如何关联资源
    4. 配置管理
    config 和 secret
    5. 存储
    几种常用卷、pv&pvc
    6. 高级调度的一些概念
    污点、容忍、亲和力
    掌握以上基本就可以运维 k8s 集群了,再往后就了解一下 csi 高级存储、helm 和 operator 方式部署服务等
    yulgang
        22
    yulgang  
       2024-08-13 16:53:52 +08:00
    操作系统、网络、存储基础打好再看
    laminux29
        23
    laminux29  
       2024-08-13 20:44:45 +08:00
    k8s 难学,是因为它集合了数据结构与算法、操作系统、网络原理、数据库原理、软件工程、分布式系统等科目,可以说是众多科目的集合。

    就算计算机科班生,很多人都没办法全部搞定,更别提你还不是科班的。
    qiqw
        24
    qiqw  
       2024-08-13 21:47:01 +08:00
    我也不会, 想学
    jaylee4869
        25
    jaylee4869  
       2024-08-13 22:35:24 +08:00
    Quantitative Trader 能有你这种想法的确实厉害!

    但是这是对于有技术背景的,如你所说,对于大多数人来说,太难了! Kubernetes 对于非运维/计算机科班的人来说难度确实陡峭,连 Google 都曾承认 Kubernetes 过于复杂 ( https://www.solidot.org/story?sid=67046 )。所以我的建议还是 docker compose 。

    你可以把 docker compose 理解为极度简化的单击 K8s.

    如果你一定想学 K8s, 可以反反复复看了官网的文档和一些 youtube 上的视频后,开始自己利用本地虚拟机作为 kubernetes 集群学习。我自己是个一后端程序员,四五年前学习的时候基本上前一个月脑子里全是各种概念,第二个月全是各种命令行和 yaml ,前前后后两三个月算是熟练了。最复杂的是网络,提前把 iptables ,nat ,dns 这些基础打劳,然后不靠 ide 能直接写 yaml ,遇到不清晰的直接找社区问,最多半年肯定会了。
    zedking
        26
    zedking  
       2024-08-13 23:13:30 +08:00
    B 站搜个 CKA 教程 跟着做做 操作性的就那些东西 源码啥的那确实比较复杂
    yu1miao
        27
    yu1miao  
       2024-08-14 11:23:13 +08:00
    既然是单节点,建议换个高性能服务器一把梭,管理起来方便。
    k8s 对性能要求太高,即便是轻量如 k3s ,每个 master 节点空转都需要 2C 2G ; worker 节点网络丢包率必须足够低,不然 Pods 会频繁调度。没个十几台服务器,真没必要 k8s 。
    如果真的想上集群,可以先试试 docker swarm ,用法跟 docker compose 一模一样。只不过需要把 network 的 driver 换成 overlay 。swarm 相比 k8s 用起来就是少了个 PVC (个人体验)
    vivisidea
        28
    vivisidea  
       2024-08-14 15:26:35 +08:00
    docker-compose 了解下?没道理迁移复杂吧,你这个是有状态的应用吗?如果有状态的话,k8s 也解决不了你的问题,干脆把状态信息 mount 到目录下,迁移的时候整个 docker-compose 目录打包带走即可

    可以再配合 ansible 把迁移时的动作都写成 playbook

    我认为你不需要 k8s 这玩意儿,要玩就自己去阿里云上一键部署个 ack ,反正也轮不到你运维,知道怎么用就行
    MrLonely
        29
    MrLonely  
    OP
       2024-08-14 16:37:09 +08:00
    @ipwx docker compose 用过。但是我用的场景下多多少少都得要挂载 volume 或者映射一个 docker host 的 directory 。迁移过程中主要是这部分数据持久化比较麻烦。虚拟机备份也是因为这部分数据。

    @XDiLa step by step 的安装倒是能成功。但是安装完之后的使用就两眼一抹黑。那我觉得确实可以去尝试一下 ack 之类的云厂商服务。看看是不是使用起来更加简便。

    @liuliancao compose 有在用了。rancher 我可以去了解一下。还有其他的工具推荐吗?

    @JoeDH 我现在确实没有正式的场景要立刻使用。

    @hxndg 我觉得你这个问题确实问到点子上了。我现在的大部份 docker container 都或多或少都有一些数据需要持久化。那也许是我这个做法不对?我是应该设置一个中心化数据库来保存所有的数据吗?

    @laminux29 我觉得你说得对。可能这个技术对我来说学习需要花费的时间和回报特别不成正比。
    ipwx
        30
    ipwx  
       2024-08-14 17:03:50 +08:00
    @MrLonely Host 上有个数据目录太正常不过了。

    你可以每天跑个定时任务,先关掉 docker compose ,然后把整个数据目录用 tar 打包(以为 tar 可以保存 owner 和权限信息),复制到备份目录,然后再打开 docker compose 。

    docker compose down
    BACKUP_NAME=$(date +%Y%m%d)
    tar czvf ${BACKUP_NAME}.tgz 数据目录名称
    rsync -avP ${BACKUP_NAME}.tgz 备份目录/
    rm -f ${BACKUP_NAME}.tgz
    docker compose up

    备份目录可以选择 nas 的硬盘。然后你就可以愉快的使用它,而不用怕数据丢失了。所以我说 docker compose 太好用了。
    9pr7im4IjQ9u0806
        31
    9pr7im4IjQ9u0806  
       2024-08-14 17:14:38 +08:00
    普通的 docker 使用,docker compose 就足够用了吧
    windcode
        32
    windcode  
       2024-08-21 17:19:02 +08:00
    可以从实操开始,比如自己用 kind 或者 minikube 本地部署一个 k8s ,然后在里面再部署一个可视化的 k8s 面板,上去点一点,这样会更加直观、迅速的理解 k8s 。
    推荐的可视化 k8s 面板: https://github.com/KusionStack/karpor
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:43 · PVG 04:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.