Pod
은 한 개 또는 여러개의 컨테이너를 포함한다.kubectl run echo --image [이미지 주소]
apiVersion: v1
kind: Pod
metadata:
name: echo
labels:
app: echo
spec:
containers:
- name: app
image: ghcr.io/subicura/echo:v1
※ 쿠버네티스는 리소스를 관리할 때 name
, label
을 사용
version
: 오브젝트 버전kind
: 종류(Pod, Replicaset)metadata
: 메타데이터(name, label, annotation)spec
: 상세 명세, 리소스 종류마다 다르다....
spec:
containers:
- name: app
image: ghcr.io/subicura/echo:v1
livenessProbe:
httpGet: # /not/exist에 요청을 보내어 확인한다.
path: /not/exist
port: 8080
initialDelaySeconds: 5 # 처음 5초 이후 시도
timeoutSeconds: 2 # timeout은 최대 2초 # Default 1
periodSeconds: 5 # 5초마다 한번씩 확인 # Defaults 10
failureThreshold: 1 # 한번이라도 실패하면 컨테이너 재시작하겠다. # Defaults 3
...
spec:
containers:
- name: app
image: ghcr.io/subicura/echo:v1
readinessProbe:
httpGet:
path: /not/exist
port: 8080
initialDelaySeconds: 5 # 처음 5초 이후 시도
timeoutSeconds: 2 # timeout은 최대 2초 # Default 1
periodSeconds: 5 # 5초마다 한번씩 확인 # Defaults 10
failureThreshold: 1 # 1번이라도 실패 시 컨테이너 재시작 # Defaults 3
apiVersion: v1
kind: Pod
metadata:
name: counter
labels:
app: counter
spec:
containers:
- name: app
image: ghcr.io/subicura/counter:latest
env:
- name: REDIS_HOST
value: "localhost"
- name: db
image: redis
app(counter)
이라는 컨테이너는 db(redis)
컨테이너에 접근하기 위해 localhost로 접근한다.# Pod의 로그 확인시 컨테이너 지정 필요하다
kubectl logs counter app
kubectl logs counter db
# Pod의 app 컨테이너 접속
kubectl exec -it counter -c app -- sh