IT/Container&k8s

[k8s] Kubernetes Operations (kOps) Install in AWS

Hayley Shim 2023. 10. 29. 00:36

안녕하세요. CloudNet@ K8S Study를 진행하며 해당 내용을 이해하고 공유하기 위해 작성한 글입니다. DevOps 이정훈님의 도서 ‘24단계 실습으로 정복하는 쿠버네티스’ 의 내용을 바탕으로 스터디를 하며 어떻게 k8s에 적용할지 고민하며 정리해봤습니다.

kOps는 클라우드 플랫폼(aws, gcp, azure 등)에서 쉽게 k8s 를 설치할 수 있도록 도와주는 도구입니다.

kOps 설치

[사전 작업]

  • kubectl 설치
  • 반드시 64-bit (AMD64 그리고 Intel 64)디바이스 아키텍쳐에kops설치
  • AWS 계정이 있고 IAM 키를 생성하고 구성. IAM 사용자는 적절한 권한이 필요
  • 클러스터에 사용할 route53 domain 생성 — kops는 클러스터 내부와 외부 모두에서 검색을 위해 DNS을 사용하기에 클라이언트에서 쿠버네티스 API 서버에 연결할 수 있음

[설치 참고]

[kOps 설치 확인]

  • 아래와 같이 node IP, pod IP 확인
  • Hosted Zone 에 추가된 3개 A 레코드 확인

Route53에 kops 관련 A 레코드 3개가 추가됨

[DNS 관련 이슈]

Error: error doing DNS lookup for NS records for “XXXXXXXX.com”: lookup XXXXXXX.com on 10.0.0.2:53: no such host

  • Hosted Zone에 생성된 NS를 등록된 도메인의 NS 서버에 등록해줄 것
  • NS 서버 등록 시, 3–4시간이 걸리므로 기다립니다

Error: Unable to connect to the server: dial tcp: lookup api.pkos.XXXX.link on 168.126.63.1:53: no such host 발생

  • 시간이 지나고 나니 정상적으로 동작. Route 53에 등록되는데 시간이 걸렸던 것으로 추정됩니다
# kops 클러스터 정보 확인
$ kops get cluster
NAME   CLOUD ZONES
wellbeconnected.com aws ap-northeast-2a,ap-northeast-2c

$ kops get cluster -o yaml
apiVersion: kops.k8s.io/v1alpha2
kind: Cluster
metadata: 
...

# 인스턴스그룹 정보 확인
$ kops get ig
NAME   ROLE MACHINETYPE MIN MAX ZONES
master-ap-northeast-2a Master t3.medium 1 1 ap-northeast-2a
nodes-ap-northeast-2a Node t3.medium 1 1 ap-northeast-2a
nodes-ap-northeast-2c Node t3.medium 1 1 ap-northeast-2c

$ kops get ig -o yaml
...

# 인스턴스 정보 확인
$ kops get instances
D   NODE-NAME  STATUS  ROLES STATE INTERNAL-IP INSTANCE-GROUP    MACHINE-TYPE
i-02faf2526767e7030 i-02faf2526767e7030 UpToDate node  172.30.39.139 nodes-ap-northeast-2a.wellbeconnected.com  t3.medium
i-07b0409d7d5f2caed i-07b0409d7d5f2caed UpToDate node  172.30.67.64 nodes-ap-northeast-2c.wellbeconnected.com  t3.medium
i-0fe84c07d0e80bd1d i-0fe84c07d0e80bd1d UpToDate master  172.30.47.89 master-ap-northeast-2a.masters.wellbeconnected.com t3.medium


# 클러스터 정보 확인
$ kubectl cluster-info
Kubernetes control plane is running at https://api.wellbeconnected.com
CoreDNS is running at https://api.wellbeconnected.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl cluster-info dump
...


# CRI 컨테이너 런타임 확인
$ kubectl get nodes -o wide
NAME                  STATUS   ROLES           AGE   VERSION    INTERNAL-IP     EXTERNAL-IP    OS-IMAGE             KERNEL-VERSION    CONTAINER-RUNTIME
i-02faf2526767e7030   Ready    node            32m   v1.24.10   172.30.39.139   3.35.174.114   Ubuntu 20.04.5 LTS   5.15.0-1028-aws   containerd://1.6.10
i-07b0409d7d5f2caed   Ready    node            32m   v1.24.10   172.30.67.64    3.34.48.149    Ubuntu 20.04.5 LTS   5.15.0-1028-aws   containerd://1.6.10
i-0fe84c07d0e80bd1d   Ready    control-plane   34m   v1.24.10   172.30.47.89    3.36.114.106   Ubuntu 20.04.5 LTS   5.15.0-1028-aws   containerd://1.6.10


# volume(sc)
$ kubectl get sc
NAME                      PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
default                   kubernetes.io/aws-ebs   Delete          Immediate              false                  35m
gp2                       kubernetes.io/aws-ebs   Delete          Immediate              false                  35m
kops-csi-1-21 (default)   ebs.csi.aws.com         Delete          WaitForFirstConsumer   true                   35m
kops-ssd-1-17             kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   true                   35m

$ kubectl get sc kops-csi-1-21 -o jsonpath={.parameters} ;echo
{"encrypted":"true","type":"gp3"}

$ kubectl get sc kops-ssd-1-17 -o jsonpath={.parameters} ;echo
{"encrypted":"true","type":"gp2"}

# pod ip 확인
$ kubectl get pod -n kube-system

$ kubectl get pod -n kube-system -owide

 

 

blog migration project

written in 2023.3.6

https://medium.com/techblog-hayleyshim/k8s-kubernetes-operations-kops-install-in-aws-c0dc460343cf

'IT > Container&k8s' 카테고리의 다른 글

[k8s] Network  (0) 2023.10.29
[k8s] Kube DNS & External DNS  (0) 2023.10.29
[k8s] OpenInfra & Cloud Native Day Korea 2022  (0) 2023.10.29
[k8s] Network Resources  (0) 2023.10.29
[k8s] 2022 kubecon- Security  (0) 2023.10.29