2023-10-05 13:25:21
728x90

Scheduling: Kubernetes에서 node의 상황에 따라 어떤 방식으로 Pod를 배치할 것인지를 결정

1). Kubernetes는 대부분 Multinode로 운영된다.

2). 여러개의 node를 하나의 인스턴스로 사용하는 효과를 준다.

3). 사용자의 입장에서는 하나의 인스턴스를 사용하지만 Kubernetes 여러대의 node를 관리함으로 pod 를 어떤 node에 배치해야 할지를 결정해야 한다.

 

Labels: Cloud에서 Tag는 자원을 역활 또는 기능별로 그룹화하기 위해서 많이 사용된다.

WEB+WAS+DB를 하나의 Tag로 그룹화 할 수도 있고 WEB or WAS or DB 등의 기능 서버별로 Tag를 사용하여 그룹화 할 수 있다.

 

kubernetes scheduling


vi nginxnodename.yml
apiVersion: v1
kind: Pod
metadata:
  name: app-nginx1
spec:
  containers:
  - name: nginx1
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
  nodeName: node1 어떤 node에 실행할지 지정
kubectl apply -f nginxnodename.yml --dry-run=server 만들어지진 않고 테스트만 함
k apply -f nginxnodename.yml --dry-run=server -o yaml > test.yml -o 옵션으로 yaml파일로 저장 > 저장할 파일이름
k edit pods app-nginx 실행되고있는 app-nginx pod의 설정 변경하기


-----------------------------------------------------------------------------------------------------------
labels

kubectl label node node1 storage=hdd
kubectl get nodes --show-labels
k label node node2 storage=ssd

vi nodehttp.yml
apiVersion: v1
kind: Pod
metadata:
  name: http1
spec:
  containers:
  - name: apache2
    image: httpd
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
  nodeSelector: node에 지정해준 label로 scheduling
    storage: hdd node1의 label
---
apiVersion: v1
kind: Pod
metadata:
  name: http2
spec:
  containers:
  - name: apache3
    image: httpd
    imagePullPolicy: Never
    ports:
    - containerPort: 80
  nodeSelector:
    storage: ssd node2의 label
name: http
labels: yaml 파일에서 label 지정해 주기
  env: pord

k expose pod http -l env=pord --type=Nodeport http pod의 label을 지정해서 외부에 노출
k delete service/http 외부노출 삭제하기
k delete pods http http1 http2 pods 삭제
k label node node1 storage- node의 label 삭제하기

728x90