dry-run으로 파일의 유효성 여부를 확인할 수는 없다..!
controlplane ~ ➜ kubectl apply -f replicaset-definition-2.yaml --dry-run=client
replicaset.apps/replicaset-2 created (dry run)
레플리카셋이 생성될 것이라고,, 이상이 없길래 실행시켰더니… 에러 발생
controlplane ~ ➜ kubectl apply -f replicaset-definition-2.yaml
The ReplicaSet "replicaset-2" is invalid: spec.template.metadata.labels:
Invalid value: map[string]string{"tier":"nginx"}: `selector` does not match template `labels`
rs를 통해 배포할 파드의 라벨은 selector에 포함되어야 함
spec.selector.matchLabels >> spec.template.metadata.labels
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
selector:
matchLabels:
type: front-end ----> 이게 있음?없음?
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end ----> 없으면 에러
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
이미 생성된 오브젝트 정보 확인 & yaml 파일 생성
이렇게 하면 수정을 빠르게 할 수 있을 것 같음
# 터미널로 확인
kubectl get [pod, rs ..] -o yaml
# 파일로 생성
kubectl get [pod, rs ..] -o yaml > file.yml
에시
controlplane ~ ➜ kubectl get rs new-replica-set -o yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
creationTimestamp: "2023-06-08T13:36:40Z"
generation: 1
name: new-replica-set
namespace: default
...
controlplane ~ ➜ kubectl get rs new-replica-set -o yaml > rs-smlee.yml
controlplane ~ ➜ vi rs-smlee.yml
------
piVersion: apps/v1
kind: ReplicaSet
metadata:
creationTimestamp: "2023-06-08T13:36:40Z"
generation: 1
name: new-replica-set
namespace: default
resourceVersion: "973"
uid: 10d56492-5db0-4aac-a05a-c4bc7b594e43
spec:
....
edit 편집 방법
바로 vi 편집기로 열리고, 수정 후 저장하면 바로 반영됨
kubectl edit [pod, rs ..]
controlplane ~ ➜ kubectl edit rs
replicaset.apps/new-replica-set edited
replicaset.apps/replicaset-2 skipped
scale은 edit로 변경 즉시 반영됨
그러나 기존 rs에서 생성되어있던 pod는 변경된 상태로 수정되지 않음
→ 기존의 pod를 모두 죽인 후 변경된 rs가 변경된 버전의 pod를 띄울 때 까지 기다려야 함