전체 글 (173) 썸네일형 리스트형 9. Object - ConfigMap | Secret > - Pod 생성시, 환경 변수를 주입하기 위해 사용- ConfigMap, Secret의 내용이 수정되면 Pod를 재생성해야 다시 반영됨- key:value 형식으로 입력, key와 valuesms ahen String이기 때문에 true,false의 경우 'true' / 'false' 로 입력- secret의 경우 value는 Base64 인코딩이 필수, 추후 Pod 내부 env로 들어갈 때는 디코딩이 된다; 1-1) Configmap : 일반 설정값 저장소(개발/운영모드, 서버 주소, 기능 ON/OFF, 포트번호, 로그레벨)apiVersion: v1kind: ConfigMapmetadata: # configmap 이름 name: cm-dev# data는 key:value 구조를 가진다.data:.. [JBCS 2.4.62] 일반 OS 유저가 1024 이하 Port 사용하는 방법 그런거 없다. 기동 시에 sudo 명령어를 통하여 하는 방법 말고는 없다.vi /etc/sudoers apache 라는 계정으로 jbcs를 사용한다고 예를 들면, 다음과 같이 sudo 권한을 apache 에게 주자 start.sh#/bin/sh/HTTPD_HOME=/GCLOUD/APACHE/jbcs-httpd24-2.4/httpdPATH=$HTTPD_HOME/sbin:$PATHLD_LIBRARY_PATH=$HTTPD_HOME/lib:$LD_LIBRARY_PATHexport LD_LIBRARY_PATH HTTPD_HOME PATHif [ `ps -ef | grep "/sbin/httpd" | grep "root" | grep -v " grep" | wc -l` -eq 0 ]; then sudo $H.. 8. Volume - emptyDir | hostPath | PV/PVC 1. emptyDir : 컨테이너들 끼리 데이터를 공유하기 위해 볼륨을 사용, 최초에 Volume 내부는 비어있기에 emptyDir 이라 부름.-> Pod 생성시 만들어지고, 삭제시 없어진다. 그렇기 때문에 일시적으로만 존재해야하는 데이터를 저장하는 것이 바람직함.요약 : 같은 Pod 안의 여러 Container가 같이 쓰는 임시 저장공간apiVersion: v1kind: Podmetadata: name: pod-volume-1spec: containers: - name: container1 image: kubetm/init ## 2. 생성한 Volume을 container1 과 container2에 각각 연결(mount) 하는 작업 volumeMounts: - name: em.. 7. Services - ClusterIP | NodePort | LoadBalancer 1. ClusterIP- Pod의 IP는 휘발성이기 때문에, 영구적인 Service의 IP를 통해서 연결- ClusterIP 타입은 Cluster 타입 내에서만 접근이 가능- Service는 여러 Pod에 연결이 가능하며, 각 Pod에 Random으로 트래픽은 보내줌 "Pod 들이 직접 서로를 찾지 말고, Service의 고정 IP로 통신해라"[Client Pod] | | svc-1:9000 v+-------------------+| Service (ClusterIP)| name: svc-1| ClusterIP: 10.x.x.x| Port: 9000+-------------------+ | | forwarding v+------------------.. 6. kubectl [create | apply | get | describe | delete | exec] 1. 생성 - create | apply1-1) kubectl create # pod.yaml 파일이 있을 경우kubectl create -f ./pod.yaml# 내용과 함께 바로 작성kubectl create -f - 1-2) kubectl applykubectl apply -f ./pod.yaml ※ Apply vs Create두 명령어 모두 자원 생성 시 사용할 수 있는 명령어.create는 기존에 같은 이름의 Pod가 존재하면 생성 불가.apply는 기존에 같은 이름의 Pod가 존재하면 업데이트. 2. 자원에 대한 정보 조회 - get// 기본 Pod 리스트 조회 (namespace 포함)kubectl get pods -n default// 좀 더 많은 내용 출력kubectl get pods.. 5. Node Schedule - 모든 Pod는 특정 Node 위에 할당이 되어야함- 기본적으로는 Pod의 리소스를 토대로 스케줄러가 판단해서 적절한 Node에 배치됨- 이때 Node에 자원이 많이 남아 있는 곳이 1순위로 선정- 사용자가 직접 Node를 지정할 수도 있다.- Memory가 limit을 넘을 경우, Pod는 OOM을 발생시키며 재시작된다. 3-1) Pod apiVersion: v1kind: Podmetadata: name: pod-3spec: # 이 Pod(=pod-3)는 반드시 k8s-worker1 노드에 배치해라 # Kubernetes Scheduler가 아무 노드나 고르는 게 아니라 노드 라벨 중에서 # kubernetes.io/hostname=k8s-worker1 라벨이 있는 노드만 선택한다. node.. 4. Service Pod는 언제든 죽고 다시 생성될 수 있는 것이 Kubernetes 환경이다. 즉 Pod가 죽게되면,- Pod의 IP가 바뀔 수 있다.- Pod의 이름도 바뀔 수 있다.- Deployment 재배포 시 새 Pod 가 생성된다. 그러나 가변적인 Pod와는 달리, 평범한 애플리케이션 운영/이용자가 원하는건 아래와 같다.- 항상 같은 주소로 접속하고 싶다.- 여러 Pod에 트래픽을 분산하고 싶다.- 특정 역할만을(web/db 등) 담당하는 Pod만 묶고 싶음. 이럴 때 사용하는 것이 Service이다.Service 는 특정 Label을 가진 Pod들을 하나의 고정된 네트워크 엔드포인트로 묶어주는 객체apiVersion: v1kind: Servicemetadata: name: svc-for-web#k8s의 S.. 3. labels - 한 Pod에는 여러 개의 label을 붙일 수 있다.- Label은 key:value 형태로 구성된다.- Pod 뿐만 아니라 모든 리소스는 Label을 만들 수 있고, 해당 리소스의 정보를 주기 위한 용도- 두번째 용도로 리소스 간의 연결을 하기 위한 용도로 사용- Service -> Pod : Service로 부터 원하는 Pod에 연결 Pod 가 다양해지게 되면 혼란스러울 수 있으니, 이를 관리하기 위한 목적으로 labels를 사용한다. apiVersion: v1kind: Podmetadata: name: pod-1 # web서버의 역할을 담당하게 될 Pod 임을 표시하는 labels labels: # pod-1은 web서버 역할을 할거야! type: web # location.. 이전 1 2 3 4 ··· 22 다음