지정된 디스크 사용량 비율로 이미지 캐시를 정리하도록 Amazon EKS 작업자 노드를 구성하려면 어떻게 해야 합니까?
Amazon Elastic Kubernetes Service(Amazon EKS) 작업자 노드를 사용하여 지정된 디스크 사용량 비율로 이미지 캐시를 정리하려고 합니다.
간략한 설명
Amazon EKS 작업자 노드를 사용하여 이미지 캐시를 정리하려면 다음 kubelet 가비지 수집(Kubernetes 웹사이트에서 제공) 인수를 사용합니다.
- --image-gc-high-threshold 인수는 이미지 가비지 수집을 시작하는 디스크 사용량 비율을 정의합니다. 기본값은 85%입니다.
- --image-gc-low-threshold 인수는 이미지 가비지 수집이 해제를 시도하는 디스크 사용량 비율을 정의합니다. 기본값은 80%입니다.
참고: 다음 해결 방법에서 kubelet 가비지 수집 인수는 디스크 사용량이 70%에 도달할 때 작업자 노드의 이미지 캐시를 정리하는 데 사용됩니다. --image-gc-high-threshold는 70%로 설정됩니다. --image-gc-low-threshold는 50%로 설정됩니다.
kubelet 가비지 수집 인수를 새 작업자 노드에 추가하려면 다음 섹션의 단계를 완료하세요.
- 새 작업자 노드에 대한 UserData를 사용하여 Amazon Machine Image(AMI)에 최적화된 Linux AMI에 있는 기본 kubelet-config 파일에 kubelet 가비지 수집 인수를 추가합니다.
- 새 kubelet 가비지 수집 인수가 노드의 configz 엔드포인트에 있는지 확인
kubelet 가비지 수집 인수를 기존 작업자 노드에 추가하려면 다음 섹션의 단계를 완료하세요.
- 기존 작업자 노드에 kubelet 가비지 수집 인수 추가
- 새 kubelet 가비지 수집 인수가 노드의 configz 엔드포인트에 있는지 확인
해결 방법
참고: 다음 해결 방법은 Amazon EKS 최적화 Linux AMI에 적용됩니다.
새 작업자 노드에 대한 UserData를 사용하여 AMI에 있는 기본 kubelet-config 파일에 kubelet 가비지 수집 인수를 추가합니다.
1. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다.
sed 명령을 사용하여 Amazon EKS 최적화 Linux AMI에 있는 kubelet-config.json 파일에 --image-gc-low-threshold 및 --image-gc-high-threshold를 추가합니다. sed 명령은 3단계: 인스턴스 세부 정보 구성의 UserData 섹션에 있습니다.
예를 들어, 다음과 같습니다.
#!/bin/bash set -o xtrace # Inject imageGCHighThresholdPercent value unless it has already been set. if ! grep -q imageGCHighThresholdPercent /etc/kubernetes/kubelet/kubelet-config.json; then sed -i '/"apiVersion*/a \ \ "imageGCHighThresholdPercent": 70,' /etc/kubernetes/kubelet/kubelet-config.json fi # Inject imageGCLowThresholdPercent value unless it has already been set. if ! grep -q imageGCLowThresholdPercent /etc/kubernetes/kubelet/kubelet-config.json; then sed -i '/"imageGCHigh*/a \ \ "imageGCLowThresholdPercent": 50,' /etc/kubernetes/kubelet/kubelet-config.json fi /etc/eks/bootstrap.sh your-cluster-name
참고: your-cluster-name을 해당하는 Amazon EKS 클러스터 이름으로 바꾸세요. 다른 kubelet 구성 파일을 사용하는 경우 sed 명령에서 파일 이름을 업데이트하세요.
2. 작업자 노드를 Amazon EKS 클러스터에 추가합니다.
3. 변경 사항을 확인하려면 새 kubelet 가비지 수집 인수가 노드의 configz 엔드포인트에 있는지 확인 섹션의 단계를 수행합니다.
기존 작업자 노드에 kubelet 가비지 수집 인수 추가
중요: 다음 단계를 수행하려면 SSH를 사용하여 기존 작업자 노드에 연결하고 sudo 액세스 권한이 있어야 합니다. Amazon EKS 클러스터의 모든 기존 작업자 노드에서 이 단계를 완료해야 합니다.
1. SSH를 사용하여 기존 작업자 노드에 연결합니다.
2. 작업자 노드에서 /etc/kubernetes/kubelet/kubelet-config.json 파일을 엽니다.
EKSCTL을 사용하여 작업자 노드를 시작한 경우 /etc/eksctl/kubelet.yaml을 엽니다. 다음 예시를 참조하세요.
sudo vi /etc/kubernetes/kubelet/kubelet-config.json #WORKER NODES LAUNCHED USING EKSCTL sudo vi /etc/eksctl/kubelet.yaml
3. 작업자 노드가 시작된 방식에 따라 kubelet 가비지 수집 인수를 kubelet-config.json 파일 또는 kubelet.yaml 파일에 추가합니다. 파일을 저장합니다. 다음 예시를 참조하세요.
{ "kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", . . . "imageGCHighThresholdPercent": 70, ==> Add the argument under the same alignment as the "kind" "imageGCLowThresholdPercent": 50, "maxPods": ... } #WORKER NODES LAUNCHED USING EKSCTL kind: KubeletConfiguration kubeReserved: cpu: 70m ephemeral-storage: 1Gi memory: 1843Mi serverTLSBootstrap: true imageGCHighThresholdPercent: 70 ==> Add the arguments under the alignment "Kind" in the yaml file imageGCLowThresholdPercent: 50
4. 작업자 노드에서 kubelet 서비스를 다시 시작하려면 다음 명령을 실행합니다.
sudo service kubelet restart
5. 변경 사항을 확인하려면 새 kubelet 가비지 수집 인수가 노드의 configz 엔드포인트에 있는지 확인 섹션의 단계를 수행합니다.
새 kubelet 가비지 수집 인수가 노드의 configz 엔드포인트에 있는지 확인
1. 작업자 노드의 이름을 가져오려면 다음 명령을 실행합니다.
kubectl get nodes
2. API 서버에 대한 연결을 열려면 다음 명령을 실행합니다.
kubectl proxy
3. 노드의 configz를 확인하려면 새 터미널을 열고 다음 명령을 실행합니다.
curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool
참고: node_name을 1단계에서 검색한 노드 목록의 노드 이름으로 바꿉니다. curl 및 python을 사용할 수 없는 경우 웹 브라우저에서 URL을 열 수 있습니다.
이전 명령이 kubeletconfig의 출력을 반환합니다. 이 출력에는 bootstrap.sh 파일의 설정이 포함됩니다. 다음 예시를 참조하세요.
{ "kubeletconfig": { . . "imageGCHighThresholdPercent": 70, <=== The new value is set to 70 as given in UserData "imageGCLowThresholdPercent": 50, <=== The new value is set to 50 as given in UserData . . } }

관련 콘텐츠
- 질문됨 4달 전lg...
- 질문됨 2달 전lg...
- 질문됨 2일 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 9달 전
- AWS 공식업데이트됨 8달 전