목록Study/K8S (72)
전공공부
1. Taint - Node - 노드가 두는 제한 kubectl taint nodes node-name key=value:taint-effect taint-effect는 Taint를 견디지 못하는 Pod가 할당 되었을때의 정책을 제시합니다. taint-effect : [Noschedule | PreferNBoSchedule | NoExecute] 1-1) Taint - NoExecute - Taint의 제한이 걸려서 실행이 되지 않고 Terminate 되는 Pod가 있을 수 있다. 예시) kubectl taint nodes node1 app=blue:NoSchedule 2. Toleration - Pods - 명시적으로 Toleration 되어진 Pod만 Taint된 노드 에 접근 할 수 있게 됌 2-1..
Pod는 모두 리소스가 필요합니다. 쿠버네티스 스케줄러가 이를 결정해서 포드와 노드에 사용 가능한 리소스를 배정합니다. 그래서, 애플리케이션 개발자 관점에서 이 주제는 Pod 내부 Cpu 불충분 문제를 해결 할 수 있을 듯합니다. 대표적인 리소스 부족으로 인한 Pending Pod 중 일부는 Insufficient cpu를 일으키고 Pending 되어집니다. 기본적인 Pod의 자원으로는 CPU : 0.5 , Memory : 256Mi를 차지합니다. 이것을 수정하기 위해서 아래와 같이 변경할 수 있습니다. pod-definition.yaml apiVersion: v1 kind: Pod metadata: name: simple labels: name: simple spec: containers: - name..
Account User Account, Service Account - User Account : Admin, Developer - Service Account : Jenkins, Promethus 등 응용 프로그램이 쿠버네티스 api를 사용 하려면 서비스 Account 등록이 필요하다. kubectl create serviceaccount dashboard-sa kubectl get serviceaccount kubectl describe dashboard-sa //서비스 계정의 토큰을 볼 수 있다. 비밀 객체로 생성됨 kubectl get secret dashboard-sa-token... //서비스 토큰 확인 가능 이렇게 설정을 해두면 curl 요청시 header에 Authorization: Bea..
Security docker user 지정 docker run ubuntu sleep 3600 cli docker run --user=1000 ubuntu sleep 3000 Dockerfile FROM ubuntu USER 1000 컨테이너 안의 루트 유저는 루트 유저의 호스트와 다릅니다. docker run --privileged를 사용해서 런 시켜야 컨테이너의 루트 사용자 처럼 행동합니다. Kuberbetes Security pod - level security apiVersion: v1 kind: Pod metadata: name: web-pod spec: securiyContext: runAsUser: 1000 containers: - name: ubuntu image: ubuntu comman..
Secret을 만든 후 Pod 주입을 통해서 암호화된 값을 넣을 수 있다. kubectl create secret generic --from-literal==form literal 사용법 kubectl create secret generic app-secret --from-literal=DB_HOST=mysqlform file 사용법 kubectl create secret generic app-secret --from-file=옵션이 너무 많을때는 파일을 통해 연결 secret.yml 파일 지정 secret-data.yml apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_HOST: base64로 인코딩 하는 법 echo -n 'my..
kubectl create configmap --from-literal== # --from-literal 콘피그맵의 키 벨류 값을 설정해주는 구성 항목 kubectl create configmap --from-literal= 선언적 방식 apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_COLOR: blue APP_MODE: prod kubectl get configmaps # 콘피그맵 확인 포드에서 사용하는 방법 pod.yaml apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: simple-webapp-color spec: containers: - ..
1. Replica - multiple instance 환경에서 권장하며 replica controller가 pod 가용성을 위해서 관리 rs-definition.yaml 제작 apiVersion: v1 kind: ReplicaController metadata: name: myapp-rs labels: name: myapp type: frontend spec: template: metadata: name: myapp labels: name: type: frontend spec: containers: -name: nginx-containers image: nginx replicas: 3 replicacontroller 확인 kubectl create -f rs-definition.yaml kubectl ..
1. CLI 명령 기반 배포 마스터 노드에 터미널로 접속한 상태에서 다음과 같은 명령을 실행한다. kubectl run nginx --image=nginx //k8s docker hub로 부터 이미지 가져와서 pod run kubectl get pod // pod 확인 2. YAML 파일 배포 pod-define.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp type: frontend spec: containers: #리스트 형태로 여러 컨테이너 사용 가능 - name: nginx-controller image: nginx kubectl apply -f kubectl create -f # 둘다 사용가능 해당 yaml ..