OpenShift 및 CodeReady 컨테이너에서 데이터베이스 실행

자체 하드웨어와 RedHat의 CodeReady 용기를 사용하여 OpenShift에서 데이터베이스 설정에 대한 소개 연습을 진행합니다.
CodeReady 컨테이너는 OpenShift K8s를 로컬에서 실행하는 좋은 방법으로 개발 및 테스트에 적합합니다.이 블로그의 절차는 성능이 좋은 기계, 노트북 또는 데스크톱이 필요하다.4소켓 CPU와 16GB+RAM이 좋습니다.

RedHat의 CodeReady 컨테이너 다운로드 및 설치


RedHat의 CodeReady 컨테이너 다운로드 및 설치Red Hat OpenShift 4 on your laptop: Introducing Red Hat CodeReady Containers
명령줄에서 먼저 CodeReady 컨테이너 구성
❯ crc setup

…
Your system is correctly setup for using CodeReady Containers, you can now run 'crc start' to start the OpenShift cluster
그런 다음 를 시작하고 다운로드 페이지에서 복사한 Pull Secret을 입력합니다.10분 이상 걸릴 수 있으니 기다려 주십시오.
❯ crc start

INFO Checking if running as non-root
…
Started the OpenShift cluster.

The server is accessible via web console at:
  https://console-openshift-console.apps-crc.testing 
…
위의 출력에는 다음kubeadmin 명령에 필요한 암호oc login …가 포함됩니다.
❯ eval $(crc oc-env)
❯ oc login -u kubeadmin -p <password-from-crc-setup-output> https://api.crc.testing:6443

❯ oc version

Client Version: 4.7.11
Server Version: 4.7.11
Kubernetes Version: v1.20.0+75370d3
브라우저에서 URL 열기https://console-openshift-console.apps-crc.testingkubeadmin 사용자 이름과 비밀번호를 사용하여 로그인하고 위에서 설명한 대로 oc login … 명령을 사용합니다.자가 서명 인증서를 사용했기 때문에 몇 번을 시도해야 할 수도 있습니다.
OpenShift를 시작하고 실행하면 다음 페이지를 보실 수 있습니다

상태 및 시작 프로세스를 확인하는 데 도움이 되는 명령은 다음과 같습니다.
❯ oc status   

In project default on server https://api.crc.testing:6443

svc/openshift - kubernetes.default.svc.cluster.local
svc/kubernetes - 10.217.4.1:443 -> 6443

View details with 'oc describe <resource>/<name>' or list resources with 'oc get all'.  
계속하기 전에 CodeReady 컨테이너 기본 설정 대화 상자로 이동합니다.이에 따라 CPU 및 메모리를 >12 및 >14GB로 늘립니다.

OpenShift 로컬 볼륨 만들기


Cassandra의 데이터 디렉토리에는 영구 볼륨이 필요합니다.OpenShift에서는 Rancher 영구 볼륨에서 로컬 호스트 경로를 사용하는 것부터 OpenShift 로컬 저장소 운영자를 설치하고 사용하는 것까지 다양한 클라우드 공급자 백엔드에 있는 영구 볼륨도 있다.
이 블로그는 vanilla OpenShift 볼륨을 사용하고 주 k8s 노드의 폴더를 사용합니다.
마스터 노드의 터미널 탭으로 이동하여 원하는 디렉토리를 만듭니다.
주 노드는 /cluster/nodes/ 홈페이지에 있다.
crc-m89r2-master-0이라는 노드를 누르고 '단말기' 옵션을 누르십시오.
터미널에서 다음 명령을 실행합니다.
sh-4.4# chroot /host
sh-4.4# mkdir -p /mnt/cass-operator/pv000
sh-4.4# mkdir -p /mnt/cass-operator/pv001
sh-4.4# mkdir -p /mnt/cass-operator/pv002
sh-4.4# 
주 노드와 친연 관계를 가진 영구 볼륨을 만들 것입니다. 다음yaml에서 설명합니다.마스터 노드의 이름은 설치에 따라 다를 수 있습니다.마스터 노드crc-gm7cm-master-0의 이름이 없으면 다음 명령이 마스터 노드의 이름을 바꿉니다.먼저 cass-operator-1.7.0-openshift-storage.yaml 파일을 다운로드하고 현재 CodeReady Containers 실례 검사nodeAffinity 부분의 노드 이름과 대조하여 필요할 때 업데이트합니다.
❯ wget https://thelastpickle.com/files/openshift-intro/cass-operator-1.7.0-openshift-storage.yaml

# The name of your master node
❯ oc get nodes -o=custom-columns=NAME:.metadata.name --no-headers

# If it is not crc-gm7cm-master-0
❯ sed -i '' "s/crc-gm7cm-master-0/$(oc get nodes -o=custom-columns=NAME:.metadata.name --no-headers)/" cass-operator-1.7.0-openshift-storage.yaml
영구 볼륨(PV) 및 스토리지 클래스(SC)를 생성합니다.
❯ oc apply -f cass-operator-1.7.0-openshift-storage.yaml

persistentvolume/server-storage-0 created
persistentvolume/server-storage-1 created
persistentvolume/server-storage-2 created
storageclass.storage.k8s.io/server-storage created
PVs가 있는지 확인합니다.
❯ oc get pv | grep server-storage

server-storage-0   10Gi   RWO    Delete   Available   server-storage     5m19s
server-storage-1   10Gi   RWO    Delete   Available   server-storage     5m19s
server-storage-2   10Gi   RWO    Delete   Available   server-storage     5m19s
SC의 존재를 확인합니다.
❯ oc get sc

NAME             PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
server-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  5m36s
사용에 대한 자세한 내용은 OpenShift volumes의 RedHat 설명서를 참조하십시오.

Cass 운영자 배포


카스 조작부호를 만듭니다.여기에서 우리는 카스 조작부호의 상위 1.7.0 버전을 사용할 수 있다.카스 조작부호를 만든 후 POD가 필요한 권한을 가지고 성공적으로 만들 수 있도록 다음 단계에서 oc adm policy … 명령을 신속하게 실행하는 것이 중요하다.
❯ oc apply -f https://raw.githubusercontent.com/k8ssandra/cass-operator/v1.7.0/docs/user/cass-operator-manifests.yaml

namespace/cass-operator created
serviceaccount/cass-operator created
secret/cass-operator-webhook-config created
W0606 14:25:44.757092   27806 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0606 14:25:45.077394   27806 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
customresourcedefinition.apiextensions.k8s.io/cassandradatacenters.cassandra.datastax.com created
clusterrole.rbac.authorization.k8s.io/cass-operator-cr created
clusterrole.rbac.authorization.k8s.io/cass-operator-webhook created
clusterrolebinding.rbac.authorization.k8s.io/cass-operator-crb created
clusterrolebinding.rbac.authorization.k8s.io/cass-operator-webhook created
role.rbac.authorization.k8s.io/cass-operator created
rolebinding.rbac.authorization.k8s.io/cass-operator created
service/cassandradatacenter-webhook-service created
deployment.apps/cass-operator created
W0606 14:25:46.701712   27806 warnings.go:70] admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration
W0606 14:25:47.068795   27806 warnings.go:70] admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration
validatingwebhookconfiguration.admissionregistration.k8s.io/cassandradatacenter-webhook-registration created

❯ oc adm policy add-scc-to-user privileged -z default -n cass-operator

clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "default"

❯ oc adm policy add-scc-to-user privileged -z cass-operator -n cass-operator

clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "cass-operator"
배치 상황을 점검해 봅시다.
❯ oc get deployments -n cass-operator

NAME            READY   UP-TO-DATE   AVAILABLE   AGE
cass-operator   1/1     1            1           14m
우리는 카스 조종사의 크레인이 만들어지고 성공적으로 운행되었는지 검사해야 한다.여기에 사용된 명령은 kubectl이고 모든 k8s 작업에 대해서는 ockubectl 명령을 교환할 수 있습니다.
❯ kubectl get pods -w -n cass-operator

NAME                             READY   STATUS    RESTARTS   AGE
cass-operator-7675b65744-hxc8z   1/1     Running   0          15m
고장 제거: 카스 조작원이 최종적으로 Running 상태에 있지 않거나 뒷부분의 POD가 시작되지 않으면 진단하기 편리하도록 OpenShift UI Events webpage를 사용하는 것을 권장합니다.

Cassandra 클러스터 설정


다음 단계는 그룹을 만드는 것입니다.다음 배치 파일은 3 노드 그룹을 만들었습니다.이것은 주로 상위 카스 Operator 버전 1.7.0 파일example-cassdc-minimal.yaml의 복사본이지만, 모든 POD를 같은 작업 노드에 배치할 수 있는 작은 수정이 있습니다. (CodeReady 용기는 기본적으로 k8s 노드만 사용하기 때문입니다.)
❯ oc apply -n cass-operator -f https://thelastpickle.com/files/openshift-intro/cass-operator-1.7.0-openshift-minimal-3.11.yaml

cassandradatacenter.cassandra.datastax.com/dc1 created
kubectl get pods …watch 명령을 사용하여pod의 생성, 초기화, 최종 운행을 관찰합시다.
❯ kubectl get pods -w -n cass-operator

NAME                             READY   STATUS    RESTARTS   AGE
cass-operator-7675b65744-28fhw   1/1     Running   0          102s
cluster1-dc1-default-sts-0       0/2     Pending   0          0s
cluster1-dc1-default-sts-1       0/2     Pending   0          0s
cluster1-dc1-default-sts-2       0/2     Pending   0          0s
cluster1-dc1-default-sts-0       2/2     Running   0          3m
cluster1-dc1-default-sts-1       2/2     Running   0          3m
cluster1-dc1-default-sts-2       2/2     Running   0          3m

Cassandra 클러스터 사용


카스텔라 크레인의 작동과 운행에 따라 집단을 사용해도 된다.nodetool status 명령을 사용하여 테스트합니다.
❯ kubectl -n cass-operator exec -it cluster1-dc1-default-sts-0 -- nodetool status

Defaulting container name to cassandra.
Use 'kubectl describe pod/cluster1-dc1-default-sts-0 -n cass-operator' to see all of the containers in this pod.
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns (effective)  Host ID                               Rack
UN  10.217.0.73  84.42 KiB  1            83.6%             672baba8-9a05-45ac-aad1-46427027b57a  default
UN  10.217.0.72  70.2 KiB   1            65.3%             42758a86-ea7b-4e9b-a974-f9e71b958429  default
UN  10.217.0.71  65.31 KiB  1            51.1%             2fa73bc2-471a-4782-ae63-5a34cc27ab69  default

The above command can be run on `cluster1-dc1-default-sts-1` and `cluster1-dc1-default-sts-2` too.
다음은 테스트cqlsh.이러한 인증이 필요하므로 먼저 CQL 사용자 이름과 암호를 가져옵니다.
# Get the cql username
❯ kubectl -n cass-operator get secret cluster1-superuser -o yaml | grep " username" | awk -F" " '{print $2}' | base64 -d && echo ""

# Get the cql password
❯ kubectl -n cass-operator get secret cluster1-superuser -o yaml | grep " password" | awk -F" " '{print $2}' | base64 -d && echo ""

❯ kubectl -n cass-operator exec -it cluster1-dc1-default-sts-0 -- cqlsh -u <cql-username> -p <cql-password>

Connected to cluster1 at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.7 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cluster1-superuser@cqlsh>

청결을 유지하다


CodeReady 용기는 특히 OpenShift의 포장이기 때문에 개발 목적에만 사용됩니다."모든 컨텐츠를 지우려면""삭제"""
❯ crc stop
❯ crc delete
다른 한편, 한 단계만 삭제하고 싶으면 다음과 같은 각 단계를 수행할 수 있습니다(순서대로).
❯ oc delete -n cass-operator -f https://thelastpickle.com/files/openshift-intro/cass-operator-1.7.0-openshift-minimal-3.11.yaml

❯ oc delete -f https://raw.githubusercontent.com/k8ssandra/cass-operator/v1.7.0/docs/user/cass-operator-manifests.yaml

❯ oc delete -f cass-operator-1.7.0-openshift-storage.yaml

좋은 웹페이지 즐겨찾기