반응형

사용중인 맥북을  Big Sur 로 업데이트 했더니 git 사용시 다음과 같은 에러가 났다.

 

➜  ~ git
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

 

해결 방법은 다음과 같다.

xcode-select --install

 

이렇게 설치를 해주면 해결이 된다.

 

728x90
반응형
반응형

최근에 파이썬 관련 책들을 이것 저것 많이 본것 같다. 

단순히 파이썬을 위한 책들이 아닌 파이썬을 통해서 다양한 기법들을 활용해보는 책들이었는데 이번에도 그런 종류의 책이다.

그런데 상당히 재미있다. 

 

1. 개념부터 알려준다. 

 

난 개인적으로 금융관련 용어들에 대해서 잘 알고 있지 않다. 그래서 최근에 파이썬을 이용해서 금융정보를 스크레이핑 하는 기법들이 많이 소개 되고 있다. 나도 관심을 가져볼까 했는데 생각보다는 거리가 있었다. 왜 그런지 곰곰히 생각해봤는데 금융에 대해서 아는게 없어서였다. 이 책은 위와 같이 금융 관련 용어에 대해 먼저 설명을 해준다. 그래서 좀더 읽으면서 편안함을 느꼈다. 

 

2. 친근한 엑셀로 미리 설명을 해준다.

파이썬으로 만들어 보기 전에 이렇게 엑셀을 통해서 실습을 해본다. 엑셀을 사용해 보면서 엑셀의 몰랐던 기능들을 알수 있어서 일석 이조였다. 

 

3. 실제 파이썬 활용에 대한 자세한 설명

책의 내용들을 실습하면서 느꼈던 점은 그림을 통해서 설명을 해주고 코드에 대한 설명도 자세히 해주고 있어서 어렵지 않게 따라 할 수 있다는 것이었다. 파이썬에 대한 기본적인 내용이나 함수에 대한 내용들도 있어서 굳이 다른 것을 찾아 볼 필요도 없었다.

 

내가 최근에 금융 관련 된 내용들을 관심있게 가지고 있어서 인지는 모르겠지만 이 책이 유난히 재미있었다. 파이썬으로 주가를 분석한다든지 스크래이핑을 해보고 싶은 분들에게 한번쯤 추천 해주고 싶다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

현재 시스템의 구성은 다음과 같다

 

MasterNode, Worker1, Worker2

 

여기에 테스트를 위해서 mysql 을 열려놨다. 해당 yaml 은 다음과 같다. 

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: spring
  name: deploy-mysql
  labels:
    app: mysql
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: MYSQL_ROOT_PASSWORD
        - name: MYSQL_DATABASE
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: MYSQL_DATABASE
        - name: MYSQL_USER
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: MYSQL_USER
        ports:
        - containerPort: 3306
          name: mysql
          protocol: TCP
        volumeMounts:
        - mountPath: "/var/lib/mysql"
          name: mysql-volume
          subPath: dbdata
      volumes:
      - name: mysql-volume
        persistentVolumeClaim:
          claimName: mysql-pvc

그런데 한가지 문제가 생겼다. 

나는 K8S 를 사용하기 위해 virtual box 에서 master, worker1, worker2 이렇게 순서대로 헤드리스로 기동을 시킨다.

그런데 가끔 worker2 가 Ready 가 되기 전에 deployment 의 replicaset 이 같은 노드에 할당 되는 상황이 발생했다.

그러다 보니 pod 가 정상적으로 뜨지 않게 되었다. 

 

그냥 Pod 를 실행시키는 거라면 nodeselector 를 설정하면 될텐데 Deployment는 어떻게 하는지 몰라서 찾아보니 다음과 같이 spec 에 affinity 를 추가하는 방법을 찾을 수 있었다. 

      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - mysql
            topologyKey: "kubernetes.io/hostname"

 

위 설정에는 affinity 설정중 podAntiAffinity 설정을 추가하였다. 설정을 차례대로 해석하면 다음과 같다.

 

podAntiAffinity : 이 pod 가 실행될때 다음 값이 참이면 안된다.

requiredDuringSchedulingIgnoredDuringExecution : 반드시 만족해야 한다. (또다른 설정으로는 preffered 가 있다.)

matchExpressions: label 이 key 는 app 이고 값은 mysql 인 label을 찾는다.

 

결과적으로 label 이 app 이고 값이 mysql 인 pod 가 존재하는 node 에서는 pod 가 실행되지 않는다.

그래서 replicas 가 2로 설정되어있기 때문에 각각의 pod 는 각각의 node 에 위치하게 된다. 

 

master01@master01-VirtualBox:~/k8s/mysql$ kubectl get po -n spring -o wide
NAME                           READY   STATUS    RESTARTS   AGE   IP            NODE                  NOMINATED NODE   READINESS GATES
deploy-mysql-84f7bb885-rn9tz   1/1     Running   1          27h   10.244.1.80   worker01-virtualbox   <none>           <none>
deploy-mysql-84f7bb885-zqlmw   1/1     Running   1          26h   10.244.2.64   worker02-virtualbox   <none>           <none>

 

이거 이외에도 다양한 표현식으로 컨트롤이 가능하다. 

더 자세한 것은 아래 도큐먼트 참고하길 바란다.

 

v1-18.docs.kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/

728x90
반응형
반응형

- 열편집
Alt + Ctrl + Shift 누르고 방향키

- 터미널 열기
Ctrl + `

 

728x90
반응형

+ Recent posts