第一次接触 k8s 应该如何部署?

362 天前
 zuotun

从开始了解 Kubernetes 到现在两三天了, 想个人学习如何部署. 用过 docker 没用过 podman, 有 Linux 基础.

算上服务器有三台设备, 打算将主从节点物理分离开来.

看过官方文档没太看懂, 找了一大圈也没找到. 看到一篇写的比较详细的部署生产环境的 教程 但是又太过复杂了, 前前后后安了不少我没听过的东西. 而且这是 2017 年写的, 可能和现在的又有一些变化了, 例如 1.28 Beta 支持 swap.

3596 次点击
所在节点    Kubernetes
30 条回复
hxpmc
362 天前
跟着官网来 就是没有科学上网环境会比较蛋疼
wu00
362 天前
k3s 、minikube 之类的跟着官方教程走,入门级的,会 docker 就差不多了
CaptainAmerica
362 天前
用 rke
o562dsRcFqYl375i
362 天前
1. 学习用 minikube
2. 生产用公用云的 k8s
3. 对于开发、使用上来说,基础重点放在 deployment/service/configmap/secret/hpa 等资源清单的编写,进阶看 k8s client api 等涉及二次开发的东西
CivAx
362 天前
1) Docker 和 Podman 如果不深究实现逻辑 —— 即一个需要通过 docker.sock 另一个直接与 ctr 通信 —— 的区别,使用体验上没有区别,可以直接平移知识积累过来。

2) 三台取决于你是想 “用”,还是想 “学”。三台虽然满足最小的 Kubernetes 集群部署,但使用上更适合用 Minikube 或者 K3s 。

3) 接触到新技术栈的时候,先让东西跑起来、获得能激起学习兴趣的成就感,会比一味看文档试图系统学习会来得更好起步。

如果 kubeadm 对你来说太过枯燥,你可以先从 Rancher 入手。Rancher 作为商业软件的设计初衷,主打的是易用性和人性化。你可以用 Rancher 或者 RKE 部署方式快速跳过繁琐和需要高度自定义的部署流程,快速进入到 K8s 的使用上。在对 namespace 、pod 、deployment/statefulset/daemonset 、pv 、configmap/secret 、helm chart 这些应用层的东西都熟悉后,再根据你积累下来对这些概念的理解,摸索 kubectl 命令行操作,理解 yaml 的使用途径和文本逻辑。等使用和维护熟悉透彻后,再进步到理解 clusterconfig.yml 的配置文件编写,调用 RKE 对 Kubernetes 部署与安装,以及 debug 安装过程中可能会出现的各类问题。

目前正规公司商采会有正规的交付团队替你部署,就算不采购也大多会直接使用云服务商的 Kubernetes 服务,仅有少部分场景会需要亲自动手从 0 部署 Kubernets 集群 —— 而且即使有,也可以通过 RKE 等这种软件快速跳过部署阶段,推荐把精力放在学习更有价值的知识上。
hexiaodai
362 天前
kubekey
brom111
362 天前
最简单的就是官方文档+ kubeadm 。 但是很多人虽然用到了 1.25 以后的版本但是也还在用 docker 。
k8s 用不是难点。公有云帮你解决了太多问题了,现在 serverless 都满天飞,压根都不需要担心 node 。
runinhard
362 天前
k3d
setsunakute
362 天前
kubekey, 按照文档稍微写个简单的配置文件就可以创建起来. 可以选择用国内镜像,安装比较快
zhaozs1
362 天前
kubeadm 方式安装 k8s 集群-v1.23.17
知乎搜索一下,按照教程,然后参考官方的教程,搭起来就是下面的效果
[root@k8s-master01 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-f89759699-nqv9b 1/1 Running 0 25h

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
service/nginx NodePort 10.109.40.187 <none> 80:31965/TCP 25h
[root@k8s-master01 ~]#
zuotun
362 天前
@hxpmc 服务器环境就没有, 我看着一个项目下了两小时, 并且有时候还连不上 GitHub, k8s.io 更不用说了

@CivAx 2) 主要是想学, 既然有资源就想去试试集群. 但感觉在 Windows 下有些水土不服, WSL 在这方面使用体验上又不如真正的 Linux, 试过 kind 但没弄明白.
3) 可能相反, 我更倾向于原生的部署方式. 但入门可能这样确实更快.

@zhaozs1 谢谢, 我去试试
mightybruce
361 天前
kubernetes 安装的确没那么容易, 多摸索几次就会了。
不要用 docker, 用 containerd, 再装上 nerdctl 。containerd 的 config.toml 中也要指定 docker.io gcr.io 等一堆国内镜像源
连不上是正常的,kubeadm 要指定镜像源,
kubernetes 最后还要安装网络插件,你也需要下载相关 yaml, 然后安装才能打通网络 比如使用 flannel 、calico 、canal
kind 本地模拟其实也还好, 开发 k8s 相关一些组件的时候比较方便。
evan1024
361 天前
学习先用 kubeadmin 不推荐 minikube,然后建议上 rancher/kubesphere 这种管理会更容易
mightybruce
361 天前
上生产是一定不能用 k3d, kind 这些。 初学者可以用 kind,k3d 学习一些概念和操作还是可以的,因为 k3d 、kind 是在容器中创建,和 k8s static pod 在本地创建是有巨大区别的,另外 kubelet 是不能容器化的。
用公有云 k8s 一样需要了解 kubernetes 等众多知识和操作。
像证书管理, 文件配置以及证书更新、网络规则、策略管理以及存储 PV 的确是使用 kubeadm 二进制创建的 k8s 才能有更多的理解。
emmettwoo
361 天前
我是参考的官方教程:
https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

初次接触可能确实有很多术语搞得一头雾水,反正先按照教程一步一步做,我大概的流程是:
- 服务器配置(固定 ip, hostname 并改一下 hosts ,然后关掉防火墙,selinux, swap 这些)。
- 安装运行环境和工具( docker/containerd, CNI, crictl, kubelet, kubeadm, kubectl ,其实就如上面教程)
- 使用 kubeadm 拉起集群( https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)

集群如果顺利启动(怎么可能那么顺利,遇到问题再逐一去查找解决吧),就可以用 kubectl 命令行工具访问 kubelet 来和 k8s 集群交互啦,或者像使用 Lens 那些图形化的管理工具。
然后也看到上面的大佬说的网络问题,我自己是用这两个方案:
1. kubeadm 拉起集群时会去官方下镜像,可以重定义镜像源地址,比如 aliyun 。
--image-repository registry.aliyuncs.com/google_containers
2. 在能连到官方镜像源的机器上先拉取镜像,save 出 tar 包再到你实际服务器上 load 进 Docker/Containerd 。
kubeadm config images pull --kubernetes-version v1.26.0

感觉按照官方的教程这些步骤来做可以比较好的学习到 k8s ,如果是单纯想尝鲜或者快速开发,Docker Desktop 现在也可以直接在本地启动一个 kubernetes 的环境 :lol
kidlj
361 天前
KIND 最简单 ( https://kind.sigs.k8s.io ),前提:先给 Docker 设置好 proxy ,不然可能很多镜像拉不下来。
GeekGao
361 天前
建议先玩 k3s
Daath
361 天前
如果有预算的话,可以买个香港的服务器,然后 ssh 上去,先装个 ubuntu 玩一下 microk8s ,然后也可以用 kind ,然后了解一下 configmap ,deployment ,service ,pvc ,ingress 几个资源的相互关系,然后接下来就学一下 helm 就差不多了,最近我买过香港服务器是 ucloud 双 11 促销新用户首机,买个 2C4G30M 就可以了,国内部署 k8s 多多少少遇到网络拉镜像很慢的问题,你想心智负担少,我就建议买个香港玩一玩。
hunterzhang86
361 天前
用 k3s 最简单,最好是先腾讯云租个现成装好 k3s 的练练手。
tudou1514
361 天前
所有的学习都走官方网站,初学也建议走 kubeadm 或者二进制,市面上的那些 rancher 、KubeSphere 等工具不建议初学者使用,除非你在网络,存储,linux 各方面都有涉猎,不然这些工具的部署过程对你来说是封闭的,对于学习很不友好

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

https://www.v2ex.com/t/994874

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

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

© 2021 V2EX