|NO.Z.00259|——————————|CloudNative|——|KuberNetes&中介軟體容器化及helm.V06|------------------------------------------|中介軟體.v06|redis.v5.0.4|operator方式部署叢集|
阿新 • • 發佈:2022-03-31
[CloudNative:KuberNetes&中介軟體容器化及helm.V06] [Applications.KuberNetes] [|DevOps|k8s|中介軟體容器化及Helm|部署RedisOperator|部署redis叢集|叢集擴容與縮容|叢集清理|]
一、使用operator方式去部署redis
### --- 下載redis版本包:operator方式部署 ~~~ 下載redis-cluster-operator包檔案 [root@k8s-master01 operator-redis]# git clone https://github.com/ucloud/redis-cluster-operator.git
二、建立redis-cluster-operator叢集### --- redis-cluster-operator配置檔案詳解 [root@k8s-master01 redis-cluster-operator]# more deploy/example/redis.kun_v1alpha1_distributedrediscluster_cr.yaml apiVersion: redis.kun/v1alpha1 kind: DistributedRedisCluster // 自定的資源型別 metadata: annotations: # if your operator run as cluster-scoped, add this annotations redis.kun/scope: cluster-scoped name: example-distributedrediscluster spec: # Add fields here masterSize: 3 clusterReplicas: 1 image: redis:5.0.4-alpine ~~~ 以宣告式的方法去建立一個redis叢集, masterSize: 3 // 這個redis叢集定義了有幾個master,有3個master clusterReplicas: 1 // 每個master有1個副本;也就說明這個位置會建立6個redis容器 image: redis:5.0.4-alpine // 使用的映象版本是redis:5.0.4-alpine
### --- 建立redis叢集 ~~~ 報錯沒有這個kind;說明就是沒有配置operator [root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/example/redis.kun_v1alpha1_distributedrediscluster_cr.yaml -n ratel-test1 error: unable to recognize "deploy/example/redis.kun_v1alpha1_distributedrediscluster_cr.yaml": no matches for kind "DistributedRedisCluster" in version "redis.kun/v1alpha1"
### --- 配置operator;建立CRD
~~~ 地址:https://github.com/ucloud/redis-cluster-operator#deploy-a-sample-redis-cluster
~~~ 註冊DistributedRedisCluster和RedisClusterBackup自定義資源定義(CRD)。
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/crds/redis.kun_distributedredisclusters_crd.yaml
customresourcedefinition.apiextensions.k8s.io/distributedredisclusters.redis.kun created
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/crds/redis.kun_redisclusterbackups_crd.yaml
customresourcedefinition.apiextensions.k8s.io/redisclusterbackups.redis.kun created
### --- 名稱空間範圍的操作員監視和管理單個名稱空間中的資源,
~~~ 而叢集範圍的操作員監視和管理群集範圍內的資源。
~~~ 您可以選擇以名稱空間範圍或叢集範圍執行您的操作員。
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/service_account.yaml
serviceaccount/redis-cluster-operator created
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/cluster/cluster_role.yaml
clusterrole.rbac.authorization.k8s.io/redis-cluster-operator created
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/cluster/cluster_role_binding.yaml
clusterrolebinding.rbac.authorization.k8s.io/redis-cluster-operator created
[root@k8s-master01 redis-cluster-operator]# kubectl create -f deploy/cluster/operator.yaml
deployment.apps/redis-cluster-operator created
configmap/redis-admin created
### --- 檢視建立的redis-cluster-operator
[root@k8s-master01 redis-cluster-operator]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox 1/1 Running 15 7d21h 172.18.195.25 k8s-master03 <none> <none>
redis-cluster-operator-6669898858-xqpqq 1/1 Running 0 95s 172.25.92.116 k8s-master02 <none> <none>
三、建立redis叢集(因記憶體不夠導致實驗失敗)### --- 建立redis叢集
[root@k8s-master01 redis-cluster-operator]# kubectl apply -f deploy/example/redis.kun_v1alpha1_distributedrediscluster_cr.yaml
distributedrediscluster.redis.kun/example-distributedrediscluster created
### --- 檢視叢集;顯示是pending狀態,檢視記錄,發現是記憶體不夠
~~~ 注:顯示記憶體不夠
[root@k8s-master01 redis-cluster-operator]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
drc-example-distributedrediscluster-0-0 0/1 Pending 0 63s <none> <none> <none> <none>
drc-example-distributedrediscluster-1-0 0/1 Pending 0 13m <none> <none> <none> <none>
drc-example-distributedrediscluster-2-0 0/1 Pending 0 13m <none> <none> <none> <none>
redis-cluster-operator-6669898858-xqpqq 1/1 Running 0 31m 172.25.92.116 k8s-master02 <none> <none>
[root@k8s-master01 redis-cluster-operator]# kubectl delete po drc-example-distributedrediscluster-0-0
Warning FailedScheduling 16s default-scheduler 0/5 nodes are available: 5 Insufficient memory.
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)