Kubbernetes가 CLI라서 어렵나요?GUI가 있었으면 좋겠어요.
10434 단어 초학자kuberneteseks손수
환경 준비(EKS 클러스터 제작까지)
이번에는 맥(M1 MacBook Air)을 작업 터미널로 사용했다.
eksctl get cluster
해보니 결과가 나오면 준비가 완료된다.다음 명령을 사용하여 인증용 EKS 클러스터를 구성합니다.
eksctl create cluster \
--name お好きなクラスター名を指定 \
--region ap-northeast-1 \
--fargate
또한 이번 작업 노드는 EC2가 아닌 Fargate입니다.설계에 소요되는 시간은 EC2든 Fargate든 20분 정도입니다.
계기판 설계
프로그램은 AWS 공식 자습서를 참조합니다.
먼저 다음 명령을 사용하여 대시보드를 디버깅합니다.
그나저나 선언문 내용을 살펴보면 디자인 이미지 2점을 중심으로 서비스와 비밀 등 여러 자원 정의가 담겼다.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
자원을 이렇게 많이 만들었는데namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
kubectl get pod
해봐도default
이름공간팟이늘지 않았지만kubectl get namespace
계기판용이름공간이 늘었다는 것을알 수 있다.지정된 이름 공간으로 들여다보면...
% kubectl get pod --namespace kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-856586f554-sdsmf 0/1 Pending 0 3m8s
kubernetes-dashboard-7979bc45d5-h4cjt 0/1 Pending 0 3m8s
Pod는 두 개 이동되지만 Pending입니다.가능한가요?노드의 자원이 부족할까 봐 걱정이 되지만 계속 진행하겠습니다.
액세스 라이센스 추가(eks-admin)
우선 프로그램에 따라 서비스 계정과 집단 귀속을 작성한다.
현지에서 다음과 같은 선언을 제작하고 보존한다.
eks-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: eks-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: eks-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: eks-admin
namespace: kube-system
상술한 내용을 응용하다.kubectl apply -f eks-admin.yaml
대시보드에 연결상기 제작된
eks-admin
서비스 계정의 인증 영패를 얻어 계기판에 접근한다.우선 인증 영패를 받다.
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')
다음에 에이전트를 시작합니다.kubectl proxy
다음 링크를 브라우저에서 시작합니다.JSON의 텍스트가 반환되었습니다.딱 봐도 503 같은데.
역시 팟이 안 올라가서 이상하죠?이렇게 생각하면서 사격을 시작했다.
대시보드가 작동하지 않습니다!추적 시작
아무튼 일단 Pod 상태를 describe 해 봅시다.
먼저 Pod 차트를 확인하십시오.
% kubectl get pod --namespace kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-856586f554-sdsmf 0/1 Pending 0 30m
kubernetes-dashboard-7979bc45d5-h4cjt 0/1 Pending 0 30m
기본 Pod의 이름을 describe로 복사합니다.% kubectl describe pod kubernetes-dashboard-7979bc45d5-h4cjt --namespace kubernetes-dashboard
Name: kubernetes-dashboard-7979bc45d5-h4cjt
Namespace: kubernetes-dashboard
(中略)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 35s (x32 over 31m) default-scheduler 0/2 nodes are available: 2 node(s) had taint {eks.amazonaws.com/compute-type: fargate}, that the pod didn't tolerate.
그렇구나!"Fargate에게 줄 Taint가 있어서 참지 못하고 Failed를 보냈어요!"그런 것 같습니다.
로그인 후 Taint는 Pod 작업 노드를 지정하는 블랙리스트 속성(affinity와 반대로?)을 말합니다.그러면 대시보드 Pod가 Fargate 노드에서 왜 시작되었는지 알 수 없게 설정되었을 가능성이 높습니다.왜 그랬을까.
어쨌든 EC2로 컬렉션을 재구성하는 것은 쉬운 것 같지만 20분을 더 기다리고 싶지 않아서 다른 방법을 시도해 보고 싶습니다.
대시보드가 depro를 할 때의 YAML에 대해 전문 검색을 한 결과
taint
는 인기가 없었지만 toleration
두 군데가 크게 열렸다.어느 쪽이든'적절하게 논평해달라'는 진지한 댓글이 달렸다.
다시 정신을 차리고 먼저 시범의 선언 삭제 대상을 지정한다.
kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
청소가 끝난 뒤 해당 YAML에서 taint 2곳을 삭제한 선언문에서 다시보드를 새롭게 디자인했다.kubectl apply -f dashboard.yaml
그리고 Pod의 상태를 확인하고... 시도해 봤자 상황이 변하지 않았어요.# Pod名を取得
% kubectl get pod --namespace kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-74646b48b7-lrq2b 0/1 Pending 0 18s
kubernetes-dashboard-78dcf65b8f-42rw6 0/1 Pending 0 18s
# Pod詳細を取得
% kubectl describe pod kubernetes-dashboard-78dcf65b8f-42rw6 --namespace kubernetes-dashboard
Name: kubernetes-dashboard-78dcf65b8f-42rw6
Namespace: kubernetes-dashboard
(中略)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 49s (x2 over 51s) default-scheduler 0/2 nodes are available: 2 node(s) had taint {eks.amazonaws.com/compute-type: fargate}, that the pod didn't tolerate.
Dashboard 선언문 이외의 어딘가에 taint를 설정했나요?번거롭지만 EC2 실행 모드에서 EKS 클러스터를 재제작하기로 했다.
재시도:대시보드에 연결
Fargate를 중지하고 EC2로 새로운 EKS 클러스터를 다시 만듭니다.
이번에 대시보드 관련 팟이 런닝임을 확인했다.
% kubectl get pod --namespace kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-856586f554-c48k2 1/1 Running 0 16s
kubernetes-dashboard-7979bc45d5-gh46h 1/1 Running 0 16s
eks-admin
관련 자원도 디버깅을 마쳤다.정보에 따르면 Cluster RoleBinding은 EKS v1의 베타 에디션을 사용한 것 같습니다.22 이후 협박을 받고 지지하지 않을 것이다.이번에는 아직 v1에 도착하지 않았다.21이니까 안전해요.
그리고 인증 토큰을 받은 후 proxy를 시작하고 대시보드 URL에 접근할 때...
성공!
영패를 복사하고 인증한 후...
대시보드 표시 성공!
계기판을 쓰다듬다
Pod를 설계해 보십시오.
NGINX가 여러 Pod 작업에 대한 인상을 주는 deployment 선언문을 작성하고 디자인합니다.
kubectl apply -f deployment.yaml
그리고 다시 계기판을 방문하면 디자인 이미지를 잘 반영할 수 있다.GUI는 상태를 시각적으로 표시하지만 설정을 변경할 수 있습니다.
"Triple-nginx"를 디자인한
…
단추에서 "편집"해 보십시오.에서는 YAML을 직접 편집할 수 있는 모드 창을 보여 줍니다.
여기서 콘텐츠를 업데이트하면 앱리가 다시 달릴 것 같아요.
그리고 디자인에도'척도'라는 옵션이 있으니 눌러주세요.
GUI를 통해 복제품 수를 조절할 수 있습니다.
CLI 명령도 함께 기재되어 있어 이해하기 쉽다.
또한 Pod에서도
…
옵션이 제공되므로 살펴보십시오.로그 또는 실행 명령이 있습니다.
일단'실행'을 해볼게요.
조개껍질로 팟을 연결하는 것 같아.
kubectl exec
.창의 "nginx"드롭다운은Pod에 여러 용기를 포함하는 상황에서 전환할 수 있습니다.
그리고 '로그' 단추를 하나 더 누르면...
실행 기능과 마찬가지로 CLI 모드에서 Pod와 유사한 로그 기능이 표시됩니다.
오른쪽 상단에도 다운로드 버튼이 있어 로그를 쉽게 얻을 수 있다.이거 편해요.
총결산
계기판은 편집 조작을 쉽게 할 수 있고 디자인도 간단하다(Fargate에 빠지지 않으면) 비즈니스 환경에서도 사용할 수 있으면 편리하다.
Dashboard 관련 대상이 얼마나 많은 노드의 자원을 먹는지 확인하고 방문 제공 & 제어의 디자인에 시간이 좀 걸리지만, 주로 이용하는 감시 도구에 따라 이 녀석의 이용을 연구하고 싶습니다.
Reference
이 문제에 관하여(Kubbernetes가 CLI라서 어렵나요?GUI가 있었으면 좋겠어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minorun365/items/f7f0e3b5d542e32a126d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)