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

学不会 k8s 怎么办?

  •  
  •   MrLonely · 112 天前 · 4980 次点击
    这是一个创建于 112 天前的主题,其中的信息可能已经有所发展或是发生改变。
    曾经几次跟着网上各种教程尝试入门 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  
       112 天前
    ummm 作为量化交易员你用这个干嘛。

    另外 image 和 container 区别需要很久才能理解,你可能需要让你的学习能力进步一点(
    ww2000e
        2
    ww2000e  
       112 天前
    就像学不会开车一样,没啥影响啊
    ipwx
        3
    ipwx  
       112 天前
    然后,单节点部署我不觉得是麻烦事情。

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


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

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

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

    https://www.thebyte.com.cn/intro.html [第七章]
    isno
        19
    isno  
       112 天前
    学会了记得给我发个红包。
    ninjashixuan
        20
    ninjashixuan  
       112 天前
    开发真的会用就行了,甚至公司有钱都买云的服务就更简单了,纯运维的话才需要深度折腾吧。
    partner666
        21
    partner666  
       112 天前   ❤️ 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  
       112 天前
    操作系统、网络、存储基础打好再看
    laminux29
        23
    laminux29  
       112 天前
    k8s 难学,是因为它集合了数据结构与算法、操作系统、网络原理、数据库原理、软件工程、分布式系统等科目,可以说是众多科目的集合。

    就算计算机科班生,很多人都没办法全部搞定,更别提你还不是科班的。
    qiqw
        24
    qiqw  
       112 天前
    我也不会, 想学
    jaylee4869
        25
    jaylee4869  
       112 天前
    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  
       112 天前
    B 站搜个 CKA 教程 跟着做做 操作性的就那些东西 源码啥的那确实比较复杂
    yu1miao
        27
    yu1miao  
       111 天前
    既然是单节点,建议换个高性能服务器一把梭,管理起来方便。
    k8s 对性能要求太高,即便是轻量如 k3s ,每个 master 节点空转都需要 2C 2G ; worker 节点网络丢包率必须足够低,不然 Pods 会频繁调度。没个十几台服务器,真没必要 k8s 。
    如果真的想上集群,可以先试试 docker swarm ,用法跟 docker compose 一模一样。只不过需要把 network 的 driver 换成 overlay 。swarm 相比 k8s 用起来就是少了个 PVC (个人体验)
    vivisidea
        28
    vivisidea  
       111 天前
    docker-compose 了解下?没道理迁移复杂吧,你这个是有状态的应用吗?如果有状态的话,k8s 也解决不了你的问题,干脆把状态信息 mount 到目录下,迁移的时候整个 docker-compose 目录打包带走即可

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

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

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

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

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

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

    @laminux29 我觉得你说得对。可能这个技术对我来说学习需要花费的时间和回报特别不成正比。
    ipwx
        30
    ipwx  
       111 天前
    @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 太好用了。
    kw8023cn
        31
    kw8023cn  
       111 天前
    普通的 docker 使用,docker compose 就足够用了吧
    windcode
        32
    windcode  
       104 天前
    可以从实操开始,比如自己用 kind 或者 minikube 本地部署一个 k8s ,然后在里面再部署一个可视化的 k8s 面板,上去点一点,这样会更加直观、迅速的理解 k8s 。
    推荐的可视化 k8s 面板: https://github.com/KusionStack/karpor
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:51 · PVG 00:51 · LAX 08:51 · JFK 11:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.