学不会 k8s 怎么办?

2024-08-13 11:26:05 +08:00
 MrLonely
曾经几次跟着网上各种教程尝试入门 k8s ,用过 k3s ,minikube 等轻量化入门版本。但是最终都以失败告终。回想起来当年入门 Docker 时也是花了很长时间才成功理解 image 和 container 的区别。

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

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

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

在这里先多谢各位建言。
5960 次点击
所在节点    Kubernetes
32 条回复
partner666
2024-08-13 16:11:05 +08:00
网上找篇靠谱的二进制安装文档,照着装一遍,版本尽量高一点。
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
2024-08-13 16:53:52 +08:00
操作系统、网络、存储基础打好再看
laminux29
2024-08-13 20:44:45 +08:00
k8s 难学,是因为它集合了数据结构与算法、操作系统、网络原理、数据库原理、软件工程、分布式系统等科目,可以说是众多科目的集合。

就算计算机科班生,很多人都没办法全部搞定,更别提你还不是科班的。
qiqw
2024-08-13 21:47:01 +08:00
我也不会, 想学
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
2024-08-13 23:13:30 +08:00
B 站搜个 CKA 教程 跟着做做 操作性的就那些东西 源码啥的那确实比较复杂
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
2024-08-14 15:26:35 +08:00
docker-compose 了解下?没道理迁移复杂吧,你这个是有状态的应用吗?如果有状态的话,k8s 也解决不了你的问题,干脆把状态信息 mount 到目录下,迁移的时候整个 docker-compose 目录打包带走即可

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

我认为你不需要 k8s 这玩意儿,要玩就自己去阿里云上一键部署个 ack ,反正也轮不到你运维,知道怎么用就行
MrLonely
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
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
2024-08-14 17:14:38 +08:00
普通的 docker 使用,docker compose 就足够用了吧
windcode
2024-08-21 17:19:02 +08:00
可以从实操开始,比如自己用 kind 或者 minikube 本地部署一个 k8s ,然后在里面再部署一个可视化的 k8s 面板,上去点一点,这样会更加直观、迅速的理解 k8s 。
推荐的可视化 k8s 面板: https://github.com/KusionStack/karpor

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1064579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX