본문 바로가기

Kubernetes

Kubekey를 사용한 Kubernetes, Kubesphere 배포

Kubekey를 통해 Kubernetes, Kubesphere을 배포하는 방법 게시

Install a Multi-node Kubernetes and KubeSphere Cluster

위의 url을 기반으로 작성됨

centos]# curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.1 sh -
centos]# chmod +x kk

위의 명령어로 kubekey를 설치하고 chmod를 통해 ./kk 명령어를 활성화

 

centos]# ./kk create config --with-kubernetes v1.21.5 --with-kubesphere v3.3.0

위의 명령어로 kubernetes와 kubesphere 배포

글 작성 시기에 맞는 버전을 정의하였지만 버전을 정의하지 않으면 최신 버전을 가져옴

 

kubekey로 cluster를 만들기 전에 몇 가지 사전 작업이 필요

우선 각 노드에 필요한 것들을 설치

node1]# yum install -y ebtables socat ipset conntrack
node2]# yum install -y ebtables socat ipset conntrack

여러 노드에 설치할 경우 각 노드에 설치

설치가 완료되면 kubekey로 kubernetes, kubesphere 설치할 때 같이 설치된 config-sample.yaml을 수정

 

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 172.16.0.2, internalAddress: 172.16.0.2, user: ubuntu, password: "Qcloud@123"}
  - {name: node2, address: 172.16.0.3, internalAddress: 172.16.0.3, user: ubuntu, password: "Qcloud@123"}
  roleGroups:
    etcd:
    - node1
    control-plane: 
    - node1
    worker:
    - node1
    - node2
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.21.5
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []
  addons: []



---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
  name: ks-installer
  namespace: kubesphere-system
  labels:
    version: v3.2.1
    
...

해당 yaml중 상단 Cluster를 수정하여 multi node를 구현

 

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 192.168.0.97, internalAddress: 192.168.0.97, user: root, password: passwd!}
  - {name: node2, address: 192.168.0.177, internalAddress: 192.168.0.177, user: root, password: passwd!}
  roleGroups:
    etcd:
    - node1
    control-plane: 
    - node1
    worker:
    - node1
    - node2
  controlPlaneEndpoint:
    ##Internal loadbalancer for apiservers 
    #internalLoadbalancer: haproxy

각 host는 각 상황에 맞는 옵션으로 설정

host에 설정된 name으로 roleGroups에서 역할 정의

centos]# ./kk create cluster -f config-sample.yaml

config-sample.yaml로 cluster를 제작

만약 설치 중에 위처럼 필요한 것들에 y가 되어있지 않아 설치가 안된다면 해당하는 것을 아래 명령어 중 선택해서 설치

node1]# yum install -y ebtables socat ipset conntrack

 

이후 http://<node ip>:30880/로 들어가 kubesphere에 접속

floating ip이기 때문에 위에서 설정한 ip와 다름

http://<public ip>:30880/

address : admin

password : P@88w0rd

위의 주소와 비밀번호로 초기 값이 설정되어 있음


Kubesphere의 config-sample에서 logging 부분을 지원

해당 부분을 true로 바꾼 상태로 create를 진행할 경우 같이 수정

true로 변경 후 위로 가면 elasticsearch에 대한 설정부가 존재

kubesphere의 docs와 약간 다르지만 근본적으로 동일

주석처리된 부분을 해제하고 상황에 맞게 수정하여 사용

logMaxAge는 로그의 보존 기간을 의미

이미 모두 설치한 상태에서 진행한다면 아래의 방법을 사용

centos]# kubectl edit cc -n kubesphere-system ks-installer

위의 명령어를 사용하면 실행상태에서도 수정이 가능

진행하여 아래와 유사한 부분을 탐색

진행된 상태이기에 다르지만 초기 상태는 elasticsearch 관련 코드가 존재하지 않음

역시 logging 부분을 찾아서 enabled을 true로 교체

이 두 부분을 변경하면 어느정도 시간이 흐른 후 수정이 이뤄짐

수정이 되었다면 system components에 추가 아이콘이 생성

툴박스를 통해 container log search가 가능

'Kubernetes' 카테고리의 다른 글

Kubernetes EFK  (0) 2024.05.23
Kubernetes Prometheus  (0) 2024.05.23
Kubesphere Federation  (0) 2024.05.23
Managed K8s & On premise K8s  (0) 2024.05.23
Cloud provider Managed K8s Service  (0) 2024.05.23