kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=argo:default -n argo

 

또는 

 

kubectl create rolebinding argo-admin --clusterrole=admin --serviceaccount=default:default -n argo

 

로 해결

 

 

'IT > Argo' 카테고리의 다른 글

argo 설치  (0) 2020.08.11

안녕하세요 보나에요~ 전에꺼에 이어서 해볼께요!

 

(1)을 보시고 싶으면 https://bonahbruce.tistory.com/76

여기로 들어가보세요!

 

kubernetes에 jupyter container 띄우기 ( azure 활용)

안녕하세요 본아에요~ 오늘은 portal.azure.com의 vm 안에서 aks, acr등을 활용하여 jupyter notebook을 올리는 작업을 한번 진행해 보겠습니다.(부족한 점이 많아요) 1. portal azure 로그인 후, 리소스 그룹을..

bonahbruce.tistory.com

 

전에거에서는, persistent volume이 없어서, jupyter에서 데이터분석을 열심히~ 했어도 

기록이 남아있지 않아요.... 말짱 도루묵.... 인거죠

 

왜냐면 k8s는 기본적으로 stateless한 클러스터를 구축하기 때문에

자기가 사용할 volume을 미리 만들어서 붙여주거나, (static)

아니면, pod를 띄우면서 dynamic하게 생성하는 방법이 있어요! 

 

동적으로 하는거는 아직 제가 서툴러서... 우선 제가 구현해본 static 버전으로 설명을 드려볼게요!!

 

우선 저는 public cloud 중 azure를 사용하고 있어요~!

 

그래서! 사용할 storage(창고)를 위해 storage account를 개설할거에요!

 

요렇게 생겨먹은것을 생성한 뒤,

access keys 부분으로 들어가셔서, key1 또는 key2를 복사해주세요

 

그 후,

 

kubectl create secret generic fileshare-secret --from-literal=azurestorageaccountname=bonahstorage --from-literal=azurestorageaccountkey=<key1입력> -n jupyter

이런식으로 secret을 생성해주면 됩니다!

여기서 

fileshare-secret = secret의 이름

bonahstorage = Azure에 있는 storageaccount 이름

<key1입력> = key에 있는 엄청 긴 값(여기에서 <>는 제거하고 넣으셔야되요)

 

자,,

그렇게 생성을 하고 나면

이제 yaml 파일 두개를 생성해야되요!

 

1. pv

pv는 이제 persistent volume이라고 해서, 실제 존재하는 pv를 명시하는 부분이고

2. pvc

pvc는 이제 요청을 하는거에요. 나 요런 저장공간을 갖고있는 pv를 붙이려고해!!

그러면 pv에 있는 저장소중 pvc에서 요청한 것에 충족되는 pv를 불러와서 inbound하게 됩니다. (제가 이해한바론..)

 

pv.yaml파일은 다음과 같이 생겼어요

 

kind: PersistentVolume
apiVersion: v1
metadata:
  name: fileshare-pv
  labels:
    usage: fileshare-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  azureFile:
    secretName: fileshare-secret
    shareName: bonah
    readOnly: false

pvc.yaml파일은 다음과 같이 생겼어요

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fileshare-pvc
  # Set this annotation to NOT let Kubernetes automatically create
  # a persistent volume for this volume claim.
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  selector:
    matchLabels:
      usage: fileshare-pv

두 yaml 파일을 모두 apply 해주세요!

kubectl apply -f pv.yaml -n jupyter
kubectl apply -f pvc.yaml -n jupyter

그 후, 다시 jupyter.yaml을 deploy 하면 됩니다! 아 ! 그전에!

jupyter.yaml에서 deployment 부분을 살짝 추가를 해야 하는 부분이 있습니다.

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: base-notebook
  labels:
    app: base-notebook
spec:
  replicas: 1
  selector:
    matchLabels:
      app: base-notebook
  template:
    metadata:
      labels:
        app: base-notebook
    spec:
      volumes:
      - name: azure
        persistentVolumeClaim:
          claimName: fileshare-pvc
      containers:
      - name: base-notebook
        image: acrintern.azurecr.io/base-notebook:v1
        ports:
        - containerPort: 8888
        command: ["start-notebook.sh"]
        args: ["--NotebookApp.token=''"]
        volumeMounts:
        - name: azure
          mountPath: "/home/jovyan/work"

기존 yaml 형식에서 모두 같지만, persistentVolumeClaim이라는 부분이 새로 추가되었을거에요!

 

pv를 요청하는 pvc를 저희가 만든 pvc.yaml에서 fileshare-pvc라고 metadata name을 설정해놓았어요!(위에 보시면됩니다) 그래서 그 pvc를 불러오는거에요! 나 fileshare-pvc 레이블이 있는 pvc.yaml파일에서 생성한 그 claim을 쓸거야! 이런느낌입니다.

 

그리고 실행하면 pv가 붙은 jupyter notebook이 탄생하게 됩니다~~ 짝짝짝

 

다음에는, 저희가 loadbalancer를 사용해서 외부에서 접근가능하게 해준것을,

azure를 사용하면 제공해주는 domain name으로 변경해서 사용하는, 간편한 방법을 이용해볼게요!!

다음에 만나욥!

'IT > Kubernetes' 카테고리의 다른 글

helm을이용해 k8s에 kafka 설치하기!  (1) 2020.08.11
helm 설치  (0) 2020.08.11
kubernetes multiple cluster일때 cluster 옮기는 방법  (0) 2020.08.03
k8s 정리  (0) 2020.07.31
kubernetes에 jupyter notebook 띄우기 (1)  (0) 2020.07.15
# 이 명령어를 통해 클러스터 명 확인
kubectl config get-contexts

*를 통해 현재 kubectl이 어떤 cluster를 바라보고 있는지 확인 가능.

 

다른 클러스터로 switch하는 법

kubectl config use-context aks-bonah

변경된 것을 확인할 수 있음.

'IT > Kubernetes' 카테고리의 다른 글

helm 설치  (0) 2020.08.11
kubernetes에 jupyter notebook 띄우기 (2)  (0) 2020.08.07
k8s 정리  (0) 2020.07.31
kubernetes에 jupyter notebook 띄우기 (1)  (0) 2020.07.15
cloud 관련 링크  (0) 2020.07.13

kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.

 

쿠버네티스는 컨테이너 응용 프로그램의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템입니다.

 

쿠버네티스는 조타수, 조종사 (그리스어)

 

CNCF(Cloud Native Computing Foundation)

 

쿠버네티스의 특징

1. 상태관리

2. 스케줄링

3. 클러스터

4. 서비스 디스커버리 : 서로 다른 서비스를 쉽게 찾고 통신할 수 있음

5. 리소스 모니터링

6. 스케일링 리소스에 따라 자동으로 서비스를 조정함

7. rollout/rollback 배포/롤백 및 버전관리

 

다양한 배포방식

 

Ingress 설정

 

Namespace, Label 관리

 

RBAC( 사용자에 따른 제어) 권한 자유자재로 부여

 

계속해서 원하는 상태를 만들기 위해서 현재의 상태를 바꾸는 것 = 쿠버네티스의 기본 개념이다.

이러한 상태를 어떻게 관리한다? 명령적 방식 보다는 선언적방식(yaml 파일!)으로 정의해서 관리한다.

 

kubernetes 사용하기 - 원하는 상태(desired state)를 다양한 오브젝트(object)에 라벨(Label)을 붙여 정의(yaml)하고 API 서버에 전달.

'IT > Kubernetes' 카테고리의 다른 글

helm 설치  (0) 2020.08.11
kubernetes에 jupyter notebook 띄우기 (2)  (0) 2020.08.07
kubernetes multiple cluster일때 cluster 옮기는 방법  (0) 2020.08.03
kubernetes에 jupyter notebook 띄우기 (1)  (0) 2020.07.15
cloud 관련 링크  (0) 2020.07.13

안녕하세요 본아에요~

 

오늘은 portal.azure.com의 vm 안에서 aks, acr등을 활용하여

 

jupyter notebook을 올리는 작업을 한번 진행해 보겠습니다.(부족한 점이 많아요)

 

1. portal azure 로그인 후, 리소스 그룹을 할당받음(리소스 그룹안에서 vm, aks, acr등이 만들어짐)

 

2. vm (ubuntu 18.04) 생성

 

3. vm 상에서 azure-cli 설치

 

 

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az login # Azure Cloud와의 연동

# 다음과 같은 문구가 뜬다.
#To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code HBCHP2AY5 to authenticate.

 

해당 url로 접속 후, 인증을 진행한다.

 

4. kubectl cli 설치

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client

5. docker 설치

docker는 기본적으로 root계정의 권한 아래에서 진행이 되기 때문에,

usermod를 활용하여 권한을 부여한다.

sudo apt install docker.io
docker version (client만 뜨고 server는 안뜬다)
sudo usermod -a -G docker AzureUser
sudo service docker restart
docker version
exit
docker version
docker ps -a # 컨테이너 아무것도 없음

6. Azure Container Resistory 생성

# rg-intern-2020 리소스그룹 내에 acrinternjupyter 라는 acr 생성
az acr create --resource-group rg-intern-2020 --name acrinternjupyter --sku Basic

# acrinternjupyter 리소스에 로그인
az acr login --name acrinternjupyter

rg-intern-2020 리소스 그룹내의 acr list 출력해서 보기
az acr list -g rg-intern-2020 --query "[].{acrLoginServer:loginServer}" --output table

 

7. docker hub에서 jupyter/base-notebook pull 해서 가져오기(image를 가져오는 것임)

# docker hub에서 jupyter/base-notebook 이미지 가져오기
docker pull jupyter/base-notebook

# 가져온 이미지에 태그 달기
docker tag jupyter/base-notebook acrinternjupyter.azurecr.io/base-notebook:v1

# 태그 단 이미지를 푸쉬하기(푸쉬를 하면 azure container repository로 들어가게됨)
docker push acrinternjupyter.azurecr.io/base-notebook:v1

# acr list 살펴보기
az acr repository list --name acrinternjupyter --output table

8. AKS를 생성하면서 acr과 붙이기

az aks create --resource-group rg-intern-2020 --name aks-intern-jupyter --node-count 3 --generate-ssh-keys --attach-acr acrinternjupyter

# kubectl 명령어가 먹도록 만들기 ( 이것은, kubectl 명령어가 만든 aks를 바라보도록 하는 명령어이다)
az aks get-credentials --resource-group rg-intern-2020 --name aks-intern-jupyter

9. jupyter namespace 만들어서 관리하기

kubectl create namespace jupyter

mkdir jupyter
cd jupyter
touch jupyter.yaml

kubernetes에 적용할 yaml파일 작성하기(deployment, services)

 

10. kubectl 명령어로 pods 띄우기

kubectl apply -f jupyter.yaml -n jupyter
kubectl get pods -n jupyter -w
kubectl get svc -n jupyter -w

 

여기까지가 정말 기본적으로 설치 및 주피터 노트북을 빠르게 띄우는 작업을 진행해 보았습니다.

 

다음 업로드 때에는, 영구 스토리지를 연결해서 하는 작업을 진행해 보도록 하겠습니다.

 

다음 업로드 - https://bonahbruce.tistory.com/91

 

kubernetes에 jupyter notebook 띄우기 (2)

안녕하세요 보나에요~ 전에꺼에 이어서 해볼께요! (1)을 보시고 싶으면 https://bonahbruce.tistory.com/76 여기로 들어가보세요! kubernetes에 jupyter container 띄우기 ( azure 활용) 안녕하세요 본아에요~ 오..

bonahbruce.tistory.com

 

'IT > Kubernetes' 카테고리의 다른 글

helm 설치  (0) 2020.08.11
kubernetes에 jupyter notebook 띄우기 (2)  (0) 2020.08.07
kubernetes multiple cluster일때 cluster 옮기는 방법  (0) 2020.08.03
k8s 정리  (0) 2020.07.31
cloud 관련 링크  (0) 2020.07.13

+ Recent posts