목록kubernetes (34)
클라우드 엔지니어 꿈나무
Pod 생성 시, creating으로만 뜨고 running 으로 변화하지 않아서 상태를 확인했더니 하기와 같은 오류가 있음을 확인하였다. Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "d5aaee949022d13321ce3c8d36557f1de48bcf1c831ce1443665a0a461c199ad": plugin type="calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized Normal SandboxChanged 17m (x94 o..
k8s 명령어가 자동 완성되지 않으니 자동 완성을 사용 하기 위해 하기와 같이 명령어 입력 bash completion 설치yum install bash-completion -y bash completion을 현재 세션에 로드source /etc/profile.d/bash_completion.sh kubectlsource > ~/.bashrc kubeadmsource > ~/.bashrc 설정 적용을 위하여 쉘 재시작exec bash >https://kubernetes.io/pt-br/docs/reference/kubectl/cheatsheet/
Master Node쿠버네티스 사용을 위하여 SElinux Permissive 모드 설정 및 swap 끄기# SElinux permissive로 설정 setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux#swap 미사용 주석처리swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab#sed -e '/swap/s/^/#/g' -i /etc/fstab Chrony로 시간 대역을 다 맞추고 진행dnf install -y chronyvi /etc/chrony.confserver time.bora.net iburstsystemctl enable --now chrony 쿠버네티스 클러스터로 묶..
리소스 제한을 걸지 않으면 pod 하나가 cpu(core)와 memory를 다 쓸 수 있음pod가 실제 cpu memory를 얼마나 쓰는지 확인하고 제한이 필요특정 컨테이너 하나를 실행하기 위해 scheduler가 node 들 중 택 1 해서 배치할 때 request/limit을 통해서 resource 제한 가능. ex) cpu는 500mc memory 100mb 여유가 있는 곳 배치 요청resource request : 파드를 실행하기 위한 최소한의 리소스 양을 요청resource Limits : 파드가 사용할 수 있는 최대 리소스 양을 제한Memory limit 을 초과하는 경우, 사용되는 파드를 종료하여 다시 스케쥴링 # vi pod-nginx-resources.yamlapiVersion:..
Static Podapi서버에게 요청을 보내지 않음원하는 node에서 kubelet daemon으로 실행하는 것var/lib/kubelet/config.yaml => staticPodPath 확인/etc/kubernetes/manifests 디렉토리에 k8s yaml 파일을 저장 시 적용(yaml 파일 저장 시 바로 실행, 삭제 시 바로 삭제) node 2# cat /var/lib/kubelet/config.yaml kubernetes 자격증의 시험은 staticPodPath 가 변경되어 있는 경우가 있음. 때문에 개인이 이 경로를 바꿔 진행할 수 있음.vi /var/lib/kubelet/config.yaml 로 수정kubelet Daemon은 restart 필수! # cd /etc/kubernet..
init containermain container를 실행하는데 필요로 하는 환경 세팅db 를 접속해서 정보들을 가져오는 컨테이너login application - main container init 컨테이너가 실행되지 않으면 main container 실행 안 됨 (앱 컨테이너를 실행하기 전에 미리 동작 시킬 컨테이너)main 컨테이너가 실행되기 전에 사전 작업이 필요한 경우 사용 # vi init-container.yamlapiVersion: v1kind: Podmetadata: name: myapp-pod labels: app: myappspec: containers:#메인컨테이너 - name: myapp-container image: busybox:1.28 command: ..
livernessProbe (kubelet으로 컨테이너 진단하기)Self-healing 기능, 건강한 container로만 서비스를 제공Pod의 spec에 정의 일반 pod yamlapiVersion: v1kind: Podmetadata: name: nginx-podspec: containers: - name: nginx-container image: nginx:1.14livernessProbe 적용 pod yamlapiVersion: v1kind: Podmetadata: name: nginx-podspec: containers: - name: nginx-container image: nginx:1.14 livenessProbe: httpGet: path:..
# kubectl delete pod --all => 동작 중인 모든 파드 삭제# kubectl get pods -o wide --watch => 파드 삭제를 한 줄씩 조회master 창을 하나 더 열어 # kubectl create -f web.yaml 및 # kubectl delete -f web.yaml 실행 # kubectl edit pod web -> 동작 중인 파드 수정 따배쿠 문제1. # kubectl get pod2. # kubectl get pod --all-namespaces3. # kubectl run nginx-pod --image nginx --port 804 & 8. # kubectl describe pod nginx-pod5 ~ 7. # kubectl get pod -o wi..
Container 와 Pod 차이 비교Container 정리app.js app.js를 제공하는 app js application8080 포트 열어 client connection 이 들어오면 200번 상태 코드와 함께 컨테이너 이름을 응답이거를 기준으로 컨테이너 제공 node 1,2 버전을 넣음 # docker build -t smlinux/appjs# docker push smlinux/appjs => 허브저장 Pod란 컨테이너를 표현하는 K8S API의 최소 단위Pod는 하나 또는 여러 개의 컨테이너를 포함할 수 있음 (권장은 하지 않음)1. kubetl run 명령(CLI)으로 생성# kubectl run webserver --image=nginx:1.142. pod yaml을 이용해 생성apiVe..
Yaml 템플릿 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식 기본 문법 - 구조화된 데이터를 표현하기 위한 데이터 포맷 - Python 처럼 들여쓰기로 데이터 계층을 표기 - 들여쓰기를 할 때는 Tab이 아닌 Space Bar를 사용 - 가독성이 좋아 설정 파일에 적합한 형식 - Scalar 문법 : ':'을 기준으로 key: value 를 설정 - 배열 문법 : '-' 문자로 여러 개를 나열 - 공식 사이트 : http://yaml.org/ - kibermets yam example : $cat nginx-pod.yaml - top down 방식이 아니라 전체를 한 번에 보는 구조 API Version 확인 # kubectl api-resources # kubectl explain pod