kodecloud 제공
kubectl 명령어에 익숙해 질 수 있도록 가벼운 예제로 시작
alias 설정 및 자동 완성 적용
kubectl = k
https://kubernetes.io/docs/reference/kubectl/cheatsheet/#kubectl-autocomplete
kubectl cli 명령어 활용 방법
https://kubernetes.io/docs/reference/kubectl/cheatsheet/#interacting-with-running-pods
Q. 1
Deploy a pod named nginx-podusing the nginx:alpine image.
k run nginx-pod --image nginx:alpine
pod 생성은 run 명령어로 가능하다
pod 이름과 주어진 이미지로 명령어를 통해 간단하게 pod를 생성할 수 있다.
Q. 2
Deploy a messaging pod using the redis:alpine image with the labels set to tier=msg.
k run messaging --image redis:alpine --label tier=msg
생성되는 pod에 --label을 통해서 label을 붙일 수 있다.
Q. 3
Create a namespace named apx-x9984574.
k create ns apx-x9984574
네임스페이스도 yaml 대신에, 간단히 command line으로 생성 가능하다.
Q. 4
Get the list of nodes in JSON format and store it in a file at /opt/outputs/nodes-z3444kd9.json.
k get no -o json > /opt/outputs/nodes-z3444kd9.json
-o json (output json) 을 통해 node의 정보를 출력하고 그 정보를 /opt/outputs/nodes-z3444kd9.json 에 저장한다
Q. 5
Create a service messaging-service to expose the messagingapplication within the cluster on port 6379.
Use imperative commands.
k expose po messaging --name messaging-service --port 6379
생성되어 있는 pod messaging에 연결할 서비스를 생성한다.
이름이 messaging-service인 서비스를 생성하고, 서비스의 포트는 6379,
--type을 지정하지 않으면 ClusterIP 서비스가 생성된다.
Q. 6
Create a deployment named hr-web-app using the image kodekloud/webapp-color with 2 replicas.
k create deploy hr-web-app --image kodekloud/webapp-color --replicas 2
deployment는 create로 생성할 수 있다.
--replicas를 통해 복제본 개수를 지정할 수 있다.
Q. 7
Create a static pod named static-busybox on the controlplane node that uses the busybox image and the command sleep 1000.
k run statc-busybox --image busybox --dry-run=client -o yaml command -- sleep 1000 > /etc/kubernetes/manifest/static-busybox-pod.yaml
static pod는 항상 동작하고 있는 pod이다. 강제로 지워도 /etc/kubernetes/manifest/ 아래에 yaml이 존재한다면, 그 속성대로 동작하려고 한다.
controlplane에 동작하기를 원하기 때문에 controlplane에 접속하여 작업을 진행한다
ssh controlplane
--dry-run=client -o yaml 을 통해 출력된 yaml 형식을 /etc/kubernetes/manifest/static-busybox-pod.yaml 로 저장한다.
Q. 8
Create a POD in the financenamespace named temp-bus with the image redis:alpine.
k run temp-bus -n finance --image redis:alpine
pod를 생성할 때 네임스페이스를 지정할 수 있다. (생성되어 있는 네임스페이스)
Q. 9
A new application orange is deployed. There is something wrong with it. Identify and fix the issue.
k describe po orange
k logs orange init-myservice(컨테이너 이름)
k edit po orange >> :wq >> :q!
k replace --force -f /tmp/kubectl-edit-xxxxx.yaml
kubectl describe를 통해 pod의 상세정보를 살펴볼 수 있다.
컨테이너의 log를 보기 위해서, container의 이름을 확인하고
kubectl logs **pod이름** **container이름** 을 통해 pod안의 container의 log를 확인한다.
잘못된 정보를 고치고, 저장한 후에 출력된 메시지의 경로에 있는 yaml을 apply한다.
(edit으로 직접 정보를 고쳤을 때, 바로 적용될 때도 있고, 그렇지 못할 때는, /tmp 아래에 kubectl-edit-xxxx.yaml로 저장되는데, 그 경우에는 -f 옵션을 추가하여 강제로 적용할 수 있다.
Q. 10
Expose the hr-web-app as service hr-web-app-service application on port 30082 on the nodes on the cluster.
The web application listens on port 8080.
k expose deploy hr-web-app --name hr-web-app-service --port 8080 --type NodePort
k edit svc hr-web-app-service
nodeport: 30082
deployment에 service를 연결할 수 있다.
Nodeport의 포트를 command로 지정할 수 없기 때문에, service를 배포하고, edit을 통해 수정해 준다.
Q. 11
Use JSON PATH query to retrieve the osImages of all the nodes and store it in a file /opt/outputs/nodes_os_x43kj56.txt.
The osImages are under the nodeInfo section under status of each node.
k get no -o json
k get no -o jsonpath='{.items[*].status.nodeInfo.osImage}' > /opt/outputs/nodes_os_x43kj56.txt
jsonpath를 통해 원하는 정보만 출력할 수 있다.
Q. 12
Create a Persistent Volume with the given specification:
Volume name: pv-analytics
Storage: 100Mi
Access mode: ReadWriteMany
Host path: /pv/data-analytics
pv는 command로 생성할 수 없고, yaml을 작성하여 만들 수 있다.
vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-analytics
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteMany
hostPath:
path: /pv/data-analytics
k create -f pv.yaml
'[CKA]' 카테고리의 다른 글
CKA 시험 환경 준비 (49) | 2023.09.22 |
---|