第一次接触 k8s 应该如何部署?
从开始了解 Kubernetes 到现在两三天了, 想个人学习如何部署. 用过 docker 没用过 podman, 有 Linux 基础.
算上服务器有三台设备, 打算将主从节点物理分离开来.
看过官方文档没太看懂, 找了一大圈也没找到. 看到一篇写的比较详细的部署生产环境的 教程 但是又太过复杂了, 前前后后安了不少我没听过的东西. 而且这是 2017 年写的, 可能和现在的又有一些变化了, 例如 1.28 Beta 支持 swap.
跟着官网来 就是没有科学上网环境会比较蛋疼
k3s 、minikube 之类的跟着官方教程走,入门级的,会 docker 就差不多了
用 rke
- 学习用 minikube2. 生产用公用云的 k8s3. 对于开发、使用上来说,基础重点放在 deployment/service/configmap/secret/hpa 等资源清单的编写,进阶看 k8s client api 等涉及二次开发的东西
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 等这种软件快速跳过部署阶段,推荐把精力放在学习更有价值的知识上。
kubekey
最简单的就是官方文档+ kubeadm 。 但是很多人虽然用到了 1.25 以后的版本但是也还在用 docker 。k8s 用不是难点。公有云帮你解决了太多问题了,现在 serverless 都满天飞,压根都不需要担心 node 。
k3d
kubekey, 按照文档稍微写个简单的配置文件就可以创建起来. 可以选择用国内镜像,安装比较快
kubeadm 方式安装 k8s 集群-v1.23.17知乎搜索一下,按照教程,然后参考官方的教程,搭起来就是下面的效果[root@k8s-master01 ~]# kubectl get pod,svcNAME READY STATUS RESTARTS AGEpod/nginx-f89759699-nqv9b 1/1 Running 0 25hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1
服务器环境就没有, 我看着一个项目下了两小时, 并且有时候还连不上 GitHub, k8s.io 更不用说了 2) 主要是想学, 既然有资源就想去试试集群. 但感觉在 Windows 下有些水土不服, WSL 在这方面使用体验上又不如真正的 Linux, 试过 kind 但没弄明白.3) 可能相反, 我更倾向于原生的部署方式. 但入门可能这样确实更快. 谢谢, 我去试试
kubernetes 安装的确没那么容易, 多摸索几次就会了。不要用 docker, 用 containerd, 再装上 nerdctl 。containerd 的 config.toml 中也要指定 docker.io gcr.io 等一堆国内镜像源连不上是正常的,kubeadm 要指定镜像源, kubernetes 最后还要安装网络插件,你也需要下载相关 yaml, 然后安装才能打通网络 比如使用 flannel 、calico 、canalkind 本地模拟其实也还好, 开发 k8s 相关一些组件的时候比较方便。
学习先用 kubeadmin 不推荐 minikube,然后建议上 rancher/kubesphere 这种管理会更容易
上生产是一定不能用 k3d, kind 这些。 初学者可以用 kind,k3d 学习一些概念和操作还是可以的,因为 k3d 、kind 是在容器中创建,和 k8s static pod 在本地创建是有巨大区别的,另外 kubelet 是不能容器化的。用公有云 k8s 一样需要了解 kubernetes 等众多知识和操作。像证书管理, 文件配置以及证书更新、网络规则、策略管理以及存储 PV 的确是使用 kubeadm 二进制创建的 k8s 才能有更多的理解。
我是参考的官方教程: 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 拉起集群( 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_containers2. 在能连到官方镜像源的机器上先拉取镜像,save 出 tar 包再到你实际服务器上 load 进 Docker/Containerd 。 kubeadm config images pull --kubernetes-version v1.26.0感觉按照官方的教程这些步骤来做可以比较好的学习到 k8s ,如果是单纯想尝鲜或者快速开发,Docker Desktop 现在也可以直接在本地启动一个 kubernetes 的环境 :lol
KIND 最简单 ( kind.sigs.k8s.io ),前提:先给 Docker 设置好 proxy ,不然可能很多镜像拉不下来。
建议先玩 k3s
如果有预算的话,可以买个香港的服务器,然后 ssh 上去,先装个 ubuntu 玩一下 microk8s ,然后也可以用 kind ,然后了解一下 configmap ,deployment ,service ,pvc ,ingress 几个资源的相互关系,然后接下来就学一下 helm 就差不多了,最近我买过香港服务器是 ucloud 双 11 促销新用户首机,买个 2C4G30M 就可以了,国内部署 k8s 多多少少遇到网络拉镜像很慢的问题,你想心智负担少,我就建议买个香港玩一玩。
用 k3s 最简单,最好是先腾讯云租个现成装好 k3s 的练练手。
所有的学习都走官方网站,初学也建议走 kubeadm 或者二进制,市面上的那些 rancher 、KubeSphere 等工具不建议初学者使用,除非你在网络,存储,linux 各方面都有涉猎,不然这些工具的部署过程对你来说是封闭的,对于学习很不友好
www.drxcloud.club/662.html前一阵子粗浅的研究了下 供参考 祝好运
最简单的就是用 KubeSphere ,Rancher 这种工具直接搭起来。其中 KubeSphere 是国人开发的,用来搭建环境的 KubeKey 甚至自带翻墙配置。可以让你在完全什么都不懂的情况下直接拉起来一个差不多能跑的东西,甚至还带 dashboard 。其次就是 minikube ,k3s ,microk8s 这类的。但最终还是要看你要装 k8s 做什么。如果是产品使用,自建集群一般不会让你一个完全不懂得来搭 k8s ,自然有运维团队负责。云服务的话基本都用厂商的集群服务,也不会让你开一堆 EC2 从零开始搭一遍。如果是学习,那么搭建的过程也是学习的一部分。从 kubeadm init 开始,全都是坑。每爬出一个坑,你对 k8s 的知识掌握就更多一点。也更了解这东西的各个部分是怎么交互运作的,是如何从物理机上抽象出一整套调度系统的。反正作为学习的目的来说,更没必要找个工具跳过这一步了。
官网文档看的云里雾里的,看这篇文章吧,照着做下来一气呵成,完美安装 www.linuxtechi.com/install-kubernetes-cluster-on-debian/但是国内的网络确实不好搞,我的服务器是国外的,不存在网络问题。
仍然建议使用 kubeadm 搭建多节点集群(至少 2 个) github.com/chaseSpace/k8s-tutorial-cn/blob/main/install_by_kubeadm/install.md我写的,可参考。
放假一回来 客户就打电话来反馈网站无法访问 文件都被加上了.locked 的后缀还有READ_ME9.html的比特币勒索信息 后来查了下是 PHP 爆了严重漏洞 CVE-20…
用过 ultraedit ,notepad ,everedit ,editplus 这些,vscode 不够轻量,Sublime Text ,atom 都是很多年前出的了,现在…
开发过程中,有时候会觉得当时要是没有读过那本书,现在肯定想不到要这样做。由此可以推定,因为曾经没有读过某一本书,会导致想不到要怎样做。所以不如大家都相互推荐一下自己读过的好书,…