검색

1장. Pod 사양 수정

download PDF

1.1. 소개

Pod의 Kubernetes 개념은 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너이며 정의, 배포 또는 관리할 수 있는 최소 컴퓨팅 단위입니다.

Pod는 컨테이너에 대한 머신 인스턴스(실제 또는 가상)와 동일합니다. 각 Pod에는 자체 내부 IP 주소가 할당되므로 해당 Pod가 전체 포트 공간을 소유하고 Pod 내의 컨테이너는 로컬 스토리지와 네트워킹을 공유할 수 있습니다.

Pod에는 라이프사이클이 있습니다. 그런 다음 노드에서 실행되도록 할당된 다음 컨테이너가 종료되거나 다른 이유로 제거될 때까지 실행됩니다. Pod는 정책 및 종료 코드에 따라 종료 후 제거되거나 컨테이너 로그에 대한 액세스를 활성화하기 위해 유지될 수 있습니다.

Red Hat Ansible Automation Platform은 간단한 기본 Pod 사양을 제공하지만 기본 Pod 사양을 재정의하는 사용자 정의 YAML 또는 JSON 문서를 제공할 수 있습니다. 이 사용자 정의 문서에서는 유효한 Pod JSON 또는 YAML로 직렬화할 수 있는 ImagePullSecrets 와 같은 사용자 정의 필드를 사용합니다.

전체 옵션 목록은 Openshift Online 설명서에서 확인할 수 있습니다.

장기 실행 서비스를 제공하는 Pod의 예.

이 예제에서는 Pod의 많은 기능을 보여줍니다. 대부분 다른 주제에서 설명하므로 여기에서 간단히 설명합니다.

apiVersion: v1
kind: Pod
metadata:
  annotations: { ... }                      1
  labels:
    deployment: docker-registry-1
    deploymentconfig: docker-registry
    docker-registry: default
  generateName: docker-registry-1-          2
spec:
  containers:                               3
  - env:         	            	  4
    - name: OPENSHIFT_CA_DATA
      value: ...
    - name: OPENSHIFT_CERT_DATA
      value: ...
    - name: OPENSHIFT_INSECURE
      value: "false"
    - name: OPENSHIFT_KEY_DATA
      value: ...
    - name: OPENSHIFT_MASTER
      value: https://master.example.com:8443
    image: openshift/origin-docker-registry:v0.6.2 5
    imagePullPolicy: IfNotPresent
    name: registry
    ports:   		                          6
    - containerPort: 5000
      protocol: TCP
    resources: {}                                    7
    securityContext: { ... }    		 8
    volumeMounts:                       	   9
    - mountPath: /registry
      name: registry-storage
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-br6yz
      readOnly: true
  dnsPolicy: ClusterFirst
  imagePullSecrets:                                  10
  - name: default-dockercfg-at06w
  restartPolicy: Always  			     11
  serviceAccount: default			    12
  volumes:        	                            13
  - emptyDir: {}
    name: registry-storage
  - name: default-token-br6yz
    secret:
      secretName: default-token-br6yz
레이블설명

주석:

Pod는 단일 작업에서 Pod 그룹을 선택하고 관리하는 데 사용할 수 있는 라벨을 하나 이상 사용하여 "태그를 지정"할 수 있습니다. 레이블은 메타데이터 해시의 key:value 형식으로 저장됩니다. 이 예제의 하나의 레이블은 docker-registry=default 입니다.

generateName:

Pod에는 해당 네임스페이스 내에 고유한 이름이 있어야 합니다. Pod 정의는 generateName 특성을 사용하여 이름 기반을 지정하고 임의의 문자를 자동으로 추가하여 고유한 이름을 생성할 수 있습니다.

컨테이너:

컨테이너 는 컨테이너 정의의 배열을 지정합니다. 이 경우(대부분의 경우와 마찬가지로) 하나의 컨테이너만 정의합니다.

env:

환경 변수는 각 컨테이너에 필요한 값을 전달합니다.

이미지:

Pod의 각 컨테이너는 자체 Docker 형식의 컨테이너 이미지에서 인스턴스화됩니다.

포트:

컨테이너는 Pod의 IP에서 사용할 수 있는 포트에 바인딩할 수 있습니다.

resources:

Pod를 지정할 때 컨테이너에 필요한 각 리소스의 양을 선택적으로 설명할 수 있습니다. 지정할 가장 일반적인 리소스는 CPU 및 메모리(RAM)입니다. 기타 리소스를 사용할 수 있습니다.

securityContext:

OpenShift Online은 권한이 있는 컨테이너로 실행할 수 있는지, 선택한 사용자로 실행할 수 있는지 여부를 지정하는 보안 컨텍스트를 정의합니다. 기본 컨텍스트는 매우 제한적이지만 관리자는 필요에 따라 변경할 수 있습니다.

volumeMounts:

컨테이너는 컨테이너 내에서 외부 스토리지 볼륨을 마운트해야 하는 위치를 지정합니다. 이 경우 레지스트리 데이터를 저장하기 위한 볼륨이 있으며, 하나는 OpenShift Online API에 대해 요청하는 데 필요한 자격 증명에 대한 액세스용입니다.

ImagePullSecrets

Pod에는 일부 레지스트리에서 가져와야 하는 하나 이상의 컨테이너가 포함될 수 있습니다. 컨테이너가 인증이 필요한 레지스트리에서 제공하는 경우 네임스페이스에 ImagePullSecrets 목록을 참조하는 ImagePullSecrets 목록을 제공할 수 있습니다. 이러한 지정을 통해 Red Hat OpenShift Container Platform은 이미지를 가져올 때 컨테이너 레지스트리로 인증할 수 있습니다. 자세한 내용은 Kubernetes 문서의 Pod 및 컨테이너에 대한 리소스 관리를 참조하십시오.

restartPolicy:

Pod는 가능한 값 Always,OnFailureNever 를 사용하여 정책을 다시 시작합니다. 기본값은 Always 입니다.

serviceAccount:

OpenShift Online API에 대해 요청하는 Pod는 요청 시 Pod에서 인증해야 하는 서비스 계정 사용자를 지정하는 serviceAccount 필드가 있는 일반적인 패턴입니다. 따라서 사용자 정의 인프라 구성 요소에 대한 액세스 권한을 세부적으로 제어할 수 있습니다.

volumes:

Pod는 사용할 컨테이너에서 사용할 수 있는 스토리지 볼륨을 정의합니다. 이 경우 레지스트리 스토리지의 임시 볼륨과 서비스 계정 인증 정보가 포함된 시크릿 볼륨을 제공합니다.

자동화 컨트롤러를 사용하고 자동화 컨트롤러 UI에서 Pod 사양을 편집하여 Kubernetes 기반 클러스터에서 작업을 실행하는 데 사용되는 Pod를 변경할 수 있습니다. 작업을 실행하는 Pod를 생성하는 데 사용되는 Pod 사양은 YAML 형식입니다. Pod 사양 편집에 대한 자세한 내용은 Pod 사양 사용자 지정을 참조하십시오.

1.1.1. Pod 사양 사용자 정의

다음 절차를 사용하여 Pod를 사용자 지정할 수 있습니다.

절차

  1. 자동화 컨트롤러 UI에서 관리 인스턴스 그룹으로이동합니다.
  2. Pod 사양 사용자 지정을 확인합니다.
  3. Pod Spec Override 필드에서 토글을 사용하여 Pod Spec Override 필드를 활성화하고 확장하여 네임스페이스를 지정합니다.
  4. 저장을 클릭합니다.
  5. 선택 사항: 추가 사용자 지정을 제공하려면 Expand 를 클릭하여 전체 사용자 지정 창을 확인합니다.

작업 시작 시 사용되는 이미지는 작업과 연결된 실행 환경에 따라 결정됩니다. 컨테이너 레지스트리 인증 정보가 실행 환경과 연결된 경우 자동화 컨트롤러는 ImagePullSecret 을 사용하여 이미지를 가져옵니다. 서비스 계정에 시크릿을 관리할 수 있는 권한을 부여하지 않으려면 ImagePullSecret 을 사전 생성하여 Pod 사양에 지정하고, 사용된 실행 환경에서 인증 정보를 생략해야 합니다.

1.1.2. Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 활성화

컨테이너 그룹에서 인증 정보가 필요한 보안 레지스트리의 컨테이너를 사용하는 경우, 컨테이너 레지스트리 인증 정보를 작업 템플릿에 할당된 실행 환경과 연결할 수 있습니다. 자동화 컨트롤러는 이를 사용하여 컨테이너 그룹 작업이 실행되는 OpenShift Container Platform 네임스페이스에서 ImagePullSecret 을 생성하고 작업이 완료된 후 정리합니다.

또는 컨테이너 그룹 네임스페이스에 ImagePullSecret 이 이미 있는 경우 ContainerGroup 의 사용자 정의 Pod 사양에 ImagePullSecret 을 지정할 수 있습니다.

컨테이너 그룹에서 실행 중인 작업에서 사용하는 이미지는 항상 작업과 연결된 실행 환경으로 재정의됩니다.

사전 생성된 ImagePullSecrets (Advanced) 사용

이 워크플로를 사용하고 ImagePullSecret 을 사전 생성하려는 경우 이전에 보안 컨테이너 레지스트리에 액세스한 시스템의 로컬 .dockercfg 파일에서 생성하는 데 필요한 정보를 소싱할 수 있습니다.

절차

최신 Docker 클라이언트의 .dockercfg 파일 또는 $HOME/.docker/config.json 은 이전에 보안 또는 비보안 레지스트리에 로그인한 경우 정보를 저장하는 Docker 인증 정보 파일입니다.

  1. 보안 레지스트리에 대한 .dockercfg 파일이 이미 있는 경우 다음 명령을 실행하여 해당 파일에서 보안을 생성할 수 있습니다.

    $ oc create secret generic <pull_secret_name> \
    --from-file=.dockercfg=<path/to/.dockercfg> \
    --type=kubernetes.io/dockercfg
  2. 또는 $HOME/.docker/config.json 파일이 있는 경우:

    $ oc create secret generic <pull_secret_name> \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson
  3. 보안 레지스트리에 대한 Docker 인증 정보 파일이 아직 없는 경우 다음 명령을 실행하여 보안을 생성할 수 있습니다.

    $ oc create secret docker-registry <pull_secret_name> \
    --docker-server=<registry_server> \
    --docker-username=<user_name> \
    --docker-password=<password> \
    --docker-email=<email>
  4. Pod의 이미지 가져오기에 시크릿을 사용하려면 서비스 계정에 이 시크릿을 추가해야 합니다. 이 예제의 서비스 계정 이름은 Pod에서 사용하는 서비스 계정 이름과 일치해야 합니다. 기본값은 기본 서비스 계정입니다.

    $ oc secrets link default <pull_secret_name> --for=pull
  5. 선택 사항: 빌드 이미지를 푸시하고 가져오는 데 보안을 사용하려면 Pod 내에서 보안을 마운트할 수 있어야 합니다. 다음을 실행하여 이 작업을 수행할 수 있습니다.

    $ oc secrets link builder <pull_secret_name>
  6. 선택 사항: 빌드의 경우 빌드 구성 내에서 가져오기 보안으로 보안을 참조해야 합니다.

컨테이너 그룹이 성공적으로 생성되면 새로 생성된 컨테이너 그룹의 세부 정보 탭이 유지됩니다. 이를 통해 컨테이너 그룹 정보를 검토하고 편집할 수 있습니다. 인스턴스 그룹 링크에서 편집 아이콘을 클릭하면 열리는 메뉴와 같습니다. 인스턴스를 편집하고 이 인스턴스 그룹과 연결된 작업을 검토할 수도 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.