需求描述
docker的默认工作目录(存储目录)是/var/lib/docker
,会存放镜像文件、容器日志和写入到容器临时目录的文件等,默认挂载在系统盘。
而系统盘一般都不会太大,因此最好把docker工作目录更改到数据盘。
本文中,我们会把docker的工作目录从/var/lib/docker
改到/data/docker
,其中/data
目录挂载了数据盘。
《ansible+kubeadm部署K8S高可用集群》一文中,我们安装完成了K8S高可用集群。表面看一切正常,跑测试pod也没有问题。
但是在《K8S中安装Milvus》时,就出现了问题。
1 | helm install milvus-operator \ |
报错:
1 | Warning FailedMount 82s (x13 over 11m) kubelet MountVolume.SetUp failed for volume "cert" : secret "milvus-operator-webhook-cert" not found |
从报错看,像是cert-manager的问题。
当前有十台主机,主机IP为192.168.56.101-110
,用户为voidking
,具有sudo权限。
现在想要用这十台主机搭建一个K8S集群,版本1.22.15,其中3台作为master,7台作为worker。
参考文档:
最简单的方法,我们可以使用kubeadm逐个主机进行安装配置,参考《kubeadm安装部署K8S集群——CentOS篇》。
但是挨个安装效率太低了,所以我们希望能够批量安装,使用 ansible+kubeadm 。有一个kubeadm-ansible项目,可以使用ansible+kubeadm实现批量安装,但是已经废弃了(两年没有更新,issue也没人处理)。
因此,需要自行实现ansible+kubeadm的批量安装方式。
此外,因为要3台master配置高可用,所以还要安装keepalived+haproxy。
整体操作流程:
为方便描述,下文中使用主机IP的最后一段作为该主机的简称,例如:192.168.56.101
简称为101
。
spark-on-k8s-operator: Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes.
The Kubernetes Operator for Apache Spark aims to make specifying and running Spark applications as easy and idiomatic as running other workloads on Kubernetes. It uses Kubernetes custom resources for specifying, running, and surfacing status of Spark applications.
spark-on-k8s-operator工作流程:
1、提交sparkApplication的请求到api-server
2、把sparkApplication的CRD持久化到etcd
3、operator订阅发现有sparkApplication,获取后通过submission 4、runner提交spark-submit过程,请求给到api-server后生成对应的driver/executor pod
5、spark pod monitor会监控到application执行的状态(所以通过sparkctl可以通过list、status看到)
mutating adminission webhook建svc,可以查看spark web ui
简而言之,spark-on-k8s-operator改变了传统的spark任务运行方式,能够提高资源利用率和节省资源。用户提交CRD之后,k8s才会创建运行spark任务需要的pod,从而能够利用整个k8s集群的资源。任务跑完之后,pod会被回收,从而节省资源。
参考文档: