В этом посте я собираюсь объяснить, как развернуть и масштабировать базу данных Oracle Express в многоузловом кластере Kubernetes . Я собираюсь использовать этот контейнер Docker от Максима Быленко. Я имею в виду контейнер для Oracle XE 11g из-за следующей открытой проблемы с этим для Oracle XE 12c в то время, когда я делал процесс, описанный ниже. Я предполагаю, что читатели имеют, по крайней мере, базовый или средний уровень знаний о понятиях Kubernetes.
Первое, что нужно сделать, это создать Pod. Мы можем сделать это (и другие операции, описанные в этом посте) декларативно через файл YAML:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
apiVersion: v1 kind: Pod metadata: name: "oradb" labels: name: "oradb" spec: containers: - image: "sath89/oracle-xe-11g:latest" name: "oradb" ports: - containerPort: 1521 restartPolicy: Always |
После того, как Pod был успешно создан, нам нужно создать для него Сервис:
01
02
03
04
05
06
07
08
09
10
11
|
apiVersion: v1 kind: Service metadata: name: "oradb" labels: app: "oradb" spec: ports: - port: 1521 selector: app: "oradb" |
Теперь нам нужно создать ReplicationController. Это позволяет легко создавать несколько модулей и затем гарантировать, что это количество модулей всегда существует: в случае сбоя модуля его заменяет контроллер репликации. Вот как мы можем декларативно создать ReplicationController, указав, что нам нужно 2 реплики:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
apiVersion: v1 kind: ReplicationController metadata: name: "oradb" labels: app: "oradb" spec: replicas: 2 selector: app: "oradb" template: metadata: labels: app: "oradb" spec: containers: - image: "sath89/oracle-xe-11g:latest" name: "oradb" |
Мы можем проверить, был ли ReplicationController успешно создан из оболочки через
1
|
kubectl: |
kubectl получить RC
или, если в OpenShift Origin:
1
2
3
4
|
oc get rc NAME DESIRED CURRENT AGE oradb 2 2 1d |
Давайте проверим на стручки:
1
|
kubectl get pods |
или в источнике OpenShift:
1
2
3
4
5
6
|
oc get pods <i>NAME READY STATUS RESTARTS AGE oradb 1 /1 Running 0 1d oradb-6rs8h 1 /1 Running 0 1d oradb-cq2x9 1 /1 Running 0 1d< /i > |
Теперь представьте, что нам нужно масштабировать кластер от 2 до 3 модулей. Это можно сделать просто с помощью команды kubectl scale:
1
|
kubectl scale rc oradb --replicas=3 |
или команда oc scale:
1
|
oc scale rc oradb --replicas=3 |
Как только приведенная выше команда будет выполнена, мы найдем новый модуль в списке:
1
2
3
4
5
6
|
NAME READY STATUS RESTARTS AGE oradb 1 /1 Running 0 1d oradb-6rs8h 1 /1 Running 0 1d oradb-cq2x9 1 /1 Running 0 1d oradb-rplzj 1 /1 Running 0 1d |
И это новая ситуация для ReplicationController:
1
2
|
NAME DESIRED CURRENT AGE oradb 3 3 1d |
Sid базы данных — это xe, а учетные данные для подключения:
1
2
|
username: system password: oracle |
Опубликовано на Java Code Geeks с разрешения Googlielmo Iozzia, партнера нашей программы JCG. См. Оригинальную статью здесь: Развертывание и масштабирование базы данных Oracle в многоузловом кластере Kubernetes.
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |