作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
上小节我们讲解使用Opterator搭建了单机版的Mariadb和mariadb galera cluster集群,今天这个小节我们来讲解另外一个Opterator。
1.克隆Operator
git clone https://github.com/pravega/zookeeper-operator.git
cd zookeeper-operator
2.安装CRD
[root@master01 zookeeper-operator]# kubectl create -f config/crd/bases/
customresourcedefinition.apiextensions.k8s.io/zookeeperclusters.zookeeper.pravega.io created
3.配置RBAC
#default namespace
kubectl create -f config/rbac/default_ns_rbac.yaml
#all namespaces
[root@master01 zookeeper-operator]# kubectl create -f config/rbac/all_ns_rbac.yaml
serviceaccount/zookeeper-operator created
clusterrole.rbac.authorization.k8s.io/zookeeper-operator created
clusterrolebinding.rbac.authorization.k8s.io/zookeeper-operator-cluster-role-binding created
#这里的区别在于是创建的权限是命名空间还是全局的
4.安装Opterator
[root@master01 zookeeper-operator]# kubectl create -f config/manager/manager.yaml
deployment.apps/zookeeper-operator created
#检查Pod状态
[root@master01 zookeeper-operator]# kubectl get pod -A|grep zook
default zookeeper-operator-6ccfff7c88-n49vb 1/1 Running 0 3m21s
5.创建集群
apiVersion: "zookeeper.pravega.io/v1beta1"
kind: "ZookeeperCluster"
metadata:
name: "zookeeper"
spec:
replicas: 3
persistence:
spec:
storageClassName: "mariadb-sc" # 替换为你的 StorageClass 名称
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 20Gi # 按需调整存储大小
6.检查集群状态
kubectl get pod,pvc |grep zook
如果不配置存储部分,Pod将会因为没有PVC而出现Pending状态。当然到这个只是比较简单的应用,并没有涉及更多内容,包括配置文件定义,服务应用等。
其实我们从CRD到Operator的介绍到2个实际案例发现,这个逻辑还是比较的简单的。
1.CRD实际上就是为了实现某个功能,注册到kube-apiservice的一个服务或者api资源。
2.然后Operator就是为了实现这个服务实现的控制逻辑,必定会涉及到一个控制器的Pod。
3.当我们需要实现具体的资源的创建的时候,就是创建一个对应的资源的yaml文件,然后Opteraotr就会按照他预设的逻辑给我们把对应的资源创建出来(Pod,Service和PVC等信息)。
总结
这些Opterator都是第三方的,使用越多Opterator相对他就会越完善,但是相对的他的功能越多,他就会越复杂。如果要想对这个应用比较熟悉,就需要一定的积累,然后还能据需要对这个Operator创建出来的集群进行调整,才能满足你的需要。