my-service
라는 이름으로 서비스를 생성하면, my-service.default.svc.cluster.local
라는 DNS 이름으로 해당 서비스의 IP 주소를 찾을 수 있습니다.my-service
라는 이름으로 서비스를 생성하면, my-service
라는 이름의 Endpoint가 자동으로 생성되며, 이 Endpoint를 이용하여 로드 밸런싱할 Pod의 IP 주소와 포트 번호를 알 수 있습니다.apiVersion: extentions/v1beta1 kind: Ingress ... spec: backend: serviceName: ... servicePort: 8080
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: /app1 pathType: Prefix backend: service: name: app1-service port: name: http - path: /app2 pathType: Prefix backend: service: name: app2-service port: name: http
example.com
호스트 이름을 갖는 Ingress를 정의하고 있습니다. 이 Ingress는 /app1
과 /app2
경로를 갖는 HTTP 요청을 각각 app1-service
와 app2-service
라는 이름의 서비스로 전달합니다.pathType
필드를 이용하여 경로 타입을 지정할 수 있습니다. 이 예제에서는 Prefix
를 사용하여 경로가 /app1
또는 /app2
로 시작하는 모든 요청을 처리합니다.kubectl apply
명령어를 사용하여 YAML 파일을 클러스터에 적용하면 됩니다.... spec: containers: ... env: - name: ... value: ...
... spec: containers: - env: - name: ... valueFrom: configMapKeyRef: name: ... key: ...
... spec: containers: envFrom: - configMapKeyRef: name: ...
... spec: containers: ... volumes: - name: config-volume configMap: name: ...
HorizonPodAutoscaler
(HPA)를 사용해 파드의 수를 수평으로 스케일하는 것이다.apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler ... spec: minReplicas: 1 maxReplicas: 5 scaleTargetRef: apiVersion: extentions/v1beta1 kind: Deployment ...
VerticalPodAutoscaler
(VPA)가 이를 해결하는데 도움이 되며 실제 사용 피드백을 기반으로 자원을 조정 및 할당하는 과정을 자동화한다.apiVersion: poc.autoscaling.k8s.io/v1alpha1 kind: VerticalPodAutoscaler ... spec: selector: matchLables: app: ... updatePolicy: updateMode: "Off"
dat, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") if err != nil { panic(err) } fmt.Print(string(dat))
kubectl set env deployment/<DEPLOYMENT_NAME> FORCE_RESTART="$(date)"
kubectl rollout restart deployment <DEPLOYMENT_NAME>
kubectl delete namespace <namespace-name>
명령어를 사용하여 네임스페이스를 삭제하면 해당 네임스페이스 안에 있는 모든 자원들이 함께 삭제됩니다.kubectl delete namespace
명령어를 사용하기 전에, 해당 네임스페이스에 어떤 자원들이 있는지 확인하고, 필요한 경우 해당 자원들을 먼저 삭제해 주는 것이 좋습니다.kubectl delete namespace
명령어를 사용하여 Namespace를 삭제하면 해당 Namespace 내의 모든 리소스가 삭제되어야 합니다. 하지만 때로는 모든 리소스가 삭제되지 않는 경우가 있습니다.kubectl edit
명령어를 사용하여 리소스의 YAML 파일을 편집하고, Finalizers를 수동으로 삭제해야합니다.kubectl delete namespace
명령어를 사용하여 Namespace을 삭제하기 전에 해당 Namespace 내의 리소스를 확인하고, 문제가 발생하면 해당 문제를 해결해야합니다.node.kubernetes.io/instance-type
레이블은 노드 인스턴스 유형과 관련된 정보를 포함하고 있습니다. 이 레이블은 AWS, GCE, Azure 등의 클라우드 제공업체에서 자동으로 생성되며, 노드 유형과 연결된 정보를 포함합니다.kubernetes.io/hostname
레이블은 각 노드의 호스트 이름을 포함하고 있으며, 이 레이블이 없으면 Kubernetes에서 노드를 식별할 수 없습니다.