Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

2.11. 노드 수정

설치 중에 OpenShift Container Platform은 각 노드 그룹에 대해 openshift-node 프로젝트에 configmap을 생성합니다.

  • node-config-master
  • node-config-infra
  • node-config-compute
  • node-config-all-in-one
  • node-config-master-infra

기존 노드를 구성하려면 적절한 구성 맵을 편집합니다. 각 노드의 동기화 Pod 는 구성 맵의 변경 사항을 감시합니다. 설치하는 동안 동기화 Pod는 동기화 Daemonsets 를 사용하고 노드 구성 매개 변수가 있는 /etc/origin/node/node-config.yaml 파일이 각 노드에 추가됩니다. 동기화 Pod에서 구성 맵 변경 사항을 탐지하면 해당 노드 그룹의 모든 노드에서 node-config.yaml 을 업데이트하고 적절한 노드에서 atomic-openshift-node.service 를 다시 시작합니다.

$ oc get cm -n openshift-node

출력 예

NAME                       DATA      AGE
node-config-all-in-one     1         1d
node-config-compute        1         1d
node-config-infra          1         1d
node-config-master         1         1d
node-config-master-infra   1         1d

node-config-compute 그룹의 구성 맵 샘플

apiVersion: v1
authConfig:      1
  authenticationCacheSize: 1000
  authenticationCacheTTL: 5m
  authorizationCacheSize: 1000
  authorizationCacheTTL: 5m
dnsBindAddress: 127.0.0.1:53
dnsDomain: cluster.local
dnsIP: 0.0.0.0               2
dnsNameservers: null
dnsRecursiveResolvConf: /etc/origin/node/resolv.conf
dockerConfig:
  dockerShimRootDirectory: /var/lib/dockershim
  dockerShimSocket: /var/run/dockershim.sock
  execHandlerName: native
enableUnidling: true
imageConfig:
  format: registry.reg-aws.openshift.com/openshift3/ose-${component}:${version}
  latest: false
iptablesSyncPeriod: 30s
kind: NodeConfig
kubeletArguments: 3
  bootstrap-kubeconfig:
  - /etc/origin/node/bootstrap.kubeconfig
  cert-dir:
  - /etc/origin/node/certificates
  cloud-config:
  - /etc/origin/cloudprovider/aws.conf
  cloud-provider:
  - aws
  enable-controller-attach-detach:
  - 'true'
  feature-gates:
  - RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true
  node-labels:
  - node-role.kubernetes.io/compute=true
  pod-manifest-path:
  - /etc/origin/node/pods  4
  rotate-certificates:
  - 'true'
masterClientConnectionOverrides:
  acceptContentTypes: application/vnd.kubernetes.protobuf,application/json
  burst: 40
  contentType: application/vnd.kubernetes.protobuf
  qps: 20
masterKubeConfig: node.kubeconfig
networkConfig:   5
  mtu: 8951
  networkPluginName: redhat/openshift-ovs-subnet  6
servingInfo:                   7
  bindAddress: 0.0.0.0:10250
  bindNetwork: tcp4
  clientCA: client-ca.crt 8
volumeConfig:
  localQuota:
    perFSGroup: null
volumeDirectory: /var/lib/origin/openshift.local.volumes

1
인증 및 권한 부여 구성 옵션.
2
포드의 /etc/resolv.conf 앞에 추가되는 IP 주소.
3
Kubelet의 명령줄 인수 와 일치하는 Kubelet에 직접 전달되는 키 값 쌍입니다.
4
Pod 매니페스트 파일 또는 디렉터리의 경로입니다. 디렉터리에는 하나 이상의 매니페스트 파일이 포함되어야 합니다. OpenShift Container Platform은 매니페스트 파일을 사용하여 노드에 Pod를 생성합니다.
5
노드의 Pod 네트워크 설정입니다.
6
소프트웨어 정의 네트워크(SDN) 플러그인. ovs -subnet 플러그인의 경우 redhat/openshift-ovs -subnet, ovs - multitenant 플러그인의 경우 redhat/openshift-ovs -multitenant 또는 ovs - networkpolicy 플러그인의 경우 redhat/openshift-ovs -networkpolicy 로 설정합니다.
7
노드의 인증서 정보입니다.
8
선택 사항: PEM 인코딩 인증서 번들. 설정한 경우 요청 헤더에서 사용자 이름을 확인하기 전에 지정된 파일의 인증 기관에 대해 유효한 클라이언트 인증서를 제공하고 검증해야 합니다.
참고

/etc/origin/node/node-config.yaml 파일을 수동으로 수정하지 마십시오.

2.11.1. 노드 리소스 구성

노드 구성 맵에 kubelet 인수를 추가하여 노드 리소스를 구성할 수 있습니다.

  1. 구성 맵을 편집합니다.

    $ oc edit cm node-config-compute -n openshift-node
  2. kubeletArguments 섹션을 추가하고 옵션을 지정합니다.

    kubeletArguments:
      max-pods: 1
        - "40"
      resolv-conf: 2
        - "/etc/resolv.conf"
      image-gc-high-threshold: 3
        - "90"
      image-gc-low-threshold: 4
        - "80"
      kube-api-qps: 5
        - "20"
      kube-api-burst: 6
        - "40"
    1
    2
    컨테이너 DNS 확인 구성의 기반으로 사용되는 확인자 구성 파일입니다.
    3
    이미지 가비지 컬렉션이 항상 실행되는 디스크 사용량의 백분율입니다. 기본값: 90%
    4
    이미지 가비지 컬렉션이 실행되지 않는 디스크 사용량의 백분율입니다. 가비지에서 가장 낮은 디스크 사용량을 수집합니다. 기본값: 80%
    5
    Kubernetes API 서버와 통신하는 동안 사용할 초당 쿼리(QPS)입니다.
    6
    Kubernetes API 서버와 통신하는 동안 사용할 버스트입니다.

    사용 가능한 kubelet 옵션을 모두 보려면 다음을 수행합니다.

    $ hyperkube kubelet -h