매니페스트란 쿠베네티스의 오브젝트를 생성하기 위한 메타 정보를 yaml이나 json형태로 정의한 파일이다.
아래는 nginx 이미지로 pod 1개를 생성하는 yaml이다.
실제로 아래 명령어로 create해보자.
이제 검색을 해보면 아래와 같이 잘 떠 있는 것을 볼 수 있다.
지우는 것도 아래와 같이 간단하다.
yaml을 만들때 아래 4개가 필요하다.
- apiVersion : api버전 명시
- kind : 어떤 오브젝트의 종류를 설정할 것인지
- metadata : 이름이나 네임스페이스 같은 메타데이터를 지정한다
- spec : 실제 pod같이 실행될때 필요한 여러 스펙들을 명시
더 자세하고 필요한 내용들은 아래 링크에서 찾아보자
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/
Kubernetes API Reference Docs
kubernetes.io
이제 아까 생성한 nginx pod에 접근해보려 하는데, 이 pod와 통신해볼 다른 pod를 생성해보자
위 명령어를 통해 busybox pod를 생성할 수 있고 접속까지 된다.
이후 위에서 생성했던 nginx pod의 ip주소를 알기위해
를 통해서 ip주소를 기록해놓는다.
접속된 busybox안에서 wget {nginx_pod_ip}를 하면 index.html이 떨어지는 것을 볼 수 있다.
정상적으로 통신한 것이다. 이렇게 pod끼리는 내부에서 통신이 가능하다.
이러한 pod가 통신이 된다는 것은 pod가 통신이 가능한 상태로 살아 있다는 뜻이다.
하지만 이를 가능하게 해주는 컴포넌트가 대략 2개가 있다.
- Liveness Probe
- Readiness Porbe
Liveness Probe는 정상적으로 pod가 실행되었다는 뜻이다. 만약 이상이 있으면 pod를 종료후 restart하게 된다. ymal에 명시되어 있어야 한다.
Readiness Probe는 정상실행중인 pod안에서 컨테이너 애플리케이션이 정상적으로 요청을 실제로 받을 수 있는지를 체크하는 놈이다. 검사에 실패하면 iptable에서 제외시켜 트래픽을 받지 않는다
이를 확인하는 구체적인 방법으로는 아래와 같이 4개를 제공한다
- command
- http
- tcp
- gRPC
자신의 서비스나 설계에 맞는 방법을 쓰면 되지만 http를 제일 많이 사용하는듯 하다.
아래는 kubernetes 공홈에 나온 예제인데, 아래와 같이 설정을 해주면 된다. 아래는 command를 이용한 설정
아래는 http를 이용한 설정