ํฌ๋๋ ์ปจํธ๋กค๋ฌ์์ํด ๊ด๋ฆฌ๋๋ฏ๋ก ํ๊ตฐ๋ฐ์ ๊ณ ์ ๋์ด ์์ง์๊ณ , ํด๋ฌ์คํฐ ๋ด๋ถ๋ฅผ ์ฎ๊ฒจ๋ค๋.
- ํด๋น ๊ณผ์ ์์ ๋ ธ๋๊ฐ ์ฎ๊ธฐ๋ฉด์ ์คํ๋๊ณ , ํด๋ฌ์คํฐ ์ ํ๋์ IP๊ฐ ๋ณ๊ฒฝ๋จ
- ํฌ๋๊ฐ ์ง์์ ์ผ๋ก ์์ฑ๋ ๋ ์๋น์ค๋ฅผ ํ๊ธฐ์ ์ ํฉํ์ง ์์.
- ์๋น์ค๋ฅผ ์ด์ฉํ์ฌ ํ๋๊ฐ ํด๋ฌ์คํฐ ์ ์ด๋์ ์๋ ๊ณ ์ ์ฃผ์๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผ ๊ฐ๋ฅํจ.!
https://kubernetes.io/ko/docs/concepts/services-networking/service/
์๋น์ค ์์ฑ
apiVersion: v1 kind: Pod metadata: name: nginx labels: app.kubernetes.io/name: proxy spec: containers: - name: nginx image: nginx:stable ports: - containerPort: 80 name: http-web-svc
apiVersion: v1 kind: Service metadata: name: nginx-service spec: sessionAffinity: ClientIP selector: app.kubernetes.io/name: proxy ports: - name: name-of-service-port protocol: TCP port: 80 targetPort: http-web-svc
- port: ์๋น์ค์ ์ธ๋ฐ์ด๋ ํฌํธ
- targetPort: ๋ด๋ถ์์ ์ฐ๊ฒฐํด์ค Pod์ ํฌํธ
- sessionAffinity: ํด๋ผ์ด์ธํธ IP ์์ฒญ์ ๋ํด ์ฌ๋ฌ ํ๋๊ฐ ์๋ ํ๋์ ํ๋์ ์ธ์ ์ ์ง
spec: ports: - name: http port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- ports: ์ฌ๋ฌ๊ฐ ํฌํธ ํ ๋น ๊ฐ๋ฅ
- port's'์ ๊ฐ์ด ๋ค์ ๋ณต์ํ์ด ๋ถ์ผ๋ฉด ์ฌ๋ฌ๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค ์ ์์
- '-'๋ฅผ ํตํด์ ๋ฆฌ์คํธ ๊ตฌ๋ณ
kubectl exec <ํฌ๋์ด๋ฆ> --curl <ip์ฃผ์>:<ํฌํธ๋ฒํธ> -s
: ์๋น์ค ๊ธฐ๋ฅ ๋ฏธ๋ฆฌ ํ์ธ (์์ง ์ธ๋ถ IP๊ฐ ํ ๋น ๋์ง ์์์๋)
kubectl create deploy --image=gasbugs/http-go http-go --port=8080 --dry-run kubectl create deploy --image=gasbugs/http-go http-go --port=8080 --dry-run > http-go-deploy.yaml
yamlํ์ผ ์๋จ์ service ๊ตฌํ๋ถ ์ถ๊ฐ
apiVersion: v1 kind: Service metadata: name: http-go-svc spec: selector: run: http-go ports: - protocol: TCP port: 80 targetPort: 8080 ---
kubectl create -f http-go-deploy.yaml kubectl get all kubectl get pod -o wide # IPํ์ธํ ๊ฒ kubectl describe svc #Endpoints ํ์ธํ ๊ฒ
kubectl scale deploy http-go --replicas=5
์ฟ ๋ฒ๋คํฐ์ค API์์, ์๋ํฌ์ธํธ(Endpoints)(๋ฆฌ์์ค ๋ช ์นญ์ด ๋ณต์ํ์)๋ ๋คํธ์ํฌ ์๋ํฌ์ธํธ์ ๋ชฉ๋ก์ ์ ์ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ํธ๋ํฝ์ด ์ด๋ค ํ๋์ ๋ณด๋ด์ง ์ ์๋์ง๋ฅผ ์ ์ํ๊ธฐ ์ํด ์๋น์ค๊ฐ ์ฐธ์กฐํ๋ค.
์๋ํฌ์ธํธ ๋์ ์๋ํฌ์ธํธ์ฌ๋ผ์ด์ค API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ์ธ๋ถ IP๋ฅผ ๋ ์ด๋ธ์ ์ฌ์ฉํด ์ง์ ํ์ง ์๊ณ ์ธ๋ถ IP๋ฅผ endpoint ์์์์ ์ค์
์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ํฐ๋ฅผ ์ด์ฉํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ํ๋์ ๋ํ ์ ๊ทผ์ ์ถ์ํํ์ง๋ง, ์ ๋ ํฐ ๋์ ๋งค์นญ๋๋(corresponding) ์๋ํฌ์ธํธ์ฌ๋ผ์ด์ค ์ค๋ธ์ ํธ์ ํจ๊ป ์ฌ์ฉ๋๋ฉด ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐฑ์๋๋ ์ถ์ํํ ์ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์คํ๋๋ ๊ฒ๋ ํฌํจ๋๋ค.
- ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์ง๋ง, ํ ์คํธ ํ๊ฒฝ์์๋ ์์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
- ํ ์๋น์ค์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค ๋๋ ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ์๋น์ค๋ฅผ ์ง์ ํ๋ ค๊ณ ํ๋ค.
- ์ํฌ๋ก๋๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์๋ค. ํด๋น ๋ฐฉ์์ ํ๊ฐํ๋ ๋์, ์ฟ ๋ฒ๋คํฐ์ค์์๋ ๋ฐฑ์๋์ ์ผ๋ถ๋ง ์คํํ๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค์์๋ ํ๋ ์ ๋ ํฐ ์์ด ์๋น์ค๋ฅผ ์ ์ ํ ์ ์๋ค.
apiVersion: v1 kind: Service metadata: name: external-service spec: ports: - port: 80
apiVersion: v1 kind: Endpoints metadata: name: external-service subsets: - addresses: - ip: 11.11.11.11 - ip: 22.22.22.22 ports: - port: 80
์ธ๋ถ๋ก ๋ก๋๋ฐธ๋ฐ์ฑํด์ ํต์ ํ ๋ ์ฌ์ฉ