CKA

Imperative commands

백셀건전지 2021. 9. 2. 15:19
  • Imperative commands 는 바로 반영이 가능하지만 기능상의 제약이 있고, 한번 실행되고 사라진다.
  • keep track 하기 힘듦
  • 명령어 실행 전 항상 현재 상태에 대해서 파악을 한 후에 실행해야 하는 제약이 있음(update하려면 기존에 생성이 되어 있는지 파악을 먼저 해야 하는 번거로움)
  • --dry-run: will not create the resource, instead, tell you whether the resource can be created and if your command is right.
  • -o yaml: This will output the resource definition in YAML format on screen.

 

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

 

Scale a 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

 

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

(This will automatically use the pod's labels as selectors)

Or

kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml (This will not use the pods labels as selectors, instead it will assume selectors as app=redis. You cannot pass in selectors as an option. So it does not work very well if your pod has a different label set. So generate the file and modify the selectors before creating the service)

 

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

(This will automatically use the pod's labels as selectors, but you cannot specify the node port. You have to generate a definition file and then add the node port in manually before creating the service with the pod.)

Or

kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml

(This will not use the pods labels as selectors)

Both the above commands have their own challenges. While one of it cannot accept a selector the other cannot accept a node port. I would recommend going with the kubectl expose command. If you need to specify a node port, generate a definition file using the same command and manually input the nodeport before creating the service.

'CKA' 카테고리의 다른 글

Manual Scheduling  (0) 2021.09.03
Declarative commands  (0) 2021.09.02
Services  (0) 2021.09.02
Namespace  (0) 2021.09.01
Deployments  (0) 2021.08.31