OpenShift-클러스터

OpenShift는 OpenShift 클러스터를 설정하는 두 가지 설치 방법을 사용합니다.

  • 빠른 설치 방법
  • 고급 구성 방법

클러스터 설정

빠른 설치 방법

이 방법은 얻을 수없는 빠른 클러스터 설정 구성을 실행하는 데 사용됩니다. 이 방법을 사용하려면 먼저 설치 프로그램을 설치해야합니다. 다음 명령을 실행하여 수행 할 수 있습니다.

Interactive method

$ atomic-openshift-installer install

이것은 대화 형 설정을 실행하고자 할 때 유용합니다.

Unattended installation method

이 방법은 무인 설치 방법을 설정하고자 할 때 사용되며, 사용자가 구성 yaml 파일을 정의하고 아래에 배치 할 수 있습니다. ~/.config/openshift/installer.cfg.yml의 이름으로. 그런 다음 다음 명령을 실행하여–u tag.

$ atomic-openshift-installer –u install

기본적으로 아래에있는 구성 파일을 사용합니다. ~/.config/openshift/. 반면 Ansible은 설치 백업으로 사용됩니다.

version: v2
variant: openshift-enterprise
variant_version: 3.1
ansible_log_path: /tmp/ansible.log

deployment:
   ansible_ssh_user: root
   hosts:
   - ip: 172.10.10.1
   hostname: vklnld908.int.example.com
   public_ip: 24.222.0.1
   public_hostname: master.example.com
   roles:
      - master
      - node
   containerized: true
   connect_to: 24.222.0.1
   
   - ip: 172.10.10.2
   hostname: vklnld1446.int.example.com
   public_ip: 24.222.0.2
   public_hostname: node1.example.com
   roles:
      - node
   connect_to: 10.0.0.2
   
   - ip: 172.10.10.3
   hostname: vklnld1447.int.example.com
   public_ip: 10..22.2.3
   public_hostname: node2.example.com
   roles:
      - node
   connect_to: 10.0.0.3

roles:
   master:
      <variable_name1>: "<value1>"
      <variable_name2>: "<value2>"
   node:
      <variable_name1>: "<value1>"

여기에는 특정 변수를 설정하려는 경우 정의 할 수있는 역할 별 변수가 있습니다.

완료되면 다음 명령을 사용하여 설치를 확인할 수 있습니다.

$ oc get nodes
NAME                    STATUS    AGE
master.example.com      Ready     10d
node1.example.com       Ready     10d
node2.example.com       Ready     10d

고급 설치

고급 설치는 마스터 및 노드 구성과 관련된 전체 호스트 구성 및 변수 정의가있는 Ansible 구성을 완전히 기반으로합니다. 여기에는 구성에 대한 모든 세부 정보가 포함됩니다.

설정이 완료되고 플레이 북이 준비되면 다음 명령을 실행하여 클러스터를 설정할 수 있습니다.

$ ansible-playbook -i inventry/hosts ~/openshift-ansible/playbooks/byo/config.yml

클러스터에 호스트 추가

다음을 사용하여 클러스터에 호스트를 추가 할 수 있습니다.

  • 빠른 설치 도구
  • 고급 구성 방법

Quick installation tool대화 형 및 비대화 형 모드에서 모두 작동합니다. 다음 명령을 사용하십시오.

$ atomic-openshift-installer -u -c </path/to/file> scaleup

애플리케이션 구성 파일의 확장 형식은 마스터와 노드를 모두 추가하는 데 사용할 수 있습니다.

고급 구성 방법

이 방법에서는 Ansible의 호스트 파일을 업데이트 한 다음이 파일에 새 노드 또는 서버 세부 정보를 추가합니다. 구성 파일은 다음과 같습니다.

[OSEv3:children]
masters
nodes
new_nodes
new_master

동일한 Ansible 호스트 파일에서 아래와 같이 새 노드에 대한 변수 세부 정보를 추가합니다.

[new_nodes]
vklnld1448.int.example.com openshift_node_labels = "{'region': 'primary', 'zone': 'east'}"

마지막으로 업데이트 된 호스트 파일을 사용하여 새 구성을 실행하고 구성 파일을 호출하여 다음 명령을 사용하여 설정을 완료합니다.

$ ansible-playbook -i /inventory/hosts /usr/share/ansible/openshift-ansible/playbooks/test/openshift-node/scaleup.yml

클러스터 로그 관리

OpenShift 클러스터 로그는 클러스터의 마스터 및 노드 시스템에서 생성되는 로그에 불과합니다. 이들은 서버 로그, 마스터 로그, 컨테이너 로그, 포드 로그 등 모든 종류의 로그를 관리 할 수 ​​있습니다. 컨테이너 로그 관리를위한 여러 기술과 애플리케이션이 있습니다.

로그 관리를 위해 구현할 수있는 도구는 거의 없습니다.

  • Fluentd
  • ELK
  • Kabna
  • Nagios
  • Splunk

ELK stack−이 스택은 모든 노드에서 로그를 수집하여 체계적인 형식으로 표시하는 데 유용합니다. ELK 스택은 주로 세 가지 주요 범주로 나뉩니다.

ElasticSearch − 주로 모든 컨테이너에서 정보를 수집하여 중앙 위치에 보관할 책임이 있습니다.

Fluentd − 수집 된 로그를 Elasticsearch 컨테이너 엔진에 공급하는 데 사용됩니다.

Kibana − 수집 된 데이터를 그래픽 인터페이스에서 유용한 정보로 표시하는 데 사용되는 그래픽 인터페이스.

한 가지 중요한 점은이 시스템이 클러스터에 배포되면 모든 노드에서 로그 수집을 시작한다는 것입니다.

로그 진단

OpenShift에는 oc adm dignostics여러 오류 상황을 분석하는 데 사용할 수있는 OC가있는 명령. 이 도구는 마스터에서 클러스터 관리자로 사용할 수 있습니다. 이 유틸리티는 알려진 문제를 해결하고 진단하는 데 매우 유용합니다. 이것은 마스터 클라이언트와 노드에서 실행됩니다.

agruments 또는 플래그없이 실행하면 클라이언트, 서버 및 노드 시스템의 구성 파일을 찾아서 진단에 사용합니다. 다음 인수를 전달하여 개별적으로 진단을 실행할 수 있습니다.

  • AggregatedLogging
  • AnalyzeLogs
  • ClusterRegistry
  • ClusterRoleBindings
  • ClusterRoles
  • ClusterRouter
  • ConfigContexts
  • DiagnosticPod
  • MasterConfigCheck
  • MasterNode
  • MetricsApiProxy
  • NetworkCheck
  • NodeConfigCheck
  • NodeDefinitions
  • ServiceExternalIPs
  • UnitStatus

다음 명령으로 간단히 실행할 수 있습니다.

$ oc adm diagnostics <DiagnosticName>

클러스터 업그레이드

클러스터 업그레이드에는 클러스터 내의 여러 항목을 업그레이드하고 클러스터를 새 구성 요소 및 업그레이드로 업데이트하는 것이 포함됩니다. 여기에는-

  • 마스터 구성 요소의 업그레이드
  • 노드 구성 요소의 업그레이드
  • 정책 업그레이드
  • 노선 업그레이드
  • 이미지 스트림 업그레이드

이러한 모든 업그레이드를 수행하려면 먼저 빠른 설치 프로그램이나 유틸리티를 제자리에 가져와야합니다. 이를 위해 다음 유틸리티를 업데이트해야합니다.

  • atomic-openshift-utils
  • atomic-openshift-excluder
  • atomic-openshift-docker-excluder
  • etcd 패키지

업그레이드를 시작하기 전에 마스터 머신에 etcd를 백업해야합니다. 다음 명령을 사용하여 수행 할 수 있습니다.

$ ETCD_DATA_DIR = /var/lib/origin/openshift.local.etcd
$ etcdctl backup \
   --data-dir $ETCD_DATA_DIR \
   --backup-dir $ETCD_DATA_DIR.bak.<date>

마스터 구성 요소의 업그레이드

OpenShift 마스터에서는 etcd 파일을 업데이트 한 다음 Docker로 이동하여 업그레이드를 시작합니다. 마지막으로 자동화 된 실행기를 실행하여 클러스터를 필요한 위치로 가져옵니다. 그러나 업그레이드를 시작하기 전에 먼저 각 마스터에서 atomic openshift 패키지를 활성화해야합니다. 다음 명령을 사용하여 수행 할 수 있습니다.

Step 1 − atomic-openshift 패키지 제거

$ atomic-openshift-excluder unexclude

Step 2 − 모든 마스터에서 etcd를 업그레이드합니다.

$ yum update etcd

Step 3 − etcd의 서비스를 다시 시작하고 성공적으로 시작되었는지 확인하십시오.

$ systemctl restart etcd
$ journalctl -r -u etcd

Step 4 − Docker 패키지를 업그레이드하십시오.

$ yum update docker

Step 5 − Docker 서비스를 다시 시작하고 올바르게 작동하는지 확인하십시오.

$ systemctl restart docker
$ journalctl -r -u docker

Step 6 − 완료되면 다음 명령으로 시스템을 재부팅하십시오.

$ systemctl reboot
$ journalctl -r -u docker

Step 7 − 마지막으로 atomic-executer를 실행하여 패키지를 yum excludes 목록으로 되돌립니다.

$ atomic-openshift-excluder exclude

정책 업그레이드에 대한 이러한 강제는 없으며 권장되는 경우에만 업그레이드하면되며 다음 명령으로 확인할 수 있습니다.

$ oadm policy reconcile-cluster-roles

대부분의 경우 정책 정의를 업데이트 할 필요가 없습니다.

노드 구성 요소의 업그레이드

마스터 업데이트가 완료되면 노드 업그레이드를 시작할 수 있습니다. 한 가지 명심해야 할 점은 클러스터에서 어떤 종류의 문제도 방지하기 위해 업그레이드 기간이 짧아야한다는 것입니다.

Step 1 − 업그레이드를 수행하려는 모든 노드에서 모든 원자 OpenShift 패키지를 제거합니다.

$ atomic-openshift-excluder unexclude

Step 2 − 다음으로 업그레이드 전에 노드 스케줄링을 비활성화합니다.

$ oadm manage-node <node name> --schedulable = false

Step 3 − 현재 호스트의 모든 노드를 다른 호스트로 복제합니다.

$ oadm drain <node name> --force --delete-local-data --ignore-daemonsets

Step 4 − 호스트에서 Docker 설정을 업그레이드합니다.

$ yum update docker

Step 5 − Docker 서비스를 다시 시작한 다음 Docker 서비스 노드를 시작합니다.

$systemctl restart docker
$ systemctl restart atomic-openshift-node

Step 6 − 둘 다 올바르게 시작되었는지 확인하십시오.

$ journalctl -r -u atomic-openshift-node

Step 7 − 업그레이드가 완료된 후 노드 머신을 재부팅합니다.

$ systemctl reboot
$ journalctl -r -u docker

Step 8 − 노드에서 스케줄링을 다시 활성화합니다.

$ oadm manage-node <node> --schedulable.

Step 9 − atomic-openshift 실행기를 실행하여 OpenShift 패키지를 다시 노드로 가져옵니다.

$ atomic-openshift-excluder exclude

Step 10 − 마지막으로 모든 노드를 사용할 수 있는지 확인합니다.

$ oc get nodes

NAME                 STATUS   AGE
master.example.com   Ready    12d
node1.example.com    Ready    12d
node2.example.com    Ready    12d