kubernetes/minikube

kuebernetes LoadBalancer 사용하기

PSAwesome 2022. 8. 13. 22:31
반응형

안녕하세요.

공부할 때마다 설치가 필요한 서버들은 컨테이너로 띄워서 사용하는데,

tunnel이..... 말썽이라 터미널로 port-forward하기 싫어서 다양한 방법을 기록하고 있습니다.

쿠버네티스는 버전마다 문법이 조금씩 달라지니 답답할 때가 많아서 버전부터 명시하였습니다.

 

 

예제 - spark with zeppelin

목차

  1. 환경 정보
  2. deployment 
  3. service
  4. minikube service url
  5. open

 

1. 환경 정보

pc

  • mac: monterey

minikube

  • driver: hyperkit
  • version: v1.23.3

kubernetes

clientVersion:
  buildDate: "2022-05-03T13:36:49Z"
  compiler: gc
  gitCommit: 4ce5a8954017644c5420bae81d72b09b735c21f0
  gitTreeState: clean
  gitVersion: v1.24.0
  goVersion: go1.18.1
  major: "1"
  minor: "24"
  platform: darwin/amd64
kustomizeVersion: v4.5.4
serverVersion:
  buildDate: "2022-01-25T21:19:12Z"
  compiler: gc
  gitCommit: 816c97ab8cff8a1c72eccca1026f7820e93e0d25
  gitTreeState: clean
  gitVersion: v1.23.3
  goVersion: go1.17.6
  major: "1"
  minor: "23"
  platform: linux/amd64

 

2. deployment yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spark-zeppelin-deployment
  labels:
    app: spark-zeppelin
spec:
  replicas: 1
  template:
    metadata:
      name: spark-zeppelin
      labels:
        app: spark-zeppelin
    spec:
      containers:
        - name: spark-zeppelin
          image: apache/zeppelin:0.8.1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 4040
              name: zeppelin-port
            - containerPort: 8080
              name: zeppelin-web
          env:
            - name: ZEPPELIN_NOTEBOOK_DIR
              value: /notebook
            - name: ZEPPELIN_LOG_DIR
              value: /logs
          command:
            - /zeppelin/bin/zeppelin.sh
          volumeMounts:
            - mountPath: $PWD/logs
              name: spark-logs
          securityContext:
            privileged: true

      volumes:
        - name: spark-logs
          emptyDir: {}

      restartPolicy: Always
  selector:
    matchLabels:
      app: spark-zeppelin
kubectl create -f spark-zeppelin-deployment.yaml

 

3. service yaml

apiVersion: v1
kind: Service
metadata:
  name: spark-zeppelin-service
spec:
  type: LoadBalancer
  selector:
    app: spark-zeppelin
  ports:
    - name: zeppelin-web-service
      port: 8080
      targetPort: zeppelin-web
kubectl create -f spark-zeppelin-service.yaml

 

4. minikube service list

minikube service spark-zeppelin-service --url
http://192.168.64.3:31634

5. open

open -a /Applications/Whale.app/Contents/MacOS/Whale $(minikube service spark-zeppelin-service --url)

 

 

번외

스파크 배포할 때마다 `pod 이름을 찾아서` logs 하는게 번거로워서 너덜너덜하게 grep을 사용했습니다.

kubectl logs -f $(kubectl get pod | grep -o '^spark[a-zA-Z0-9-]*')

deployment가 spark로 시작하고 있으니 아래가 주요한 내용이 될 것 같습니다.

kubectl get pod | grep -o '^spark[a-zA-Z0-9-]*'

-o : 매치된 내용만 추출

 

반응형