Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
Kubernetes Series [Part10]: Service로 배우는 kubectl 명령어
devops
kubernetes

Kubernetes Series [Part10]: Service로 배우는 kubectl 명령어

Jay Kim
Jay Kim 01 Feb 2022
Kubernetes Series [Part9]: Deployment로 배우는 kubectl 명령어 Kubernetes Series [Part11]: 헬스체크

Table of Contents


apiVersion: v1
kind: Service
metadata:
  name: order # <서비스명>
  namespace: snackbar 
  labels:
    service: order
    project: snackbar
spec:
  type: ClusterIP
  selector: # <Deployment 오브젝트 매핑>
    service: order
    project: snackbar
  ports:
  - port: 80 # <서비스 오브젝트의 포트>
    targetPort: 8080 # <Deployment 오브젝트에서 원하는 컨테이너의 포트>

---

apiVersion: v1
kind: Service
metadata:
  name: payment
  namespace: snackbar
  labels:
    service: payment
    project: snackbar
spec:
  type: ClusterIP
  selector:
    service: payment
    project: snackbar
  ports:
  - port: 80
    targetPort: 8080

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: order
  namespace: snackbar
  labels: # <서비스가 매핑하기 위해 찾는 부분>
    service: order
    project: snackbar
spec:
  replicas: 2
  selector: # <복제할 파드 매핑>
    matchLabels:
      service: order
      project: snackbar
  template:
    metadata:
      labels:
        service: order
        project: snackbar
    spec:
      containers:
      - name: order
        image: yoonjeong/order:1.0
        ports:
        - containerPort: 8080 # <서비스 오브젝트의 targetPort와 일치시키는 부분>
        resources:
          limits:
            memory: "64Mi"
            cpu: "50m"

--- 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment
  namespace: snackbar
  labels:
    service: payment
    project: snackbar
spec:
  replicas: 2
  selector:
    matchLabels:
      service: payment
      project: snackbar
  template:
    metadata:
      labels:
        service: payment
        project: snackbar
    spec:
      containers:
      - name: payment
        image: yoonjeong/payment:1.0
        ports:
        - containerPort: 8080
        resources:
          limits:
            memory: "64Mi"
            cpu: "50m"
kubectl create namespace snackbar
kubectl apply -f ./snackbar/service-deployment.yaml
kubectl get all -n snackbar

kubectl get svc -o wide -n snackbar

kubectl get endpoints -n snackbar
  • 서비스 오브젝트를 만들면 컨테이너에 엔드포인트 오브젝트 자동 생성

kubectl exec -it order-5d45bf5796-j4g7w -c order -n snackbar -- /bin/sh
cat /etc/resolv.conf

서비스 관련 환경변수는 모든 오브젝트에 저장됨

order 컨테이너에 payment 서비스 관련 환경변수도 저장되어 있음 -> 환경 변수로 통신할 수 있게함

curl ${PAYMENT_SERVICE_HOST}:${PAYMENT_SERVICE_PORT}

payment 서비스를 이용해서 통신하는 방법

# 여기서 payment는 Service 오브젝트의 metadata.name에 해당한다
curl payment:80

만약 다른 네임스페이스에 있는 파드인 경우 <서비스명>.<네임스페이스명> 으로 하면된다.

curl payment.snackbar:80
Kubernetes Series [Part9]: Deployment로 배우는 kubectl 명령어 Kubernetes Series [Part11]: 헬스체크

You may also like

See all kubernetes
01 Feb 2022 Kubernetes Series [Part18]: Kafka on Kubernetes
devops
kubernetes

Kubernetes Series [Part18]: Kafka on Kubernetes

01 Feb 2022 Kubernetes Series [Part17]: Spark on Kubernetes
devops
kubernetes

Kubernetes Series [Part17]: Spark on Kubernetes

01 Feb 2022 Kubernetes Series [Part16]: MongoDB on Kubernetes
devops
kubernetes

Kubernetes Series [Part16]: MongoDB on Kubernetes

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.