OpenShift-Docker 및 Kubernetes

OpenShift는 Docker 및 Kubernetes를 기반으로 구축되었습니다. 모든 컨테이너는 Kubernetes 오케스트레이션 기능을 사용하여 기본적으로 Linux 머신의 Kubernetes 서비스 인 Docker 클러스터 위에 빌드됩니다.

이 프로세스에서는 모든 노드를 제어하고 컨테이너를 모든 노드에 배포하는 Kubernetes 마스터를 빌드합니다. Kubernetes의 주요 기능은 다른 종류의 구성 파일을 사용하여 OpenShift 클러스터 및 배포 흐름을 제어하는 ​​것입니다. Kubernetes에서와 마찬가지로 OC 명령 줄 유틸리티를 사용하여 클러스터 노드에 컨테이너를 빌드하고 배포하는 것과 동일한 방식으로 kubctl을 사용합니다.

다음은 클러스터에서 다른 종류의 개체를 만드는 데 사용되는 여러 종류의 구성 파일입니다.

  • Images
  • POD
  • Service
  • 복제 컨트롤러
  • 복제 세트
  • Deployment

이미지

Kubernetes (Docker) 이미지는 컨테이너화 된 인프라의 핵심 구성 요소입니다. 현재 Kubernetes는Docker이미지. 포드의 각 컨테이너에는 내부에서 실행되는 Docker 이미지가 있습니다.

apiVersion: v1
kind: pod
metadata:
   name: Tesing_for_Image_pull -----------> 1
   spec:
   containers:
- name: neo4j-server ------------------------> 2
image: <Name of the Docker image>----------> 3
imagePullPolicy: Always ------------->4
command: [“echo”, “SUCCESS”] -------------------> 5

현물 상환 지불

포드는 Kubernetes 클러스터의 노드 내부에있는 컨테이너 및 저장소의 모음입니다. 내부에 여러 컨테이너가있는 포드를 만들 수 있습니다. 다음은 데이터베이스 컨테이너와 웹 인터페이스 컨테이너를 동일한 포드에 유지하는 예입니다.

apiVersion: v1
kind: Pod
metadata:
   name: Tomcat
spec:
   containers:
   - name: Tomcat
      image: tomcat: 8.0
      ports:
- containerPort: 7500
imagePullPolicy: Always

서비스

서비스는 논리적 포드 집합으로 정의 할 수 있습니다. 포드에 액세스 할 수있는 단일 IP 주소와 DNS 이름을 제공하는 포드 위에 추상화로 정의 할 수 있습니다. Service를 사용하면로드 밸런싱 구성을 매우 쉽게 관리 할 수 ​​있습니다. POD를 매우 쉽게 확장 할 수 있습니다.

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   ports:
   - port: 8080
      targetPort: 31999

복제 컨트롤러

복제 컨트롤러는 포드 수명주기를 관리하는 Kubernetes의 주요 기능 중 하나입니다. 특정 시점에 지정된 수의 포드 복제본이 실행되고 있는지 확인해야합니다.

apiVersion: v1
kind: ReplicationController
metadata:
   name: Tomcat-ReplicationController
spec:
   replicas: 3
   template:
   metadata:
      name: Tomcat-ReplicationController
   labels:
      app: App
      component: neo4j
   spec:
      containers:
      - name: Tomcat
      image: tomcat: 8.0
      ports:
      - containerPort: 7474

복제 세트

복제본 세트는 실행해야하는 포드 복제본 수를 보장합니다. 복제 컨트롤러의 교체로 간주 할 수 있습니다.

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   selector:
      matchLables:
      tier: Backend
   matchExpression:
      - { key: tier, operation: In, values: [Backend]}
   
   app: App
   component: neo4j
spec:
   containers:
   - name: Tomcat-
image: tomcat: 8.0
   ports:
containerPort: 7474

전개

배포가 업그레이드되고 더 높은 버전의 복제 컨트롤러가 있습니다. 복제 컨트롤러의 업그레이드 버전이기도 한 복제 세트의 배포를 관리합니다. 복제본 세트를 업데이트 할 수 있으며 이전 버전으로 롤백 할 수도 있습니다.

apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   template:
      metadata:
lables:
   app: Tomcat-ReplicaSet
   tier: Backend
spec:
   containers:
name: Tomcat-
   image: tomcat: 8.0
   ports:
   - containerPort: 7474

모든 구성 파일을 사용하여 각각의 Kubernetes 개체를 만들 수 있습니다.

$ Kubectl create –f <file name>.yaml

다음 명령을 사용하여 Kubernetes 개체의 세부 정보와 설명을 알 수 있습니다.

For POD

$ Kubectl get pod <pod name>
$ kubectl delete pod <pod name>
$ kubectl describe pod <pod name>

For Replication Controller

$ Kubectl get rc <rc name>
$ kubectl delete rc <rc name>
$ kubectl describe rc <rc name>

For Service

$ Kubectl get svc <svc name>
$ kubectl delete svc <svc name>
$ kubectl describe svc <svc name>

Docker 및 Kubernetes를 사용하는 방법에 대한 자세한 내용은 다음 링크 kubernetes를 사용하여 Kubernetes 자습서를 참조하십시오 .