Dev/Kubernetes
[CKAD] section 3. Configuration (3) - SA, Resource, Taints & Toleration
2022. 3. 21. 02:20
Service Account
- 대시보드, 젠킨스, 프로메테우스 같은 서비스 애플리케이션이 사용하는 계정이다.
- 생성된 토큰을 사용하여 통신한다.
- 디폴트 토큰이 있지만 기능이 매우 제한적이다. (그러므로 만들어서 사용하자)
# Service Account
# 생성
$ kubectl create serviceaccount dashboard-sa
# 혹은
$ kubectl create sa dashboard-sa
# 조회
$ kubectl get sa
# 상세보기
$ kubectl describe sa dashboard-sa
# 토큰 보기
$ kubectl describe secret dashboard-sa-token-kbbdm
## 해당 토큰은 API 에 사용된다.
아래는 default token 확인 방법이다.
# default token 확인
# 해당 명령어는 deprecated 됨
#$ kuberctl exec -it my-kubernetes-dashboard ls /var/run/secrets/kubernetes.io/serviceaccount
#$ kuberctl exec -it my-kubernetes-dashboard cat /var/run/secrets/kubernetes.io/serviceaccount/token
# 토큰이 저장되는 /var/run/secrets/kubernetes.io 을 주목하자
$ kuberctl exec my-kubernetes-dashboard -- ls /var/run/secrets/kubernetes.io/serviceaccount
$ kuberctl exec my-kubernetes-dashboard -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
serviceAccountName 필드를 통해 sa 를 설정할 수 있고, automountServiceAccountToken 을 사용해 디폴트 토큰에 접근하는 것을 막을 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: my-kubernetes-dashboard
spec:
containers:
- name: my-kubernetes-dashboard
image: my-kubernetes-dashboard
serviceAccountName: dashboard-sa
automountServiceAccountToken: false
Resource Request
- 쿠버네티스는 각 컨테이너 마다 리소스를 할당할 수 있다.
- 설정하지 않으면 자동으로 리소스가 할당이 되며, request 는 기본 256MiB, limit 은 512MiB 가 된다.
- 클러스터의 각 노드에는 최소 2GiB의 메모리가 요구된다.
https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp-color
spec:
containers:
- name: simple-webapp-color
image: simple-webapp-color
ports:
- containerPort: 8080
resources:
requests:
memory: "1Gi"
cpu: 1
limits:
memory: "2Gi"
cpu: 2
Taints(테인트) And Toleration(톨러레이션)
- 비유하자면, Taints 는 모기(Intoleration Pod)를 막기위해 사람(Node)에게 뿌리는 일종의 모기약 같은(?) 것이다.
- 모기는 사람에게 다가갔지만 Taints 가 걸려져있기 때문에 접근 할 수 없다.
- 하지만 모기약 냄새를 좋아하는 고양이(Toleration Pod)는사람에게 다가갈 수 있다.
라는 식의 개념이다. (???)
처음에는 이해가 안갔지만 대충 이해가 갈 것 같다...!
Taints 생성
# 생성
$ kubectl taint nodes node-name key=value:taint-effect
## taint-effect 는 NoSchedule | PreferNoSchedule | NoExecute 가 있다.
# 예시
$ kubectl taint nodes node1 key1=value1:NoSchedule
Toleration 을 사용하는 Pod 생성
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- image: nginx-container
image: nginx
tolerations:
- key: "app"
operator: "Equal"
value: "blue"
effect: "NoSchedule"
하지만 중요한 것은, Taints 및 Tolerations는 포드를 특정 노드로 이동하도록 지시하는 것이 아니다.
대신 노드가 확실한 Tolerations을 갖는 Pod 를 자신의 노드로 이동할 수 있게 하는 것이다.
자세한 내용은 공식 문서를 참고해보도록 한다...
오늘은 이것저것 정리했는데, 3장에는 내용이 특히 많아서 좀 빠르게 진도를 나가보도록 하자!
'Dev > Kubernetes' 카테고리의 다른 글
[CKAD] 2022년 시험 팁 정리 (0) | 2022.03.25 |
---|---|
[CKAD] section 3. Configuration (4) - Node Selectors & Node Affinity (0) | 2022.03.25 |
[CKAD] section 3. Configuration (2) - Secret & Security Contexts (0) | 2022.03.17 |
[CKAD] section 3. Configuration (1) - ConfigMap (0) | 2022.03.16 |
[CKAD] section 2. Core Concepts (3) - Namespace (0) | 2022.03.14 |