大家都知道,时下云和容器等虚拟技能正在改变和统治着这天下。听说基于AI和虚拟现实技能的元宇宙时期也立时就要到来。是不是和我一样觉得自己已经outer了,那怎么办?学习呗,不断学习,不然就会掉队。学如逆水行舟,不进则退。可能大家都用过docker,也打仗过一些公有云的VPS,比如阿里云的ECS等,然后更进一步可能用过docker-compose,至于最盛行的K8S可能出于各类缘故原由还没有学习过。那么本日我们就要以极简的方法极省的资源构建一个K8S集群,可以用来学习,也可以用来管理个人日常利用。
Kubernetes概述Kubernetes(希腊语舵手helmsman的意思)是由巨子谷歌创建的容器编排产品。但K8S体系繁芜而凌乱,而且须要大量的做事器才能构建一个可以实用的集群。但是去茧抽丝、简而言之,一个K8S集群由做事端(Master)和CLI管理工具kubectl,etcd数据库,API做事器以及各个运行事情负荷的节点构成,节点上跑Pods,pods来实际起容器。
K8s涉及浩瀚的新观点,我们简要学习一下:

Pods 基本事情单元,大致是一个容器,或者一组容器。Pod 担保存在于集群的同一节点上。K8s为pod自动分配IP。Pod内的容器都可以相互访问,但不能在其他Pod上运行的容器。
做事(Services )是多组pod的入口点,可以更轻松地将它们作为一个业务单元进行管理。他们不直接管理Pod(利用ReplicaSet),但大多数时候,我们无须要知道 ReplicaSet是什么。做事利用Pod标签标识它们掌握的 。
标签(Labels) K8中的每个工具都可以附加元数据。标签是它的一种形式。K8s中的大多数操作都可以利用针对存在的特定标签选择器来限定范围。
卷(Volumes) 和Docker一样,卷用于将容器连接到存储。对付生产用场,拥有S3或具有类似担保的东西,但对付此家庭做事器用例,只需利用hostPath键入直接映射到做事器上的文件夹的挂载。在大多数情形下,K8s 使这有点繁芜——须要有一个PersistentVolume(PV)声明,以及PersistentVolumeClaim(PVC) 来实际访问。可以直策应用hostPath安装在支配上,但PV和PVC可以更好地掌握卷的利用。
支配(Deployment) 是一种紧张的事情单元。其声明要利用的Docker镜像、支配是通过标签的一部分、要挂载的卷和要导出的端口以及可选的安全问题。
ConfigMap 因此键值形式存储配置数据的地方 Deployment 的环境可以从 ConfigMap中获取——所有的,或者特定的键。
Ingress 用于通过代理(云Nginx)将Pod做事对外发布。
Jobs和 CronJobs 是可以实行的一次性或重复性事情负载。
K3S实战K8S有很多的简化安装方案,有K3S,Minik8sk8s,一个ubuntu的MicroK8s虫虫曾考试测验过很多方案,除K3S基本上都不是咋太成功,可能紧张是由于网络限定的缘故吧。该实战中选K3S,紧张其有中国背景,对海内网络友好。而且K3S作为一个轻量级替代方案,方便灵巧而且是单二进制办理方案,与普通K8s 100%兼容。
Linux VPS
创建一台虚拟机备用。此处我们利用VirtualBox并安装一个没有桌面的基本 Debian 11 VM,启动OpenSSH做事。为了防止后续涌现问题时候回退,我们利用虚拟机管理器克隆一个初始初始的VM,以备用。
确保克隆的VM的网络适配器设置为桥接并且与主VM具有相同的MAC地址,这样可以始终得到相同的IP。
给VPS配置SSH密钥认证,当通过SSH连接到做事器时,直接到 root shell,后面将用它进行集群管理。
安装K3S安装我们利用本地安装形式,k3s安装很随意马虎,linux下一个命令即可:
curl -sfL rancher-mirror.cnrancher/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
如果有公有云资源,比如aws、阿里云、腾讯云、谷歌以及K3D(基于容器的集群)的上岸凭据,则可以快速创建一个集群。
本文我们利用本地资源创建集群,选择Core|Cluseters,然后右边点击Create按钮。
填好,Master和worker
把稳k3s options部分K3s Install Script选择海内镜像
通过下拉菜单选择rancher-mirror脚本来安装。
额外选项中,UI选中dashboard面板
为了测试安装是否成功,可以利用
kubectl --kubeconfig ~/.kube/k3s-vm-config get nodes
如果输出诸如下面:
NAME STATUS ROLES AGE VERSIONcck3s Ready control-plane,master 2m4s v1.21.7+k3s1
则K8s集群已经安装无缺,可以吸收事情负载了。
客户端除了ks3-dashboard面板管理工具,还有很多很精良俊秀的UI工具可以用来进交互。此处我们先容两个工具:
k9s(CLI),一个非常好的命令行界面,非常随意马虎利用并且非常适宜远程设置(有必要,往后我们专门先容。
其界面如下:
lens(GUI) 也是非常好的办理方案,指标数据等信息非常直不雅观和好看。
把稳k8slens是个商业工具,但是个人利用是完备免费的。
一键支配WordPress环境有了上面根本,在这根本上再支配便是一个配置的问题了。再次我们以WordPress为例子,他包括了根本Mysql,PHP和Apache Web做事器等容器。
首先是数据的存储和持久化,须要利用K8S PV和PVC创建目录保存数据。
创建一个Secret保存数据库密码。通过kustomization.yaml中的天生器创建一个Secret。
secretGenerator:- name: mysql-passliterals:- password=YOUR_PASSWORD
然后创建MySQL和Wordpress 资源配置文件mysql-deployment.yaml和wordpress-deployment.yaml
个中MySQL容器的数据目录利用 PV挂载在/var/lib/mysql。通过Secret环境变量调用数据库的密码设置。
WordPress容器通过PV挂载站点目录为/var/www/html。WORDPRESS_DB_HOST环境变量集上面定义的 MySQL Service 的名称,WordPress 将通过Service访问数据库。WORDPRESS_DB_PASSWORD环境变量设置表示获取kustomize Secret天生的数据库密码。
末了添加ysql-deployment.yaml和wordpress-deployment.yaml配置到kustomization.yaml
cat <<EOF >>./kustomization.yamlresources:- mysql-deployment.yaml- wordpress-deployment.yamlEOF
然后利用
kubectl apply -k ./
运用以上配置,等一段韶光,就可以验证支配是否已经就绪
kubectl get podswordpress-5766746679-d5rlq 0/1 Runner 12 47m
在dashboard也可以瞥见新建的services
访问其地址
为wordpress初始界面表示全体环境完全。
实际上其他做事的支配也是编写yaml文件,然后类似的实行即可(也可以在dashboard一步一步配置,比较繁琐不建议)。
结论总之,Kubernetes上手便是这样随意马虎,开始可能会麻烦一点,但是有这个根本你会越用越趁手,越用越加单。基于K3S的集群完备不须要多少资源,你完备可以用手里玩腻了墙角吃灰的树莓派或者自己刷ROM斐讯路由器在家庭网络下支配一个自己的研发、学习和娱乐为一体的K8S集群。