udemy kubernetes 강의 : Lightning Lab - 1 답 정리
진행한 udemy 강의 링크
Certified Kubernetes Administrator (CKA) with Practice Tests
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
목표
Lightning Lab - 1 강의 test를 100%로 통과하기
1번.
답
[controlplane Node]
(업그레이드할 버전 결정)
apt update
apt-cache madison kubeadm
(controlplane node kubeadm 업그레이드)
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.19.0-00 && \
apt-mark hold kubeadm
(kubeadm version 확인)
kubeadm version
(업그레이드 계획을 확인)
kubeadm upgrade plan
(kubernetes cluster update를 위해 kubeadm를 선택한 version으로 패치함.)
sudo kubeadm upgrade apply v1.19.0
(노드 드레인)
kubectl drain controlplane --ignore-daemonsets
(kubelet과 kubectl 업그레이드)
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.19.0-00 kubectl=1.19.0-00 && \
apt-mark hold kubelet kubectl
(kubelet을 다시 시작)
sudo systemctl daemon-reload
sudo systemctl restart kubelet
(노드 uncordon)
kubectl uncordon controlplane
(결과)
[node01 Node]
(node 01 접속)
ssh node01
(kubeadm 업그레이드)
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.19.0-00 && \
apt-mark hold kubeadm
sudo kubeadm upgrade node
(노드 드레인)
exit 명령으로 다시 controlplane node로 와서 명령 수행
kubectl drain node01 --ignore-daemonsets
해당 명령 후 pod가 controlplane으로 이동했는지 확인
(kubelet과 kubectl 업그레이드)
다시 node01로 접속 : ssh node01
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.19.0-00 kubectl=1.19.0-00 && \
apt-mark hold kubelet kubectl
(kubelet을 다시 시작)
sudo systemctl daemon-reload
sudo systemctl restart kubelet
(노드 uncordon)
exit 명령으로 다시 controlplane node로 와서 명령 수행
kubectl uncordon controlplane
(결과)
참고 kubernetes docs 링크
https://kubernetes.io/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
2번.
답
[배포 되어있는 deployment 확인]
kubectl get deployment -n admin2406
[deployment json형식 확인을 위해 예제 1개만 json으로 출력]
kubectl get deployment deploy1 -n admin2406 -o json
[json 상태 확인 후 답 입력]
kubectl -n admin2406 get deployment -o custom-columns=DEPLOYMENT:.metadata.name,CONTAINER_IMAGE:.spec.template.spec.containers[].image,READY_REPLICAS:.status.readyReplicas,NAMESPACE:.metadata.namespace --sort-by=.metadata.name > /opt/admin2406_data
참고 kubernetes docs 링크
https://kubernetes.io/docs/reference/kubectl/overview/#sorting-list-objects
https://kubernetes.io/docs/reference/kubectl/overview/#custom-columns
3번.
답
cat /root/CKA/admin.kubeconfig
파일을 확인해보면
server: https://172.17.0.28:2379 항목이 있는데
2379 port는 etcd가 사용하는 port 임
kube-apiserver에 붙기 위해서는 6443 port를 사용해야함.
해당 부분을 6443으로 변경해야함.
4번.
답
[deployment.yaml]
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
[deployment 생성 명령]
kubectl apply -f deployment.yaml
[deployment Rolling update]
kubectl --record deployment.apps/nginx-deploy set image deployment.v1.apps/nginx-deploy nginx=nginx:1.17
참고 kubernetes docs 링크
https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#updating-a-deployment
5번.
답
[pod 상태 확인]
kubectl get all -n alpha
kubectl describe pod/alpha-mysql-68c6b855bb-ztscr -n alpha
(결과)
원인이 persistentvolumeclaim "mysql-alpha-pvc" not found 임을 확인.
[pvc 확인]
kubectl get pvc -n alpha
mysql-alpha-pvc가 없음.
[pv 확인]
kubectl get pv -n alpha
확인후 어떤 storagecalss 를 사용하는지 확인
kubectl describe pv alpha-pv -n alpha
(결과)
slow storageclass를 사용.
[pvc.yaml]
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
name: mysql-alpha-pvc
namespace: alpha
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: slow
[pvc 생성]
kubectl apply -f pvc.yaml
[pvc 확인]
kubectl get pvc -n alpha
bound 상태 확인
[pod 상태 확인]
kubectl get all -n alpha
running 상태 확인.
참고 kubernetes docs 링크
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
6번.
답
[etcd pod이름 확인]
kubectl get all -n kube-system
kubectl describe pod/etcd-controlplane -n kube-system
결과에서 cacert, cert, key 항목 확인.
[etcd backup]
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /opt/etcd-backup.db
참고 kubernetes docs 링크
7번.
답
[pod yaml]
apiVersion: v1
kind: Pod
metadata:
name: secret-1401
namespace: admin1401
labels:
run: secret-1401
spec:
containers:
- command:
- sleep
args:
- "4800"
image: busybox
name: secret-admin
volumeMounts:
- name: secret-volume
readOnly: true
mountPath: "/etc/secret-volume"
volumes:
- name: secret-volume
secret:
secretName: dotfile-secret
참고 kubernetes docs 링크
https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/
제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!
'Kubernetes > Kubernetes 이론' 카테고리의 다른 글
Kubernetes Static Pod 설정 경로 확인 (0) | 2021.08.27 |
---|---|
Kubernetes CKA 자격증 취득 후기 (1) | 2021.08.07 |
kubectl 축약어 정리 (0) | 2021.07.24 |
Kubernetes API Aggregation (1) | 2021.06.20 |
Kubernetes Pod Container의 Networking 정보를 Host에서 확인 (0) | 2021.04.05 |