手上仅用一台 2 核 8g 的 Centos 服务器。
个人是练习 Java 两年半的 bug creator 。
最近刚练习完 Gitlab 的 CI/CD ,想搞一搞 kubernetes ,然而感觉官网的 get started 页面有些过于简陋(只有命令没有对行为的相关入门级别解释),其他页面则是过于繁琐冗杂。
问了下智谱清言,也是给出了一堆 command ,有没有好心的大佬给小白我讲一讲 kubernetes 的整体架构,运作流程(有相关博客更佳),以及为什么它需要 docker 容器,而后最新版本又不需要 docker 容器呢?

参考官网文档吧,比任何人讲的都要权威准确

这个问题太复杂了,估计你还得用两年半搞清楚。

额,主要是想走走捷径,想有人帮我捋一捋架构思路再研究🤣

我看完官方文档也用不了两年半吧……

/go/k8s 到这个节点看看,有发教程的

本质上是高级版的 docker ,管理计算机 CPU 、内存、磁盘等资源。到时候还的加各种入 gateway 、分布式文件系统、告警链路等一堆东西

真大佬,有没有博客?

kubernetes 的整体架构,运作流程

我的理解,K8S 整体是一个分布式的高可用架构,运行这个架构之上的应用不需要应用本身具有高可用的特点(降低应用开发者的门槛),而可以借助架构的能力让应用高可用。详细的理解建议看周志明的《凤凰架构》 icyfenix.cn/ 建议看电子版,因为链接也是需要看的,不要急,书的知识量很大,我花了 9 个月才读完,很多内容都需要实践。当然读后为了感谢作者买了纸质版。

为什么它需要 docker 容器,而后最新版本又不需要 docker 容器呢

当多个应用程序在操作系统上运行时,操作系统有两个基本问题要解决,共享和隔离,共享是为了降低成本、解决应用之间的通信等问题,隔离是安全、避免干扰和解决雪花崩溃问题,容器这种技术很好地解决了这两个问题,docker 生逢其实,刚好撞上了微服务的大风口,但是输掉了与 google 的容器编排战争,输给了 K8S 容器编排技术,然后 Google 所在 CNCF 又搞了一系列标准,包括容器运行时接口 CNI 标准,而 docker 嘴硬不遵从该标准,所以有 cri-o\containerd runc 其它遵循 CRI 的容器运行时技术更普遍受欢迎。其实 docker 配合 cri-docker 也可以用 github.com/Mirantis/cri-dockerd

包括容器运行时接口 CNI 标准 此处应该是 CRI 标准

瑞思拜,致敬开源精神

kuboard.cn/ 看这个,我感觉适合新手。
Kuboard 把集群搭起来,然后配合文档组件的定义。
自己搭 k8s,主要网络问题太麻烦了,镜像都拉不下来。

现在搭建 k8s 啥的,直接用 Kubekey 就完了,然后加个 kubesphere 。
离线在线都能装,麒麟也可以。
参考:
kubesphere.io/zh/docs/v4.1/03-installation-and-upgrade/02-install-kubesphere/02-install-kubernetes-and-kubesphere/
www.datehoer.com/blogs/other/kylinv10installk8s.html

可以参考下 Kubernetes in Action 这本书,简要讲了 k8s 的架构和实践

确实,网络问题是个麻烦

你确定不是在发广告……

kubekey 还是广告?

看官方文档,非常详细,而且实时更新
你要找的博客文章约等于 “200 字概述西游记讲了啥”,看完约等于没看

试试 minikube 。照着我这个文档操作一遍,基本你就理解了 k8s 概念。

unix2go.com/deploy-k8s-from-scratch/

是的,不过评论区还是有一些有价值的回答

非运维,没有深入研究 k8s 架构,官网文档不喜欢,啰嗦找不到重点,有兴趣可以看下笔记
y2k38.github.io/use-kubeadm-to-deploy-k8s-cluster/

官方的 quick start 没记错是分 master/worker 部署的吧。
只有一台机器的话,可以参考 18 楼用 minikube 或者 k3s 。
(其实 docker desktop 也内置了 k8s 的可选功能)

简单入门可以看看这个 www.kuboard.cn/learning/

然后关于 k8s 的架构,8 楼推荐的 凤凰架构 那本书(网站)确实讲得挺不错的,值得慢慢啃。

至于问了 AI 得到一堆 command (应该还有一堆 yaml )是这样的 ಥ_ಥ 玩这玩意就是一堆配置和命令,反而图形化的管理页面用了几个都觉得不好用,很别扭。
还有 docker 容器的问题,不是不需要 docker ,而是有更多的 CNI 可以选择。在没有完善这块之前,kubernetes 通过内置了 shim 去兼容 docker ,之后”时机成熟“就把这个兼容层移除了(当然还是可以通过手动安装 shim 来兼容 docker )。
不过 8 楼说 docker 嘴硬这点,跟我的认知不太一样,很多 CNCF 的规范和工具,包括 containerd ,都是出自 docker 之手。

先理解每个东西是干嘛的,然后就大概知道了。比如 Service 、Pod 、pvc 之类的……

我之前整理了篇博客,可能对你了解容器方面的知识有些许帮助

<了解容器运行时的演进与标准化之路> blog.yasking.org/a/container-containerd-cri-o-runc.html

快速上手的话可以用 sealos 快速搭建起 K8S 集群,然后再启动一个 dashboard 比如 kuboard ,这样有图形界面可以更好容易理解 k8s 的整体架构,kuboard 的文档做的也很好,很多可以一步一步跟着做,最后拓展深入理解可以参考 k8s 的官方文档,官方文档比较全面

github.com/chaseSpace/k8s-tutorial-cn/blob/main/doc_tutorial.md#11-架构设计

关于学习 K8S ,我还是认为通过官方文档学习比较靠谱,因为这个东西还在发展,附着在它身上的其它工具可能活不了那么久,或者慢慢就不兼容了,所以泼一下楼上很多人的凉水,知识应该从源头学习,不要学习被别人转换或理解过的笔记或者 blog ,因为有些内容可能被扭曲或丢失

搭建环境也是,还是推荐用 kubeadm ,其它工具会更方便,但是只有 hard 模式才能让你理解更多,计算机就是实践性科学,你初学时不栽跟头,以后栽跟头成本更高

至于 K3S 我不了解,但线下与人讨论时别人说这个 bug 很多,我自己在搭建 K8S 集群发现也存在很多文档上没有写,自己实践做时才出现的问题,所以虽然我搭建 K8S 的环境是 ARM 的,但我也没有研究 K3S

我是自己在类似树莓派的国产开发板上搭建 K8S 集群,可以看看我这个帖子

草根云,每个云原生工程师都值得拥有 www.hesudu.com/t/1003629

不过 orangepi 3B 在运行 2 年后,10 个板子有 9 个的有线网口都坏了,所以这个质量不怎么样,我现在用了其它开发板,运行时也从 docker 换成了 runc ,操作系统还要自己编译,等我用一段时间后再写篇实践过程文档

v 站之前有位大佬做一小时精讲专题的,K8s 这一块他用的是官网文档 demo 里的 MiniKube ,推荐先看看这个了解个大概,再整体深入学习

还有楼上说的网络问题的确很重要,但是如果你要是没有能力在路由器上实现透明代理,那就也不用研究 K8S 了,因为 service 这种资源的本质就是一堆 rule ,你搞不定透明代理和科学上网,就肯定懂不了 K8S 的 servce 是咋回事

不能通过一些镜像网站规避网络问题吗?意思是先必须在服务器上实现科学上网,才能进而着手 k8s 吗

研究下 CKA 认证吧,分分钟给你催熟

www.thebyte.com.cn/container/summary.html

官网网站就可以了
先看 kubernetes.io/zh-cn/docs/tasks/tools/ 这个安装环境
然后看 kubernetes.io/zh-cn/docs/tutorials/hello-minikube/ 这个搭建 minikube
之后 看 kubernetes.io/zh-cn/docs/tutorials/kubernetes-basics/ 这个把基础跟着做一遍

基础的概念就都有了。

kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 按照步骤走完就可以搞一个单机版的,你这个服务器配置也只能搞一个节点,不要考虑集群了

问个题外话,你的香橙派坏得这么厉害,是超负荷运转导致的,还是它本身质量问题?😂

因为我早已掌握透明代理技术,我就没有找 K8S 镜像仓库等一系列所需仓库的镜像,我想大致找不完整

透明代理不是在服务器上实现科学上网,而必须在服务器所连接的路由器上实现。了解一下 openwrt openwrt.org/ ,都是基于这个操作系统

二者的区别在于,一般的科学上网需要安装客户端,这个客户端会开通一个端口,每个程序都需要通过这个代理端口才能访问,但是这种做法局限太大,一是本地 Dns 查询需要另想办法,二是每个服务器的每个应用程序都需要配置,配置起来太麻烦,如果还考虑容器运行的需求则实际不可能采用这种办法

所以只能在网络层解决问题,让每台服务器连接到路由器后,统一在路由器上做路由控制,这个就要借助 iptables 或者 nftables 的功能了,这也是 K8S 中 service 这种资源干的事情,所以你迟早要懂

相关知识不敢多说,你 google 一下 透明代理 openwrt dnsmasq iptables 等关键词

我 CPU 和内存的负载都不大,而且 10 个有 9 个都是坏的有线网口,一定是质量问题

极客时间买节课,好好上完应该还行。