티스토리 뷰
kubernetes클러스터를 구성한 후, 자신이 사용할 VM에 사용 환경을 하는 방법을 설명합니다.
작업순서는 아래와 같습니다.
1. docker와 kubectl 설치하기
2. 사용할 OS계정 생성하기
3. k8s클러스터 접근 설정하기
4. 다른 k8s클러스터로 접근 설정 바꾸기
1. docker와 kubectl 설치하기
root 권한으로 실행합니다.
1) docker 설치
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce -y
# systemctl start docker && systemctl enable docker
# docker version
2) kubectl 설치
www.kwangsiklee.com/2019/02/kubectl-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/
작업 VM에서 root user로 k8s cluster를 admin권한으로 접근하려면, 아래 작업만 하시면 됩니다.
작업할 머신/VM에서 아래와 같이 작업하여 master node의 /root/.kube/config 파일을 복사합니다.
$ mkdir ~/.kube
$ scp root@<master node ip>:~/.kube/config ~/.kube/
$ kubectl get nodes
다른 OS user를 사용하는 경우는 이후의 작업도 수행하십시오.
2. 사용할 OS계정 생성하기
이제 사용할 VM에 사용자 OS계정을 만듭니다.
아래는 ubuntu룰 사용하는 경우입니다.
centos
centos는 아래 링크를 참조하세요
happycloud-lee.tistory.com/129?category=832818
ubuntu
그룹부터 만듭니다. 예를 들면 아래와 같이 devgroup이라고 먼저 만듭니다.
$ addgroup devgroup
사용자OS 계정을 만들고 위에서 만든 그룹에 멤버로 추가합니다.
$ export u=<user명> && adduser $u && usermod -g <그룹명> $u
예) export u=ocean && adduser $u && usermod -g devgroup $u
공통
sudo명령(root 권한으로 수행)을 이용할 수 있도록 /etc/sudoers에 등록합니다.
vi로 해야 하며 저장시에는 :wq! 명령으로 강제 저장을 해 줘야 합니다.
$ vi /etc/sudoers
3. k8s클러스터 접근 설정하기
1) Service Account 생성 및 Role binding
먼저 kubernetes에 Service Account가 등록되어 있어야 하고, 그 SA에 적절한 권한이 binding되어 있어야 합니다.
여기 예에서는 'kube-admin'이라는 계정에 'cluseter-admin' ROLE을 binding하겠습니다.
$ export u=kube-admin
$ kubectl create sa $u -n kube-system
$ kubectl create clusterrolebinding rb-$u --clusterrole cluster-admin --serviceaccount=kube-system:$u
다음으로 cluster의 api server주소를 얻어, 역시 복사해 놓습니다.
$ kubectl cluster-info
2) 클러스터 접근 설정하기
k8s cluster 접근 config파일을 복사합니다.
아래 예제는 'gappa'라는 유저를 위한 config파일 복사 예시입니다. 본인의 유저 이름에 맞게 변경하여 수행하십시오.
[root@bastion ~]# mkdir /home/gappa/.kube
[root@bastion ~]# cp ~/.kube/config /home/gappa/.kube
[root@bastion ~]# chown -R gappa:gappa /home/gappa
이제 사용자 OS계정으로 바꾸고 수행하십시오.
$ su - <user 계정명>
예) su - ocean
아래 sample을 참조하여 내용을 수정합니다. cluster명, api-server 주소, token만 바꾸면 됩니다.
- shell파일을 작성합니다.
$ vi setup-context
#!/bin/bash
clusters=`kubectl config get-clusters | tr "\n" "|" | sed "s/NAME//g" -`
read -p "Cluster 이름(현재: ${clusters}): " cluster
read -p "API Server 주소(https://<IP>:<PORT>): " server
read -p "Context 이름: " context
read -p "service account: " user
read -p "namespace: " namespace
token=$(kubectl -n kube-system get secret $(kubectl get secret -n kube-system | grep $user | awk '{print $1}') -o jsonpath='{.data.token}' | base64 --decode)
kubectl config set-cluster $cluster --server=$server --insecure-skip-tls-verify=true
kubectl config set-context $context --cluster=$cluster
kubectl config set-credentials $user --token=$token
kubectl config set-context $context --user=$user --namespace=$namespace
kubectl config use-context $context
exit 0
실행파일로 만듭니다.
$ chmod +x setup-context
shell을 실행합니다. 추가할 cluster, context는 임의로 적절히 부여합니다.
[root@demo install]# ./setup-context
Cluster 이름(현재: |demo-cluster|kubernetes|): demo-cluster
API Server 주소(https://<IP>:<PORT>): https://169.56.84.34:6443
Context 이름: demo-context
service account: kube-admin
namespace: default
Cluster "demo-cluster" set.
Context "demo-context" modified.
User "kube-admin" set.
Context "demo-context" modified.
Switched to context "demo-context".
현재 namespace를 변경하려면 아래 명령을 이용하십시오.
$ kubectl config set-context $(kubectl config current-context) --namespace <namespace>
참고로 추가한 cluster, context를 삭제하려면 아래와 같이 하십시오.
$ kubectl config use-context <바꿀 context명>
$ kubectl config delete-cluster $cluster
$ kubectl config delete-context $context
수정된 명령들을 전체 복사하여 VM콘솔에 붙여넣습니다. 마지막 명령은 Enter를 치면 수행될겁니다.
아래 명령을 수행하면, 바뀐 configuration을 볼 수 있습니다.
또한 ~/.kube/config라는 파일이 생긴것도 확인할 수 있을 겁니다.
$ kubectl config view
아래 명령으로 제대로 연결이 되는 지 확인합니다.
$ kubectl get all
TIP: config를 수정하려면 ~/.kube/config파일 내용을 바꾸고 저장하면 바로 적용됩니다.
변경 저장 후 kubectl config view를 수행해 보십시오.
4. 다른 k8s클러스터로 접근 설정 바꾸기
다른 클러스터로 바꾸는 것도 위와 동일합니다.
새로운 cluster명, api-server주소, token값만 바꾸고 실행하면 됩니다.
만약, 또 다른 cluster가 있다면 한번 수행해 보시기 바랍니다.
'Cloud > Kubernetes' 카테고리의 다른 글
kubectx, kubens (0) | 2020.01.08 |
---|---|
kubectl명령에 Alias부여하기 (0) | 2019.12.13 |
extensions/v1beta1 등 일부 API 지원 중단 및 조치 방법 (0) | 2019.09.21 |
리소스 사용량 모니터링을 위한 metrics server 설치 (0) | 2019.09.12 |
kubernetes 명령 자동완성 설정하기 (0) | 2019.09.12 |
- Total
- Today
- Yesterday
- CQRS
- agile
- SAGA
- 분초사회
- 디토소비
- 호모프롬프트
- API Composition
- 마이크로서비스 패턴
- 스포티파이
- 요즘남편 없던아빠
- 리퀴드폴리탄
- 돌봄경제
- micro service
- AXON
- 마이크로서비스
- Event Sourcing
- 육각형인간
- 버라이어티가격
- 스핀프로젝트
- spotify
- 도파밍
- 애자일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |