Kubernetes에서 외부로 서비스 포트 노출시키는 방법

강재민·2022년 5월 20일
0

Kubernetes

목록 보기
7/29
post-custom-banner

ReplicaSet

vi myweb-rs
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myweb-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
      env: dev
  template:
    metadata:
      labels:
        app: web
        env: dev
    spec:
      containers:
        - name: myweb
          image: ghcr.io/c1t1d0s7/go-myweb
          ports:
            - containerPort: 8080
              protocol: TCP

Nodeport

vi myweb-np.yaml
apiVersion: v1
kind: Service
metadata:
  name: myweb-svc-np
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080

서비스 시작

kubectl create -f .				#서비스 시작
kubectl get svc					#서비스 포트 확인
curl 192.168.100.100:32380		#포트 접근


웹 접근


서비스 삭제

kubectl delete -f .

LoadBalacer

외부에서 접근할 때 보통 주소만 검색하지 포트번호를 32380번 이렇게 하지 않는다. 그래서 앞단에 LoadBalacer를 두어 이를 해결할 수 있다.

vi myweb-rs
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myweb-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
      env: dev
  template:
    metadata:
      labels:
        app: web
        env: dev
    spec:
      containers:
        - name: myweb
          image: ghcr.io/c1t1d0s7/go-myweb
          ports:
            - containerPort: 8080
              protocol: TCP
vi myweb-ls.yaml
apiVersion: v1
kind: Service
metadata:
  name: myweb-svc-lb
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 31313
vi ~/kubespray/inventory/mycluster/group_vars/k8s_cluster/addons.yml

...
139 metallb_enabled: true
140 metallb_speaker_enabled: true
141 metallb_ip_range:
142   - "192.168.100.240-192.168.100.249"
...
168 metallb_protocol: "layer2"
...

이렇게 addons파일의 두 부분을 수정해주고

vi ~/kubespray/inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml


이부분도 수정해주고 플레이북을 다시 돌려보면 kubespray의 loadbalancer애드온이 설치가 됨

ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b
kubectl create -f .
kubectl get svc


서비스 접속

curl 192.168.100.240

크롬에도 접속해보면

kubectl delete -f .

### 서비스 삭제
post-custom-banner

0개의 댓글