SUSE Linux로 구축하는 경량 Kubernetes 클러스터 –
SUSE Rancher K3S
SUSE Linux 환경에서 경량 Kubernetes 배포판인 K3S를 설치하고 Rancher를 구성하는 방법에 대한 가이드를 알아봅니다.
SUSE Linux와 K3S로 만드는 효율적인 Kubernetes 환경
SUSE Rancher K3S는 가벼운 Kubernetes 클러스터를 쉽게 설치하고 운영할 수 있는 솔루션입니다. 이번 포스팅에서는 SUSE Linux Enterprise 및 OpenSUSE Leap 15.6 환경에서 K3S 클러스터를 설정하고 Rancher를 통해 클러스터를 구성하는 방법을 단계별로 설명합니다.
OS
- K3S가 지원하는 OS (포스팅에서는 Opensuse-leap 15.6 사용)
- SUSE Linux Enterprise
- OpenSUSE
- Red Hat Enterprise Linux
- CentOS
- Fedora
- Ubuntu
- Debian
- Raspberry PI
Server Resources
- 최소 리소스 요구사항
Node | CPU | RAM |
Server | 2cores | 2GB |
Agent | 1core | 512MB |
- 아래와 같이 서버 리소스를 할당
Resource | Server Node (Master Node) | Agent Node (Worker Node) |
CPU | 4 | 4 |
REM | 8 | 8 |
DISK (GB) | 100 | 100 |
k3s install script
– Server Node와 Agent Node로 구성되며 Server와 Agent 모두 스케줄링이 가능하다.
– Server Node는 Kubernetes의 Master이다.
- k3s를 설치할 수 있는 스크립트 실행 (Server Node에서 실행)
curl -sfL https://get.k3s.io | sh -
[INFO] Finding release for channel stable [INFO] Using v1.31.4+k3s1 as release [INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.31.4+k3s1/sha256sum-amd64.txt [INFO] Skipping binary downloaded, installed k3s matches hash [INFO] Skipping installation of SELinux RPM [INFO] Skipping /usr/local/bin/kubectl symlink to k3s, already exists [INFO] Skipping /usr/local/bin/crictl symlink to k3s, already exists [INFO] Skipping /usr/local/bin/ctr symlink to k3s, already exists [INFO] Creating killall script /usr/local/bin/k3s-killall.sh [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env [INFO] systemd: Creating service file /etc/systemd/system/k3s.service [INFO] systemd: Enabling k3s unit Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service. [INFO] No change detected so skipping service start
- Agent Node 추가 (Agent Node에서 실행)
- K3S_URL은 Server Node의 IP를 입력
- token 파일 위치는
Server Node
의/var/lib/rancher/k3s/server/node-token
경로 하위에 위치
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
- node 확인
kubectl get nodes
NAME STATUS ROLES AGE VERSION
agent-node Ready worker 25m v1.31.4+k3s1
server-node Ready control-plane,master 45m v1.31.4+k3s1
- core dns configmap 수정
- rancher 도메인 입력
kubectl edit configmap coredns -n kube-system
...
hosts /etc/coredns/NodeHosts [도메인] {
[rancer server IP] [rancher.도메인]
ttl 60
reload 15s
fallthrough
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
import /etc/coredns/custom/*.override
...
- Pod 재시작
kubectl delete pod coredns-ccb96694c-w2pxt -n kube-system
Rancher 설치
- helm 설치
# helm 설치
zypper install helm
- kubeconfig 설정
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
- helm repository 구성
- rancher
- jetstack – https 통신에서 사용할 인증서 발급/관리 도구
# helm repository 추가
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm repo add jetstack https://charts.jetstack.io
- rancher https를 위한 cert-manager 구성
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=true
...
cert-manager v1.16.2 has been deployed successfully!
...
- cert-manager 구성 확인
kubectl get all -n cert-manager
NAME READY STATUS RESTARTS AGE
pod/cert-manager-b6fd485d9-rbsfg 1/1 Running 0 4m1s
pod/cert-manager-cainjector-dcc5966bc-gdjxk 1/1 Running 0 4m1s
pod/cert-manager-webhook-dfb76c7bd-lhbks 1/1 Running 0 4m1s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cert-manager ClusterIP 10.43.186.44 9402/TCP 4m1s
service/cert-manager-cainjector ClusterIP 10.43.16.106 9402/TCP 4m1s
service/cert-manager-webhook ClusterIP 10.43.205.117 443/TCP,9402/TCP 4m1s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cert-manager 1/1 1 1 4m1s
deployment.apps/cert-manager-cainjector 1/1 1 1 4m1s
deployment.apps/cert-manager-webhook 1/1 1 1 4m1s
NAME DESIRED CURRENT READY AGE
replicaset.apps/cert-manager-b6fd485d9 1 1 1 4m1s
replicaset.apps/cert-manager-cainjector-dcc5966bc 1 1 1 4m1s
replicaset.apps/cert-manager-webhook-dfb76c7bd 1 1 1 4m1s
- rancher namespace 생성
kubectl create ns rancher
- Rancher 설치
helm install rancher rancher-latest/rancher \
--namespace rancher \
--set bootstrapPassword=[초기비밀번호] \
--set hostname=rancher.hjy.k3s.local
NAME: rancher
LAST DEPLOYED: Wed Jan 15 11:05:19 2025
NAMESPACE: rancher
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.
NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued, Containers are started and the Ingress rule comes up.
Check out our docs at https://rancher.com/docs/
If you provided your own bootstrap password during installation, browse to https://rancher.hjy.k3s.local to get started.
If this is the first time you installed Rancher, get started by running this command and clicking the URL it generates:
```
echo https://rancher.hjy.k3s.local/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
```
To get just the bootstrap password on its own, run:
```
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'
```
Happy Containering!
- 로그에 나온 도메인으로 웹 접속
- https://rancher.hjy.k3s.local
- helm 배포시 설정한 bootstrapPassword 입력
맺음말(마무리)
SUSE Rancher K3S는 작은 자원을 활용하여 클라우드 네이티브 애플리케이션의 배포와 관리를 손쉽게 수행할 수 있습니다. 특히 Rancher UI는 직관적인 인터페이스를 제공하여 Kubernetes 클러스터 운영에 필요한 모든 기능을 지원합니다. 이 가이드를 통해 여러분의 IT 환경에서 Kubernetes 클러스터를 효과적으로 관리해보세요.
Tel. 📞 02-469-5426 | E-mail. ✉️ hello@openmaru.io
클라우드 네이티브에 최적화된 OPENMARU SaaS형 APM
/in APM, OPENMARU/by 오픈마루 마케팅3APM 파헤치기 – OTT 서비스처럼 빠르고 끊김 없는 서비스, 그 뒤엔 APM이 있다?
/in APM, OPENMARU/by 오픈마루 마케팅3OPENMARU APM 활용 사례로 이해하는 쿠버네티스 모니터링
/in APM, Kubernetes, OPENMARU/by 오픈마루 마케팅2