๊ฐ์
ํ๋ก์ธ์ค ID(PID) ํ๋๋ ๋ ธ๋ ์์ ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๊ณผ๋ํ ํ๋ก์ธ์ค ์์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ ธ๋์ ํฌ๋์ ์ ์ฉ๋๋ Kubernetes ๋ฆฌ์์ค ์ ์ฝ์กฐ๊ฑด์ ๋๋ค. Apigee Hybrid๋ ํ๋ก์ธ์ค ID ํ๋๋ฅผ ์ค์ ํ๋ Kubernetes ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ด ๋ฌธ์์์๋ ํน์ ํ๋ซํผ์ Apigee ์๋น์ค ๊ฐ์ ๋ํ ๊ถ์ฅ์ฌํญ๊ณผ ํจ๊ป ํ๋๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
Apigee Hybrid ์ฌ์ฉ์๊ฐ ์์ฒด ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ Kubernetes์์ PID ํ๋๋ฅผ ์ค์ ํ๋ฉด ์์คํ ์์ ์ฑ, ๋ณด์, ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ Kubernetes ๊ถ์ฅ์ฌํญ๊ณผ๋ ์ผ์นํฉ๋๋ค.
ํ๋ก์ธ์ค ID ํ๋ ์ ์
ํ๋ก์ธ์ค ID ํ๋์๋ ๋ ธ๋ PID ํ๋์ ํฌ๋ PID ํ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ ธ๋ PID ํ๋์๋ kube-reserved PID ๋ฐ system-reserved PID๊ฐ ํฌํจ๋ฉ๋๋ค. ํ ๋น ๊ฐ๋ฅํ PID ์ด๊ฐ์๋ ์ปค๋ ์ต๋๊ฐ์์ kube-reserved PID, system-reserved PID, ์ ๊ฑฐ ๊ธฐ์ค์ PID๋ฅผ ๋บ ๊ฐ์ ๋๋ค.
์ปค๋ ์ต๋ ID ํ๋ |
|
|
|
= ํ ๋น ๊ฐ๋ฅ |
- ์ปค๋ ์ต๋ ID ํ๋: ์ด์์ฒด์ ์ ์ปค๋ ์ค์ ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. Apigee Hybrid๋ Linux ์ปค๋์์๋ง ์คํ๋๋ฏ๋ก ์ด ๊ฐ์ด๋์์๋ Kubernetes ๋ ธ๋์ ์ ์ฉ๋๋ Linux ๊ธฐ๋ฐ ํ๋๋ฅผ ์ค๋ช ํฉ๋๋ค. Linux ์ปค๋์ ์ต๋ ํ๋ก์ธ์ค ID ํ๋ ์๋ 4194304์ ๋๋ค.
- kube-reserved ๋ฐ system-reserved: Kubernetes ๋๋ OS ์์คํ ๋ฐ๋ชฌ์ ๋ฆฌ์์ค ์์ฝ์ฉ์ ๋๋ค.
- ์ ๊ฑฐ ๊ธฐ์ค์ : ๋ ธ๋์ ์๋ ฅ์ด ๊ฐํด์ง๊ณ ์์์ ๋ํ๋ด๋ ํ๋์ ๋๋ค. ๊ธฐ์ค์ ์ ์ถฉ์กฑํ๋ฉด ๋ ธ๋๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ PID ๊ธฐ๋ฐ ์ ๊ฑฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
- ํ ๋น ๊ฐ๋ฅ: ์ฌ์ฉ ๊ฐ๋ฅํ PID ์์ ๋๋ค. ์์ธํ ๋ด์ฉ์ Kubernetes: ๋ ธ๋ ํ ๋น ๊ฐ๋ฅ์ ์ฐธ์กฐํ์ธ์. ๋ ธ๋ PID ํ๋ ์ค์ ์ผ๋ก kube-reserved ๋ฐ system-reserved๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
ํฌ๋ PID ํ๋๋ฅผ ๋ ธ๋์ ๊ตฌ์ฑํ๊ณ ๋ ธ๋ ๋ด ๋ชจ๋ ํฌ๋ ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ค ID ํ๋ ๊ด๋ฆฌ ์ค๋น
์ด ์ ์ฐจ์์๋ ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
export PROJECT_ID=MY_PROJECT_IDexport CLUSTER_NAME=MY_CLUSTER_NAME
export LOCATION=MY_CLUSTER_LOCATION
export APIGEE_NAMESPACE=MY_APIGEE_NAMESPACE # Default: apigee
์ก์ธ์ค ํ์ธ
ํ๋ก์ธ์ค ID ํ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์์ ํ ์ ์๋ ์ก์ธ์ค ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ GKE์ ์ค์นํ๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋ฉ๋๋ค. ๋ค๋ฅธ ํ๋ซํผ์ ๊ฒฝ์ฐ ํ๋ซํผ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
-
IAM ์ ์ฑ
์ roles/container.clusterAdmin์ด ์๋์ง ํ์ธํฉ๋๋ค.
gcloud projects get-iam-policy ${PROJECT_ID} \ --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:your_account_email"
- ์ก์ธ์ค ๊ถํ์ด ์์ผ๋ฉด ์ญํ ์ ๊ณ์ ์ ์ถ๊ฐํฉ๋๋ค.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member user:your_account_email \ --role roles/container.clusterAdmin
๊ธฐ์กด PID ํ๋ ํ์ธ
์ ํ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ ธ๋์ ๊ธฐ์กด PID ํ๋๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
-
ํด๋ฌ์คํฐ์์ ๋
ธ๋๋ฅผ ๊ฐ์ ธ์ ๊ฐ์ ํ์ธํฉ๋๋ค.
apigee-data
๋ฐapigee-runtime
๋ ธ๋ ํ ๋ชจ๋์์ ๋ ธ๋๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.kubectl get nodes -n ${APIGEE_NAMESPACE}
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํ๊ฒ ํ์๋ฉ๋๋ค.
NAME STATUS ROLES AGE VERSION gke-my-hybrid-apigee-data-0a1b2c3d-efgh Ready
2d8h v1.31.5-gke.1169000 gke-my-hybrid-apigee-runtime-1b2c3d4e-fghi Ready 2d8h v1.31.5-gke.1169000 -
์ด์ ๋จ๊ณ ์ถ๋ ฅ์์ ๋
ธ๋ ์ด๋ฆ์ ๋ด๋ณด๋
๋๋ค. ๋จผ์
apigee-data
๋ ธ๋์ ๋ค์ ๋จ๊ณ๋ฅผ ์คํํ๊ณapigee-runtime
๋ ธ๋์ ๋ค์ ์คํํฉ๋๋ค.์ฝ๋
export NODE_NAME=MY_NODE_NAME
์
export NODE_NAME="gke-my-hybrid-apigee-data-0a1b2c3d-efgh"
- ๋
ธ๋ PID ํ๋๋ฅผ ํ์ธํฉ๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ๋ ๊ฐ์ ํ์ธํฉ๋๋ค. ๊ฐ์ด null์ด๋ฉด ๊ฐ์ด ๊ตฌ์ฑ๋์ง ์์ต๋๋ค.
kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig.kubeReserved'
kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig.systemReserved'
kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig.evictionHard'
- ํฌ๋ PID ํ๋๋ฅผ ํ์ธํฉ๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ํฌ๋ PID ํ๋๋ฅผ ํ์ธํฉ๋๋ค. ๋ฐํ๋ ๊ฐ์ด
-1
์ด๊ฑฐ๋ ๋น์ด ์์ผ๋ฉด ํ๋๊ฐ ์ค์ ๋์ง ์์ต๋๋ค.kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig.podPidsLimit'
ํ๋ก์ธ์ค ID ํ๋ ๊ด๋ฆฌ
๋ ธ๋ PID ํ๋ ๊ด๋ฆฌ
GKE์ ์ค์นํ๋ ๊ฒฝ์ฐ Kubernetes ๋ ธ๋์ ์ธํ๋ผ ๋ฆฌ์์ค๋ ๋ด๋ถ์ ์ผ๋ก ๊ด๋ฆฌ๋๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ์ด ๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํ์ง ์์๋ ๋ฉ๋๋ค. Google Kubernetes Engine ๋ฌธ์์ ๋ ธ๋ ํ ๋น ๊ฐ๋ฅ ๋ฆฌ์์ค์์ ํ์ฌ ์ฉ๋๊ณผ ํ ๋น ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
GKE ์ด์ธ์ ํ๋ซํผ์ ๊ฒฝ์ฐ ํ๋ซํผ์ ํด๋นํ๋ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์. ํด๋ฌ์คํฐ/๋ ธ๋๊ฐ ์์ ๊ด๋ฆฌํ์ด ์๋ ์ฌ์ฉ์ ๊ด๋ฆฌํ์ธ ๊ฒฝ์ฐ Kubelet์ผ๋ก kube-reserved PID ํ๋์ system-reserved PID ํ๋๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Kubernetes ๋ฌธ์์ ๋ ธ๋ PID ํ๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋๊ตฌ
์ด ์ ์ฐจ์์๋ Kubelet์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค ID ํ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. Kubelet์ ํฌ๋์ ์ปจํ ์ด๋์์ ์คํ๋๋ ์์ด์ ํธ๋ก, ํฌ๋ ์ฌ์์ ๋ฐ๋ผ ์คํ๋๋๋ก ํฉ๋๋ค. Kubelet์ ์ค์นํด์ผ ํ๋ ๊ฒฝ์ฐ Kubernetes ๋ฌธ์ kubeadm, kubelet, kubectl ์ค์น์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ์ฐจ
-
Kubelet ๊ตฌ์ฑ ํ์ผ
kubelet-config.yaml
์ ๋ง๋ญ๋๋ค.apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration kubeReserved: pid: PID_VALUE # Example: 1000
๊ตฌ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์์ Kube Reserved๋ฅผ ์ฐธ์กฐํ์ธ์.
-
Kubelet ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.
kubelet --config PATH_TO_KUBELET_CONFIG_YAML
ํฌ๋ PID ํ๋ ๊ด๋ฆฌ
ํ๋ ์ ํ
PID ํ๋๊ฐ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ๋๋ฉด ํฌ๋๊ฐ ์์๋์ง ์์ ์ ์์ต๋๋ค. ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด ๋ฆฌ์์ค ์ด์ ๋์์ ๊ฐ์งํ์ง ๋ชปํ ์ ์์ต๋๋ค. ์ ์ ํ ํ๋๋ฅผ ์ ํํ ๋๋ ๋ ธ๋์ ์ด์ ๋์๊ณผ ์๋น์ค๋ณ ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
GKE์๋ ๊ฐ์ ํ์ํ ๋ฒ์๊ฐ ์์ต๋๋ค([1024, 4194304]). GKE ํ๋ซํผ์ Google Cloud console ์ธก์ ํญ๋ชฉ ํ์๊ธฐ์์ Kubernetes ์๋น์ค ๊ณ์ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. Kubernetes ๋ ธ๋ - PID ์ฌ์ฉ๋ ์ธก์ ํญ๋ชฉ์ ์ ํํ๊ณ ํํฐ๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด ์ธก์ ํญ๋ชฉ์ ์ต๊ทผ ํ๋ก์ธ์ค ID ์ฌ์ฉ๋์ ๋ณด์ฌ์ฃผ๋ฉฐ PID ํ๋๋ฅผ ์ ํํ ๋ ์ฐธ์กฐ๋ ์ ์์ต๋๋ค.
GKE ์ด์ธ์ ํ๋ซํผ์์๋ ๋ค๋ฅธ ๋ชจ๋ํฐ๋ง ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ธก์ ํญ๋ชฉ์ ํ์ธํ๋ ค๋ฉด ํด๋น ํ๋ซํผ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Apigee ํฌ๋์ ํ๋ก์ธ์ค ID ์๊ตฌ์ฌํญ
Apigee Hybrid๋ apigee-data ๋ฐ apigee-runtime ๋ฑ ๋ ธ๋ ํ 2๊ฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ถ Apigee ๊ตฌ์ฑ์์๋ ๋ ๋ ธ๋ ํ ๋ชจ๋์ ๋ฐฐํฌ๋๋ฏ๋ก ํฌ๋ PID ํ๋๋ ๋ ๋ ธ๋ ํ์์ ๊ฐ์์ผ ํฉ๋๋ค. ํฌ๋ PID ํ๋๋ ๋ชจ๋ Apigee ํฌ๋์์ ํ์ํ ์ต๋ PID ์๋ณด๋ค ๋์์ผ ํฉ๋๋ค. ํ์ํ Apigee ํฌ๋ PID ํ๋๋ 1,000์ด๋ฉฐ GKE ํ๋ซํผ์ ์ต์ ์๊ตฌ ์๋ณด๋ค ๋ฎ์ต๋๋ค.
๊ถ์ฅ ํฌ๋ PID ํ๋
์ผ๋ถ ํ๋ซํผ์์๋ ํฌ๋ PID ํ๋ ์์ ์ต์๊ฐ ์๊ตฌ์ฌํญ์ ์ ์ฉํ๋ฉฐ ์ด ๊ฒฝ์ฐ ์ต์๊ฐ ์๊ตฌ์ฌํญ์ด ์ ํ๋ฉ๋๋ค.
ํ๋ซํผ | ์ต์ ํฌ๋ PID ํ๋ |
---|---|
Google Cloud ๊ธฐ๋ฐ GKE | 1024 |
GKE on AWS | 1024 |
Azure์ฉ GKE | 1024 |
VMware์ฉ Google Distributed Cloud(์ํํธ์จ์ด ์ ์ฉ) | 1024 |
๋ฒ ์ด๋ฉํ์ฉ Google Distributed Cloud(์ํํธ์จ์ด ์ ์ฉ) | 1024 |
EKS | 1000 |
AKS | 1000 |
OpenShift | 1000 |
Rancher Kubernetes Engine(RKE) | 1000 |
์ ์ฐจ
ํฌ๋ PID ํ๋๋ฅผ ๊ด๋ฆฌํ๋ ์ ์ฐจ๋ GKE ํ๋ซํผ๊ณผ GKE ์ด์ธ ํ๋ซํผ์์ ๋ค๋ฆ ๋๋ค.
GKE ํ๋ซํผ
PID ํ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํ๋ GKE ํ๋ซํผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Google Cloud์ฉ GKE: gcloud container node-pools ์ฐธ์กฐ
- AWS์ฉ GKE: gcloud container aws node-pools ์ฐธ์กฐ
- Azure์ฉ GKE: gcloud container azure node-pools ์ฐธ์กฐ
- VMware์ฉ Google Distributed Cloud(์ํํธ์จ์ด ์ ์ฉ): gcloud container vmware node-pools ์ฐธ์กฐ
- ๋ฒ ์ด๋ฉํ์ฉ Google Distributed Cloud(์ํํธ์จ์ด ์ ์ฉ): gcloud container bare-metal node-pools ์ฐธ์กฐ
ํฌ๋ PID ํ๋๋ ๋ ธ๋ ์์คํ ๊ตฌ์ฑ์ ์ํด ์ ์ด๋ฉ๋๋ค. GKE์๋ ๊ฐ์ ํ์ํ ๋ฒ์๊ฐ ์์ต๋๋ค([1024, 4194304]). ์์ธํ ๋ด์ฉ์ NodeKubeletConfig๋ฅผ ์ฐธ์กฐํ์ธ์.
-
๋ค์ ์ฝํ
์ธ ๋ก ์ง์ ๋ ํฌ๋ PID ํ๋๋ก ๋
ธ๋ ์์คํ
๊ตฌ์ฑ
node-config.yaml
์ ๋ง๋ญ๋๋ค.kubeletConfig: podPidsLimit: POD_PID_VALUE # Example: 1024
-
apigee
apigee-data
๋ฐapigee-runtime
๋ ธ๋ ํ ๋ชจ๋์ ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค. ๊ตฌ์ฑ์ ์ ์ฉํ๋ฉด ๋ ธ๋๊ฐ ๋ฌด์ค๋จ ๋ ธ๋ ์ ๊ทธ๋ ์ด๋ ์ ๋ต ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์๋ฅผ ์์ํฉ๋๋ค.gcloud container OPTIONAL_HOST_PLATFORM node-pools update NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --region CLUSTER_LOCATION \ --system-config-from-file=node-config.yaml \ --project PROJECT_ID
GKE ์ด์ธ ํ๋ซํผ
GKE ์ด์ธ ํ๋ซํผ์ ๊ฒฝ์ฐ ํฌ๋ PID ํ๋๋ Kubelet์ ์ํด ์ ์ด๋ฉ๋๋ค. ํ๋๋ Kubelet ๊ตฌ์ฑ ํ์ผ์ podPidsLimit
ํ๋์์ ์ค์ ๋ฉ๋๋ค.
-
๋ค์ ์ฝํ
์ธ ๋ก Kubelet ๊ตฌ์ฑ ํ์ผ
kubelet-config.yaml
์ ๋ง๋ญ๋๋ค.apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration podPidsLimit: POD_PID_VALUE # Example: 1024
-
๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค. podPidsLimit๋ฅผ ์ค์ ํ๋ ค๋ฉด ์ํฅ์ ๋ฐ๋ ๋
ธ๋๋ฅผ ์ฌ๋ถํ
ํด์ผ ํ๋ฉฐ ์ด๋ก ์ธํด ๋ค์ดํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
kubelet --config PATH_TO_KUBELET_CONFIG_YAML
- ๊ตฌ์ฑ์ ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ธฐ์กด PID ํ๋ ํ์ธ์ ์ฐธ์กฐํ์ธ์.
ํฌ๋ PID ํ๋ ๊ตฌ์ฑ ๋ช ๋ น์ด์ ๋๊ตฌ ๊ถ์ฅ์ฌํญ์ ํ๋ซํผ๋ง๋ค ๋ค๋ฆ ๋๋ค. ์์ธํ ๋ช ๋ น์ด๋ ๊ฐ ํ๋ซํผ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ค์์ ์ฐธ์กฐ์ฉ GKE ์ด์ธ ํ๋ซํผ์ ๋ฌธ์ ๋งํฌ์ ๋๋ค. ๋ค์ ์ฌํญ์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
ํ๋ซํผ | ๋ฌธ์ |
---|---|
EKS | ์์ ํ ํ๋ฆฟ์ผ๋ก ๊ด๋ฆฌํ ๋ ธ๋ ๋ง์ถค์ค์ ํ๊ธฐ |
AKS | Azure Kubernetes Service(AKS) ๋ ธ๋ ํ์ ๋ ธ๋ ๊ตฌ์ฑ ๋ง์ถค์ค์ |
OpenShift | AWS ํฌ๋์ Red Hat OpenShift ์๋น์ค์ ๋ ๋์ ํ๋ก์ธ์ค ID ํ๋ ์ค์ ์ํ |
Rancher Kubernetes Engine(RKE) | kubectl ๋ฐ kubeconfig๋ก ํด๋ฌ์คํฐ์ ์ก์ธ์ค |
ํ๋ก์ธ์ค ID ํ๋ ๋ฌธ์ ํด๊ฒฐ
FailedScheduling
์ค๋ฅ๊ฐ ํ์๋๊ณ Pending
์ํ๋ก ๋ฉ์ถ ํฌ๋
๋
ธ๋ ๋๋ ํฌ๋ PID ํ๋๋ก ์ธํด ํฌ๋๊ฐ ์์๋์ง ์๊ฑฐ๋ ํฌ๋ ์์์ด ์ ํ๋๋ฉด ํฌ๋๊ฐ Pending
์ํ๋ก ๋ฉ์ถ๊ณ FailedScheduling
์ค๋ฅ๊ฐ ํ์๋๋ฉด์ ์คํจํฉ๋๋ค.
-
๋
ธ๋ ์ด์ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -n ${APIGEE_NAMESPACE} ${POD_NAME} -o wide
-
PIDPressure
์กฐ๊ฑด์ด ์๋์ง ํ์ธํฉ๋๋ค.kubectl describe node -n apigee ${NODE_NAME} | grep PIDPressure
-
๋๋ ํด๋น ํฌ๋์
ApigeeDeployment
๋ฅผ ํ์ธํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ ํฌ๋์ ๋์ผํ ํ๋ฆฌํฝ์ค๊ฐ ์๋ ๊ฒฐ๊ณผ์์ApigeeDeployment
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get ApigeeDeployment -n ${APIGEE_NAMESPACE}
-
์ต๊ทผ
Events
์ PID ๊ด๋ จ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.kubectl describe ApigeeDeployment -n ${APIGEE_NAMESPACE} ${APIGEE_DEPLOYMENT_NAME}
- ์์ธ์ด PID ํ๋๋ก ํ์ธ๋๋ฉด ๋ ธ๋ PID ํ๋ ๊ด๋ฆฌ ๋จ๊ณ๋ฅผ ์ํํ์ฌ PID ํ๋๋ฅผ ๋ ๋์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
์๋ชป๋ podPidsLimit
GKE ํ๋๋ฅผ ์ค์ ํ ๋ podPidsLimit
๊ฐ ํ๋๋ฅผ ์ด๊ณผํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
ERROR: (gcloud.container.node-pools.update) ResponseError: code=400, message=Invalid podPidsLimit: value must be 1024 <= podPidsLimit <= 4194304.
podPidsLimit ๊ฐ์ ํ์ ๋ฒ์ ๋ด๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.