해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.
⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.
대부분 Definition 파일을 사용하여 declarative 방식으로 작업하지만, imperative command는 일회성 작업을 빠르게 완료하고 Definition 템플릿을 쉽게 생성하는 데 도움이 될 수 있습니다. 이렇게 하면 시험 중에 상당한 시간을 절약할 수 있습니다.
시작하기 전에 아래 커맨드로 작업할 때 유용한 두 가지 옵션을 숙지하세요.
-dry-run
: 디폴트로는 커맨드가 실행되는 즉시 리소스가 생성됩니다. 그러나 단순히 커맨드를 테스트하려는 경우라면-dry-run=client
옵션을 사용하세요. 이것은 리소스를 생성하는 것이 아니라 리소스를 생성할 수 있는지 여부와 커맨드가 올바른지 여부를 알려줍니다.
o yaml
: 이것은 resource definition을 YAML 형식으로 화면에 출력합니다.
위의 두 가지를 함께 사용하여 처음부터 파일을 만드는 대신, 리소스 definition 파일을 빠르게 생성한 다음 필요에 따라 리소스를 수정하고 만들 수 있습니다.
POD
Create an NGINX Pod
kubectl run nginx --image=nginx
Generate POD Manifest YAML file (-o yaml). Don't create it(--dry-run)
kubectl run nginx --image=nginx --dry-run=client -o yaml
Deployment
Create a deployment
kubectl create deployment --image=nginx nginx
Generate Deployment YAML file (-o yaml). Don't create it(--dry-run)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
Generate Deployment with 4 Replicas
kubectl create deployment nginx --image=nginx --replicas=4
kubectl scale
커맨드를 사용해서 deployment를 확장할 수 있습니다.
kubectl scale deployment nginx --replicas=4
Another way to do this is to save the YAML definition to a file and modify
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
deployment를 생성하기 전에 YAML파일에서 replicas나 다른 필드를 수정할 수 있습니다.
Service
Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379
kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
(이렇게 하면 selectors에 자동으로 pod의 labels가 들어갑니다.)
Or
kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml
(이렇게 하면 파드 labels를 selector로 사용하지 않고 대신 selector를 app=redis로 가정합니다. [selector를 옵션으로 전달할 수 없습니다.](https://github.com/kubernetes/kubernetes/issues/ 46191) 따라서 파드에 다른 label 세트가 있으면 잘 작동하지 않습니다. 따라서 service를 생성하기 전에 파일을 생성하고 selector를 수정하세요.)
Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes:
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service --dry-run=client -o yaml
(이렇게 하면 파드의 labels이 자동으로 selector로 사용되지만 노드 포트는 지정할 수 없습니다. 파드로 서비스를 생성하기 전에 definition 파일을 생성한 다음 수동으로 노드 포트를 추가해야 합니다.)
Or
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
(이렇게 하면 파드 labels을 selectors로 사용하지 않습니다)
위의 두 커맨드 모두 고유한 문제가 있습니다. 하나는 selector를 허용할 수 없고, 다른 하나는 node port를 허용할 수 없습니다. 따라서kubectl expose
명령을 사용하는 것이 좋습니다. node port를 지정해야 하는 경우 동일한 명령을 사용하여 definition 파일을 생성하고 node port를 수동으로 입력한 후 서비스를 생성합니다.
Reference:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
'MLOps > Doker & Kubernetes' 카테고리의 다른 글
Udemy CKA 강의 정리 46: Solution - Imperative Commands (Optional) (0) | 2023.01.05 |
---|---|
Udemy CKA 강의 정리 45: Practice Test - Imperative Commands (0) | 2023.01.05 |
Udemy CKA 강의 정리 43: Imperative vs Declarative (0) | 2023.01.05 |
Udemy CKA 강의 정리 42: Solution - Namespaces (Optional) (0) | 2023.01.05 |
Udemy CKA 강의 정리 41: Practice Test - Namespaces (0) | 2023.01.05 |
댓글