Rancher๋?
Rancher๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํด์ ๋๋ค. web๊ธฐ๋ฐ GUI์ command line ์ธํฐํ์ด์ค๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ ํ์ฅ ๋ํ ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค. ์ด๋ฏธ ์กด์ฌํ๋ ํด๋ฌ์คํฐ๋ importํ์ฌ rancher ์ธํฐํ์ด์ค๋ก ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ๋ํ ์ ๊ณต๋๋ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ์ํ application๋ค์ ์ฝ๊ฒ ๋ฐฐํฌํ ์๋ ์๋ค. kubernetes๋ฅผ ์น๊ธฐ๋ฐ์ผ๋ก ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋๊ฒ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด๋ค.
Rancher ์ค์น
์ฌ์ ์๊ตฌ ์ฌํญ
์คํ
HA ๊ตฌ์ฑ์ ์ํด 3๊ฐ ๋ ธ๋ ์ค๋น --> ๋ฆฌ์์ค ๋ถ์กฑ์ผ๋ก 2๊ฐ master์ 1๊ฐ worker ๋ ธ๋๋ก ๊ตฌ์ฑํ๋ค.
- master01.centos.test (Memory 4G)
- master02.centos.test (Memory 4G)
- worker01.centos.test (Memory 2G)
๋ ธ๋๋ณ ํธ์คํธ ์ด๋ฆ์ผ๋ก ์ธ์ํ ์ ์๋๋ก /etc/hosts์ ๊ฐ๊ฐ ์ถ๊ฐํด์ค๋ค
root๊ณ์ ์ผ๋ก ์งํํ๋ค.
๋ฐฉํ๋ฒฝ ํด์
rancher.com/docs/rancher/v2.x/en/installation/requirements/ports/
rancher์์ ์ฌ์ฉํ๋ ํฌํธ์ ๋ํ ์ ๋ณด์ ๋๋ค.
๊ฐํธํ ์ค์ต ์งํ์ ์ํด ๋ฐฉํ๋ฒฝ์ ํด์ ํ๊ณ ์งํํฉ๋๋ค.
$ systemctl stop firewalld
$ systemctl disable firewalld
docker ์ค์น
$ yum install -y docker
$ systemctl start docker
ntp ์ค์
$ yum install -y ntp
$ systemctl start ntpd
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*send.mx.cdnetwo 125.185.190.74 2 u 8 64 1 2.359 -0.734 0.454
106.247.248.106 141.223.182.106 2 u 7 64 1 6.034 0.685 0.157
dadns.cdnetwork 216.239.35.12 2 u 6 64 1 1.917 0.856 0.487
rancherd๋ก rancher ์ค์น ๋ฐ ์ฒซ ๋ฒ์งธ server node ๋ฐฐํฌ
์ฒซ๋ฒ์งธ๋ก ๋ฐฐํฌ๋๋ ์๋ฒ์ rancher-server๋ฅผ ์ค์นํ๋ฉด์ Fixed Registration Address๋ก ์ฌ์ฉ๋ฉ๋๋ค. Fixed Registration Address๋ rancher์์ ๊ด๋ฆฌ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ ธ๋๋ค์ endpoint๋ก ์ฌ์ฉ๋๋ฉฐ ์๋ ๋๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- Kubernetes API ์ ๊ทผ
- Kubernetes cluster์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ์ฌ์ฉ
ํด๋น ์๋ฒ์ rancher๊ด๋ จ Web UI๋ฅผ ์ ๊ทผํ ์ ์๊ณ rancher-server๊ฐ ์คํ๋ ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ฒ๋ฉ๋๋ค.
rancher config ์ค์
/etc/rancher/rke2/config.yaml
token: secret
tls-san:
- master01.centos.test
- token : ๋ค๋ฅธ ๋ ธ๋์์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ token๋ช ์ด๋ค.
- tls-san : ์๋ฒ tls cert์ ์ถ๊ฐ๋๋ค.
rancherd ์ค์น
$ curl -sfL https://get.rancher.io | sh -
[INFO] finding release for channel latest
[INFO] using v2.5.6 as release
[INFO] downloading checksums at https://github.com/rancher/rancher/releases/download/v2.5.6/sha256sum.txt
[INFO] downloading tarball at https://github.com/rancher/rancher/releases/download/v2.5.6/rancherd-amd64.tar.gz
[INFO] verifying installer
[INFO] unpacking tarball file
๊ฐ์ฅ ์ต์ ๋ฒ์ ์ผ๋ก rancherd installer๋ฅผ ์ค์นํ๋ค.
"INSTALL_RANCHERD_VERSION=<version> sh -" ํํ๋ก ๋ค ๋ช ๋ น์ด๋ฅผ ์์ ํ๋ฉด ์ํ๋ ๋ฒ์ ์ผ๋ก ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ rancher git์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด rancherd ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
$ rancherd --help
NAME:
rancherd - Rancher Kubernetes Engine 2
USAGE:
rancherd [global options] command [command options] [arguments...]
VERSION:
v2.5.6 (HEAD)
COMMANDS:
server Run management server
agent Run node agent
reset-admin Bootstrap and reset admin password
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug Turn on debug logs [$RKE2_DEBUG]
--help, -h show help
--version, -v print the version
rancherd-server ์๋น์ค ์คํ
$ systemctl start rancherd-server
# ํด๋น ๋ช
๋ น์ผ๋ก ์๋น์ค๊ฐ ์คํํ๋ฉด์ ํด๋ฌ์คํฐ ๊ตฌ์ถ์ ๋ํ ๋ก๊ทธ๋ฅผ ํ๋ก์
ํ ์ ์๋ค.
$ journalctl -eu rancherd-server -f
...
...
3์ 11 06:05:24 master01.centos.test rancherd[8961]: time="2021-03-11T06:05:24-05:00" level=info msg="Handling backend connection request [master01.centos.test]"
์๋น์ค๊ฐ ์ฌ๋ผ์ค๊ณ ์ ์์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ์คํ๋ ๋๊น์ง ์๊ฐ์ด ๋ค์ ์์๋ ์ ์์ต๋๋ค.
kubernetes cluster ํ์ธ
$ export KUBECONFIG=/etc/rancher/rke2/rke2.yaml PATH=$PATH:/var/lib/rancher/rke2/bin
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01.centos.test Ready etcd,master 112s v1.18.16+rke2r1
$ kubectl get daemonset rancher -n cattle-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
rancher 1 1 1 1 1 node-role.kubernetes.io/master=true 2m27s
ํด๋ฌ์คํฐ์ rancher๊ฐ daemonset์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๋ค.
rancher Web UI ์ธํ
$ rancherd reset-admin
INFO[0000] Server URL: https://master01.centos.test:8443
INFO[0000] Default admin and password created. Username: admin, Password: mrmgsgxfwn5tjcfkft42bbtq4m7rxsgdgm28p9mqc5qdnlcq7kfmw9
rancher admin ๋น๋ฐ๋ฒํธ๋ฅผ resetํ๊ณ ์๋กญ๊ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์ป๋๋ค.
host๋ช ์ด๋ ip๋ก ์๋ฒ์ 8443ํฌํธ๋ก ์ ๊ทผํ๋ค.
์ง์ ๋ ๋น๋ฐ๋ฒํธ๋ก ์ ์ํ๋ค.
์๋ก์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ ์งํํ๋ค.
rancherd-server ์๋น์ค๊ฐ ์คํ๋๋ฉด์ ํ๋์ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ณ ํ๋์ ๋ ธ๋๊ฐ ์ถ๊ฐ ๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ rancher ์ค์น์ ํ๋์ ๋ง์คํฐ ๋ ธ๋๋ฅผ ๊ตฌ์ฑํ๋๋ฐ๊น์ง ์๋ฃํ์ต๋๋ค. ์ดํ์๋ ์์ปค๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ณ ํ์์ ์ํ๋ฉด HA๊ตฌ์ฑ์ ์ํด master๋ ธ๋๋ฅผ ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Rancher ์ฟ ๋ฒ๋คํฐ์ค HA ๊ตฌ์ฑ
์ฟ ๋ฒ๋คํฐ์ค HA ๊ตฌ์ฑ์ ์ํด master ๋ ธ๋๋ฅผ ํ๋๋ ์ถ๊ฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐฉ๋ฒ์ ์์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ฅผ ๋ฑ๋กํ๋ ๊ณผ์ ๊ณผ ์ค์ ์๋ํ ์์ ์ด์ธ์๋ ํฌ๊ฒ ์ฐจ์ด๋๋ ๋ถ๋ถ์ ์์ต๋๋ค.
rancherd๋ฅผ ์ค์นํ๊ฒ๋๋ฉด rancherd-server์ rancherd-agent ์๋น์ค๊ฐ ์๊ธฐ๋๋ฐ rancherd-server๋ก ์คํํด์ค์ผ master ๋ ธ๋๋ก ์ธ์ํฉ๋๋ค.
master node ์ถ๊ฐ
rancher config ์ค์
/etc/rancher/rke2/config.yaml
server: https://master01.centos.test:9345
token: secret
tls-san:
- master02.centos.test
rancherd ์ค์น
$ curl -sfL https://get.rancher.io | sh -
[INFO] finding release for channel latest
[INFO] using v2.5.6 as release
[INFO] downloading checksums at https://github.com/rancher/rancher/releases/download/v2.5.6/sha256sum.txt
[INFO] downloading tarball at https://github.com/rancher/rancher/releases/download/v2.5.6/rancherd-amd64.tar.gz
[INFO] verifying installer
[INFO] unpacking tarball file
rancherd-server ์๋น์ค ์คํ
$ systemctl start rancherd-server
$ journalctl -eu rancherd-server -f
...
...
3์ 11 07:01:34 master02.centos.test rancherd[9784]: time="2021-03-11T07:01:34-05:00" level=info msg="Handling backend connection request [master02.centos.test]"
Rancher ํด๋ฌ์คํฐ ์ ํ > Nodes
์ ์์ ์ผ๋ก ๋๋ฒ์งธ master๊ฐ ์ฌ๋ผ์จ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Roles์ ์ญํ ์ ๋ดค์๋ etcd์ Control Plane์ ์ญํ ์ ๊ฐ๊ณ ์๋ค๋ฉด master node๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ฐฐํฌ๋๊ฒ์ ๋๋ค.
Worker ๋ ธ๋ ํด๋ฌ์คํฐ ์ถ๊ฐ
Worker ๋ ธ๋๋ rancherd-server๊ฐ ์๋ rancherd-agent ์๋น์ค๋ฅผ ์คํํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก rancher config์ ๋ํ ๋ถ๋ถ๊ณผ agent๋ก ์คํํ๋๊ฒ ์ด์ธ์๋ ์ค์น ๋ด์ฉ์ด ๋์ผํ๋ค.
Worker node ์ถ๊ฐ
rancher config ์ค์
/etc/rancher/rke2/config.yaml
server: https://master01.centos.test:9345
token: secret
worker์ ๊ฒฝ์ฐ tls-san์ ๋ํ ์ ๋ณด๋ ๊ธฐ์ ํ์ง ์๊ณ server์ token๋ง ์ง์ ํฉ๋๋ค.
rancherd ์ค์น
$ curl -sfL https://get.rancher.io | sh -
[INFO] finding release for channel latest
[INFO] using v2.5.6 as release
[INFO] downloading checksums at https://github.com/rancher/rancher/releases/download/v2.5.6/sha256sum.txt
[INFO] downloading tarball at https://github.com/rancher/rancher/releases/download/v2.5.6/rancherd-amd64.tar.gz
[INFO] verifying installer
[INFO] unpacking tarball file
rancherd-agent ์๋น์ค ์คํ
$ systemctl start rancherd-agent
$ journalctl -eu rancherd-agent -f
...
...
3์ 11 07:26:59 worker01.centos.test rancherd[8940]: time="2021-03-11T07:26:59-05:00" level=info msg="labels have been set successfully on node: worker01.centos.test"
Rancher ํด๋ฌ์คํฐ ์ ํ > Nodes
woker๋ ธ๋๊ฐ ์ถ๊ฐ๋๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ ํ์ํ ๋ ธ๋ ์ ๋งํผ ํด๋ฌ์คํฐ์ ์ถ๊ฐํ์ฌ rancher๋ฅผ ํตํด์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ HA ๊ตฌ์ฑ์ ํ ์ ์๋ค.
ํ์๋ง ๋์ฒ๋ฐฉ๋ฒ
์ธ๋ถ๋ก ํต์ ์ด ๊ฐ๋ฅํ ํ๊ฒฝ์ด๋ผ๋ฉด ์์ ๋ด์ฉ๋๋ก ํฌ๊ฒ ๋ฌธ์ ์์ด ์ค์น๊ฐ ๊ฐ๋ฅํ ๊ฒ๋๋ค. ํ์ง๋ง... ๋๋ถ๋ถ์ ํ๋ก๋์ ํ๊ฒฝ์ ํ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ ์ ํ๋๋ ๋ถ๋ถ์ด ๋ง์ต๋๋ค. ์ฌ์ค ์์ ํ ํ์๋ง์์ Kubernetes์ Rancher๋ฅผ ์ค์นํด๋ณด์ง๋ ์์์ง๋ง... ๋ง์ฝ ์ธ๋ถ๋ก ํต์ ๊ฐ๋ฅํ ํ๋ก์๊ฐ ์๋ค๋ฉด ํ๋ก์ ์ค์ ์ผ๋ก ํ์ ์ค์น๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
rancherd ์ค์น๋ฅผ ์ํ ํ๋ก์ ์ค์
rancherd๋ฅผ ์ค์นํ๋๋ฐ curl ๋ช ๋ น์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ centos ์ด์์ฒด์ ์ ๋ํ ํ๋ก์๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค. ์ฆ, ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํด์ ํ๋ก์ ์ค์ ์ ํ๊ฒ๋๋ฉด ํ๋ก์๋ฅผ ํตํด ์ธ๋ถ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
$ export HTTP_PROXY=<proxy address>:<proxy port>
$ export HTTPS_PROXY=<proxy address>:<proxy port>
$ export NO_PROXY=<exclude ip1>,<exclude ip2>...
ํ๋ก์์ ์์ธ๊ฐ ํ์ํ ์์ดํผ๋ฅผ ์ง์ ํ๊ณ ์ธ๋ถ ํต์ ์ผ๋ก rancherd๋ฅผ ์ค์นํ๋ค.
rancherd ์๋น์ค ์คํ์ ํ์ํ ํ๋ก์ ์ค์
rancherd ์๋น์ค๋ฅผ ์คํํ ๋ docker hub๋ฅผ ํตํด ํ์ํ ์ด๋ฏธ์ง๋ค์ ๋ฐ๊ฒ๋๋ค. ๊ทธ๋์ ์ธ๋ถ ํต์ ์ด ๋ถ๊ฐ๋ฅํ๋ฉด rancherd๋ฅผ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ํ ์ ์์ต๋๋ค. ํ๋ก์๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ OS ๋จ์ ํ๊ฒฝ๋ณ์๊ฐ ์๋ ์๋น์ค ๋ฐ๋ชฌ ์ค์ ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
/usr/local/lib/systemd/system/rancherd-server.service
/usr/local/lib/systemd/system/rancherd-agent.service
๊ฐ๊ฐ ์ญํ ์ ๋ง๊ฒ ๋ง๋ ์๋น์ค์ ๊ตฌ๋ ์ค์ ์ ๋ณ๊ฒฝํ๋ค.
...
...
Environment="HTTP_PROXY=<proxy address>:<proxy port>"
Environment="HTTPS_PROXY=<proxy address>:<proxy port>"
Environment="NO_PROXY=<exclude ip1>,<exclude ip2>..."
ํด๋น Environment๋ฅผ ์ถ๊ฐํด์ ์๋น์ค ๊ตฌ๋ ์ ํ๋ก์๋ฅผ ํตํด docker hub์์ ํ์ํ ์ด๋ฏธ์ง๋ค์ ๋ฐ์ ์ฌ ์ ์์ต๋๋ค.
๋๊ธ