섹션 4: Logging & Monitoring
84) Monitor Cluster Components
EX/ git clone 주소 다운
cd 서버주소/
kubectl create -f .
kubectl top node
kubectl top pod
87) Managing Application Logs
docker run kodekloud/event-simulator
docker run -d kodekloud/event-simulator
docker logs -f ecf
event-simulator.yaml
apiVersion: v1
kind: Pod
metadata:
name: event-simulator-pod
spec:
containers:
- name: event-simulator
image: kodekloud/event-simulator
kubectl create -f event-simulator.yaml
kubectl logs -f event-simulator-pod
kubectl logs -f event-simulator-pod event-simulator ( 두개 이상 컨테이너의 경우 하나 지정)
이번 섹션은 엄청 짧고 간단하게 끝났다
섹션 4: Application Lifecycle Management
92) Rolling Updates and Rollback
Rollout and Versioning
kubectl rollout status deployment/myapp-deployment
kubectl rollout history deployment/myapp-deployment
Recreate strategy - goes down
Rolling updates - one by one updates
kubectl appy -f deployment-definition.yml
kubectl edit deployment deployment/myapp-deployment
kubectl set image deployment/myapp-deployment \ nginx-contaciner=nginx:1.9.1 수정 시 주의 요
kubectl rollout undo deployment/myapp-deployment
kubectl get replicasets 로 모니터링 가능
Lab and Solutions
96) Commands
docker run --name ubuntu-sleeper ubuntu-sleeper
docker run ubuntu-sleeper 10
docker run --entrypoint sleep2.0 ubuntu-sleeper 10
FROM Ubuntu
ENTRYPOINT ["sleep"]
CMD ["5"]
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-sleeper-pod
spec:
containers:
- name: ubuntu-sleeper
image: ubuntu-sleeper
command: ["sleep2.0"]
args: ["10"]
100) Configure Enviroment Variables in Applications
env:
- name: APP_COLOR
value: pink
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
env:
- name:
valueFrom:
secretKeyRef:
pod 내부에 많은 value 가 존재할때 따로 configmap 이라는것을 구성한 뒤에 pod 에 적용시키기
kubectl create configmap
kubectl create -f
구성 요소로 지정
kubectl create configmap \ app-config --from-literal=APP_COLOR=blue \ --from-literal=APP_MOD=prod
구성 파일로 지정
kubectl create configmap \ app-config --from-tile=app_config.properties
yaml 파일로 지정
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
APP_MODE: prod
kubectl create -f config-map.yaml
kubectl get configmaps
pod 에 적용시키는 방법 #1
sepc:
containers:
envFrom:
- configMapRef:
name: app-config
#2
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key:APP_COLOR
#3
volumes:
- name: app-config-volume
configMap:
name: app-config
11 번 문제 pod 에 귀속시키는 작업이 조금 까다로웠다
이런 명령어들은 다들 실제로 외우지 않고 docs 로 찾아보면서 하는걸까..?? / YES
임시 파일로 Delete 하고 Create 하는 대신 가능한 방법
kubectl replace --force -f file.yaml
104) Configure Secrets in Applications
Web-MY SQL APP 같은 경우 데이터를 config-map.yaml 으로 진행하는데
password 같은 보안 정보를 사용할때 sercrets 필요
#1 Secret 생성
#2 POD 에 적용
kubectl create secret generic app-secret --from-literal=DB_Host=mysql
kubectl create secret generic app-secret --from-file=<path-to-file>
kubectl create -f
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
DB_Host: mysql echo -n 'mysql' | base64 엔코딩 하기
DB_User: root echo -n 'mysql' | base64
DB_password: paswrd echo -n 'mysql' | base64
echo -n 'afds=' | base64 --decode 디코딩 하기
kubectl get secrets
kubectl get secrets app-secret -o yaml
kubectl describe secrets
evnFrom:
- secretRef:
name: app-config
env:
- name: DB_Password
valueFrom:
secretKeyRef:
name: app-secret
key: DB_Password
volumes:
- name: app-secret-volume
secret:
secretName: app-secret
Secrets 들은 encoded 되지만 encrypted 되지 않음
7 번 마지막 문제는 어려워서 다시 확인 해야겠다
108) Demo: Encrypting Secret Data at Rest.
Secret 을 안전하게 보관하기 위해 encrypt 시키는 데모 동영상인데
꽤나 복잡하다
나중에 필요시 이부분만 다시 집중적으로 공부해야한다
110) Multi Container Pods
다양한 컨테이너 (각기 다른 기능을 가진 앱) 로 하나의 앱 구현할 때
pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp
labels:
name: simple-webapp
spec:
containers:
- name: simple-webapp
image: simple-webapp
ports:
- containerPort: 8080
- name: log-agent
image: log-agent
Lab and Solutions
kubectl run yellow --image=busybox --dry-run=client -o yaml > yellow.yaml
In yaml -> command: [ "sleep" , "1000" ]
kubectl logs app -n elastic-stack
kubectl -n elastic-stack exec -it app -- cat /log/app.log
containers:
- image: kodekloud
name: sidecar
volumeMounts:
- mountPath: /var/log
name: log-volume
114) InitContainers
spec:
containers:
- name: my-app
image: busybox:1.28
command: [ 'sh', '-c', 'echo The app is running ! && sleep 3600' ]
initContainers:
- name: init-myservice
image: busybox
command: [ 'sh' , '-c' , 'git clone <some-repository,that-will-be-used-by-application> ; done;' ]
- name: init-mydb
image: busybox
command: [ 'sh' , '-c' , 'git clone <some-repository,that-will-be-used-by-application> ; done;' ]
Lab and Solutions
kubectl logs orange -c init-myservice -> 오류찾기
섹션 4 & 5도 마무리 되었다!
복습은 필수로..!!
'Kubernates' 카테고리의 다른 글
쿠버네티스 따배씨 강의 (1) | 2024.01.24 |
---|---|
쿠버네티스 101 (1) | 2024.01.22 |
Kubernetes 쿠버네티스 CKA (Udemy 강의#04) (0) | 2023.07.26 |
Kubernetes 쿠버네티스 CKA (Udemy 강의#02) (0) | 2023.07.14 |
Kubernetes 쿠버네티스 CKA (Udemy 강의#01) (0) | 2023.07.07 |