마크 라 메릭스
그는 1995 년에 Oracle에 입사했으며 현재 Oracle Cloud, Kubernetes, Docker 등에 중점을 둔 Oracle SOA의 수석 컨설턴트입니다.
저는 minikube를 공부하고 있었기 때문에 교육 및 시연을 위해 제 자신의 Windows 노트북에 적합한 환경이 설치되어 있습니다. 환경에는 Oracle VirtualBox 장치에 Guest OS, Docker 및 Minikube가 있습니다. 데모 환경은 Vagrantfile, 스크립트 및 Kubernetes 매니페스트 (yaml) 파일을 사용합니다. 그래서 이번에는 데모를 위해 k3s를 사용하겠습니다.
이 기사에서는 Vagrant의 도움으로 Oracle VirtualBox 장치의 Ubuntu Guest OS에 k3s 및 Kubernetes Dashboard를 설치하는 자세한 단계를 보여줍니다.
k3s 설치
공식 웹 사이트 (k3s.io)의 도입에 따르면 k3s 설치 과정은 오래 걸리지 않을 것입니다.
curl -sfL https://get.k3s.io | sh -
# Check for Ready node,
takes maybe 30 seconds
k3s kubectl get node
설명서에 따르면 다음 명령 (및 환경 변수 INSTALL_K3S_VERSION)을 사용하여 github에서 다운로드 한 특정 버전의 k3를 지정합니다.
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.0.1 sh -
데모 환경을 설정하기 전에 k3s의 요구 사항을 살펴 보겠습니다.
운영 체제
K3는 모든 Linux 버전에서 실행할 수 있어야합니다. 그러나 k3s는 다음 운영 체제 및 후속 비 주요 버전에서 테스트되었습니다.
-
Ubuntu 16.04 (amd64)
-
Ubuntu 18.04 (amd64)
-
Raspbian Buster (armhf)
하드웨어 장비
하드웨어 요구 사항은 배포 규모에 따라 확장됩니다. 권장되는 최소 요구 사항은 다음과 같습니다.
-
RAM : 512MB
-
CPU : 1 핵
k3s의 버전은 작성 당시 최신 버전 v1.0.1을 선택했습니다.
Vagrantfile
운영 체제의 k3s 요구 사항에 따라 Vagrant Box 검색 페이지를 사용하여 Ubuntu 18.04 Vagrant Box (VirtualBox 용)를 검색했습니다.
ubuntu / bionic64 선택
기존 데모 환경에서 Vagrantfile의 내용을 다음과 같이 변경했습니다.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.define "ubuntu_k3s" do |ubuntu_k3s|
config.vm.network "forwarded_port",
guest: 8001,
host: 8001,
auto_correct: true
config.vm.network "forwarded_port",
guest: 9110,
host: 9110,
auto_correct: true
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu k3s"
vb.memory = "8192"
vb.cpus = "1"
args = []
config.vm.provision "shell",
path: "scripts/k3s.sh",
args: args
end
end
end
스크립트 디렉토리에서 다음 내용으로 k3s.sh 파일을 만들었습니다.
#!/bin/bash
echo "**** Begin installing k3s"
#Install
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.0.1 sh -
echo "**** End installing k3s"
Windows 랩톱의 env라는 하위 디렉토리에서 Windows 명령 프롬프트 (cmd)를 열고 다음을 입력합니다.vagrant up
이 명령은 Vagrantfile을 기반으로 게스트 머신을 만들고 구성합니다.
다음은 출력입니다 (k3의 일부만 표시됨).
ubuntu_k3s: **** Begin installing k3s
…
ubuntu_k3s: **** End installing k3s
ubuntu_k3s: **** Begin installing k3s
…
ubuntu_k3s: **** End installing k3s
ubuntu_k3s: **** Begin installing k3s
…
ubuntu_k3s: **** End installing k3s
구성 셸 스크립트가 여러 번 실행되었음을 발견했습니다. 최근 vagrant를 2.2.6으로 업그레이드했기 때문에 업그레이드와 관련이있을 수 있습니다. 내가 찾은 해결책은 다음과 같습니다.
오류 자체는 구성 블록에 이름이 없기 때문입니다. 두 번 실행하지 않으려면 비슷한 이름을 지정하여 수정할 수 있습니다.
config.vm.provision “my shell script”, type: “shell”, ….
그래서 Vagrantfile을 다음과 같이 변경했습니다.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.define "ubuntu_k3s" do |ubuntu_k3s|
config.vm.network "forwarded_port",
guest: 8001,
host: 8001,
auto_correct: true
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu k3s"
vb.memory = "8192"
vb.cpus = "1"
args = []
config.vm.provision "k3s shell script", type: "shell",
path: "scripts/k3s.sh",
args: args
end
end
end
실행중인 컴퓨터를 중지하고 리소스를 제거하기 위해 Windows 명령 프롬프트에서 다음 명령을 사용했습니다.
vagrant destroy
다음 출력을 생성합니다.
ubuntu_k3s: Are you sure you want to destroy the ‘ubuntu_k3s’ VM? [y/N] y
==> ubuntu_k3s: Forcing shutdown of VM…
==> ubuntu_k3s: Destroying VM and associated drives…
이 명령은 Vagrant가 관리하는 실행중인 컴퓨터를 중지하고 컴퓨터 생성 프로세스 중에 생성 된 모든 리소스를 파괴합니다. 이 명령을 실행 한 후 컴퓨터는 이전에 게스트 컴퓨터를 생성 한 적이없는 것처럼 깨끗한 상태 여야합니다.
Windows 랩톱의 env라는 하위 디렉토리에서 Windows 명령 프롬프트 (cmd)를 열고 다음을 입력합니다.vagrant up
ubuntu / bionic64 버전과 관련하여 출력은 다음과 같습니다.
==> ubuntu_k3s: Checking if box ‘ubuntu/bionic64’ version ‘20191218.0.0’ is up to date…
==> ubuntu_k3s: A newer version of the box ‘ubuntu/bionic64’ for provider ‘virtualbox’ is
==> ubuntu_k3s: available! You currently have version ‘20191218.0.0’. The latest is version
==> ubuntu_k3s: ‘20200107.0.0’. Run `vagrant box update` to update.
다음 출력을 생성합니다 (k3의 일부만 표시됨).
ubuntu_k3s: **** Begin installing k3s
ubuntu_k3s: [INFO] Using v1.0.1 as release
ubuntu_k3s: [INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.0.1/sha256sum-amd64.txt
ubuntu_k3s: [INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.0.1/k3s
ubuntu_k3s: [INFO] Verifying binary download
ubuntu_k3s: [INFO] Installing k3s to /usr/local/bin/k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/kubectl symlink to k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/crictl symlink to k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/ctr symlink to k3s
ubuntu_k3s: [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
ubuntu_k3s: [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
ubuntu_k3s: [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
ubuntu_k3s: [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
ubuntu_k3s: [INFO] systemd: Enabling k3s unit
ubuntu_k3s: Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service ? /etc/systemd/system/k3s.service.
ubuntu_k3s: [INFO] systemd: Starting k3s
ubuntu_k3s: **** End installing k3s
ubuntu / bionic64 버전에 대한 경고로 인해 Windows 명령 프롬프트에서 언급 된 명령을 사용했습니다.
vagrant box update
다음 출력을 생성합니다.
==> ubuntu_k3s: Checking for updates to ‘ubuntu/bionic64’
ubuntu_k3s: Latest installed version: 20191218.0.0
ubuntu_k3s: Version constraints:
ubuntu_k3s: Provider: virtualbox
==> ubuntu_k3s: Updating ‘ubuntu/bionic64’ with provider ‘virtualbox’ from version
==> ubuntu_k3s: ‘20191218.0.0’ to ‘20200107.0.0’…
==> ubuntu_k3s: Loading metadata for box ‘https://vagrantcloud.com/ubuntu/bionic64’
==> ubuntu_k3s: Adding box ‘ubuntu/bionic64’ (v20200107.0.0) for provider: virtualbox
ubuntu_k3s: Downloading: https://vagrantcloud.com/ubuntu/boxes/bionic64/versions/20200107.0.0/providers/virtualbox.box
ubuntu_k3s: Download redirected to host: cloud-images.ubuntu.com
ubuntu_k3s:
==> ubuntu_k3s: Successfully added box ‘ubuntu/bionic64’ (v20200107.0.0) for ‘virtualbox’!
나는 vagrant ssh
실행중인 VM 에 연결하고 뭔가를 시작했습니다.
다음으로 Linux 명령 프롬프트에서 다음 명령을 사용했습니다.
kubectl get nodes
다음 출력을 생성합니다.
WARN[2020-01-12T13:36:33.705394309Z] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with –write-kubeconfig-mode to modify kube config permissions
error: error loading config file “/etc/rancher/k3s/k3s.yaml”: open /etc/rancher/k3s/k3s.yaml: permission denied
비고 :
k3s (k3s kubectl get node)의 시작 페이지에 언급 된 명령은 동일한 오류 메시지를 표시합니다. 이 경우 현재 사용자 (whoami 명령을 통해)가 다음과 같기 때문입니다.
k3s가 설치되면 다음 명령을 사용합니다 (문서에서도 찾을 수 있음).
sudo kubectl get nodes
다음 출력을 생성합니다.
NAME STATUS ROLES AGE VERSION
ubuntu-bionic Ready master 10m v1.16.3-k3s.2
문서에 따라 kubeconfig 파일을 /etc/rancher/k3s/k3s.yaml에 작성한 다음 서비스를 자동으로 시작하거나 다시 시작합니다. 설치 스크립트는 k3s 및 kubectl, crictl, k3s-killall.sh 및 k3s-uninstall.sh와 같은 기타 유틸리티를 설치합니다.
다음으로 다음 명령을 사용합니다.
cd /etc/rancher/k3s
ls -latr
다음 출력을 생성합니다.
total 12
-rw——- 1 root root 1052 Jan 12 10:16 k3s.yaml
drwxr-xr-x 2 root root 4096 Jan 12 10:16 .
drwxr-xr-x 4 root root 4096 Jan 12 10:16 ..
다음으로 다음 명령을 사용하여 k3s.yaml 파일의 내용을 봅니다.
sudo cat k3s.yaml
다음 출력을 생성합니다.
apiVersion: v1
clusters:
– cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWekNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFUzT0RneU5ERTVNekFlRncweU1EQXhNVEl4TURFMk16TmFGdzB6TURBeE1Ea3hNREUyTXpOYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFUzT0RneU5ERTVNekJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQk12b3V1YjZTR3N6UVl2LzVyb0lpSE5xbXZ0aUxub2gyQTZzR1hIQyt2OWQKSzkwTVlmV2J2bkozVFhyeEg2Mm5LTDhEU05wcmN4eC9rRXNXM2FpZTV3Q2pJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJSUmlrd0FPcjFVCmJtTlhOcEw3Y1cxaDhRSGg4QnZJQmJKc2RqdGU3Myt4QWlFQXROUG9MTjliVFZpYmxlYW5SNFpKcStKNUxDMmsKeUUwN2daWlk1NURlc25RPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:6443
name: default
contexts:
– context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
– name: default
user:
password: 1f0b266cfdd8e11a9af1a6e262b09746
username: admin
Kubectl 구성
다음으로 구성에 중점을 둡니다.
기본적으로 kubectl은 $ HOME / .kube 디렉토리에서 config라는 파일을 찾습니다. KUBECONFIG 환경 변수를 설정하거나 –kubeconfig 플래그를 설정하여 다른 kubeconfig 파일을 지정할 수 있습니다.
k3s kubectl 명령과 관련하여 다음 규칙이 적용됩니다.
- 임베디드 kubectl CLI를 실행하십시오. KUBECONFIG 환경 변수가 설정되지 않은 경우 k3s 서버 노드를 시작할 때 /etc/rancher/k3s/k3s.yaml에 생성 된 구성 파일을 자동으로 사용하려고합니다.
루트 권한이없는 사용자가 이전에받은 경고에 따라 특정 구성으로 kubectl을 사용할 수 있도록 허용하려면 :
/etc/rancher/k3s/k3s.yaml을 읽을 수 없습니다. –write-kubeconfig-mode를 사용하여 서버를 시작하여 kube 구성 권한을 수정하십시오.
따라서 특정 kubeconfig 모드에서 k3s 서버를 시작해야합니다. k3s 서버 옵션 write-kubeconfig-mode (클라이언트 측)를 사용하여이 모드 [$ K3S_KUBECONFIG_MODE]에서 kubeconfig를 작성할 수 있습니다.
환경 변수 K3S_KUBECONFIG_MODE 사용에 대한 설명서를 살펴보고 다음 예제를 보았습니다.
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE=”644″ sh -s –
chmod 644에 대한 참고 사항 :
Chmod 644 (chmod a + rwx, ux, g-wx, o-wx)는 사용자 (U) / 소유자가 읽고 쓸 수 있지만 실행할 수는 없도록 권한을 설정합니다. 그룹 (G) 및 기타 (O)는 읽을 수 있고 쓰기 및 실행할 수 없습니다.
스크립트 디렉토리에서 k3s.sh 파일을 다음과 같이 변경했습니다.
#!/bin/bash
echo "**** Begin installing k3s"
#Install
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.0.1 K3S_KUBECONFIG_MODE="644" sh -
echo "**** End installing k3s"
간결함을 위해이 블로그부터 명령 vagrant up
앞에 vagrant destroy
명령을 언급 하지 않겠습니다 .
Windows 랩톱의 env라는 하위 디렉터리에서 Windows 명령 프롬프트 (cmd)를 열고 다음을 입력합니다. vagrant up
다음 출력을 생성합니다 (k3에 대한 부분 만 표시됨).
ubuntu_k3s: **** Begin installing k3s
ubuntu_k3s: [INFO] Using v1.0.1 as release
ubuntu_k3s: [INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.0.1/sha256sum-amd64.txt
ubuntu_k3s: [INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.0.1/k3s
ubuntu_k3s: [INFO] Verifying binary download
ubuntu_k3s: [INFO] Installing k3s to /usr/local/bin/k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/kubectl symlink to k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/crictl symlink to k3s
ubuntu_k3s: [INFO] Creating /usr/local/bin/ctr symlink to k3s
ubuntu_k3s: [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
ubuntu_k3s: [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
ubuntu_k3s: [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
ubuntu_k3s: [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
ubuntu_k3s: [INFO] systemd: Enabling k3s unit
ubuntu_k3s: Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service ? /etc/systemd/system/k3s.service.
ubuntu_k3s: [INFO] systemd: Starting k3s
ubuntu_k3s: **** End installing k3s
따라서 k3s가 설치되면 vagrant ssh를 사용하여 Linux 명령 프롬프트를 열고 다음 명령을 사용합니다.
kubectl get nodes
다음 출력을 생성합니다.
NAME STATUS ROLES AGE VERSION
ubuntu-bionic Ready master 49s v1.16.3-k3s.2
다음으로 다음 명령을 사용합니다.
kubectl get pods --all-namespaces
다음 출력을 생성합니다.
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-58fb86bdfd-g68v5 1/1 Running 0 76s
kube-system metrics-server-6d684c7b5-4zrgx 1/1 Running 0 75s
kube-system coredns-d798c9dd-szfg7 1/1 Running 0 76s
kube-system helm-install-traefik-xg2zd 0/1 Completed 0 76s
kube-system svclb-traefik-frjb9 3/3 Running 0 32s
kube-system traefik-65bccdc4bd-rxlv4 1/1 Running 0 32s
다음 명령을 사용하십시오.
cd /etc/rancher/k3s
ls -latr
출력 생성 :
total 12
-rw-r–r– 1 root root 1052 Jan 12 14:40 k3s.yaml
drwxr-xr-x 2 root root 4096 Jan 12 14:40 .
drwxr-xr-x 4 root root 4096 Jan 12 14:40 ..
이제 k3s.yaml의 권한을 변경했습니다.
Kubernetes 웹 UI (대시 보드)
이제 대시 보드를 통해 Kubernetes 클러스터와 상호 작용 해 보겠습니다.
기본적으로 대시 보드 UI는 배포되지 않습니다. 배포하려면 다음 명령을 실행하십시오.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
kubectl 명령 줄 도구를 사용하여 다음 명령을 실행하여 대시 보드에 액세스 할 수 있습니다.
kubectl proxy
Kubectl은 다음 위치에서 대시 보드를 제공합니다.
http : // localhost : 8001 / api / v1 / namespaces / kube-system / services / https : kubernetes-dashboard : / proxy /
UI는 명령을 실행하는 컴퓨터에서만 액세스 할 수 있습니다. 더 많은 옵션은 kubectl proxy –help를 참조하세요.
데모 환경의 설정으로 인해 단순히 kubectl 프록시를 사용하는 것이 작동하지 않으므로 다시 사용합니다.
kubectl proxy --address='0.0.0.0' </dev/null &>/dev/null &
스크립트 디렉토리에서 다음 내용으로 dashboard.sh 파일을 생성했습니다.
#!/bin/bash
echo "**** Begin preparing dashboard"
echo "**** Install Kubernetes Dashboard"
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
kubectl proxy --address='0.0.0.0' /dev/null &
echo "**** End preparing dashboard"
Vagrantfile의 내용을 다음과 같이 변경했습니다.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.define "ubuntu_k3s" do |ubuntu_k3s|
config.vm.network "forwarded_port",
guest: 8001,
host: 8001,
auto_correct: true
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu k3s"
vb.memory = "8192"
vb.cpus = "1"
args = []
config.vm.provision "k3s shell script", type: "shell",
path: "scripts/k3s.sh",
args: args
args = []
config.vm.provision "dashboard shell script", type: "shell",
path: "scripts/dashboard.sh",
args: args
end
end
end
Linux 명령 프롬프트에서 다음을 입력하십시오. exit
그런 다음 Windows 명령 프롬프트 (cmd)를 열고 다음을 입력했습니다. vagrant up
다음 출력을 생성합니다 (대시 보드에 대한 부분 만 표시됨).
ubuntu_k3s: **** Begin preparing dashboard
ubuntu_k3s: **** Install Kubernetes Dashboard
ubuntu_k3s: namespace/kubernetes-dashboard created
ubuntu_k3s: serviceaccount/kubernetes-dashboard created
ubuntu_k3s: service/kubernetes-dashboard created
ubuntu_k3s: secret/kubernetes-dashboard-certs created
ubuntu_k3s: secret/kubernetes-dashboard-csrf created
ubuntu_k3s: secret/kubernetes-dashboard-key-holder created
ubuntu_k3s: configmap/kubernetes-dashboard-settings created
ubuntu_k3s: role.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: deployment.apps/kubernetes-dashboard created
ubuntu_k3s: service/dashboard-metrics-scraper created
ubuntu_k3s: deployment.apps/dashboard-metrics-scraper created
ubuntu_k3s: **** End preparing dashboard
Linux 명령 프롬프트에서 다음 명령을 사용했습니다.
kubectl get pods --all-namespaces
다음 출력을 생성합니다.
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-58fb86bdfd-g68v5 1/1 Running 0 13m
kube-system metrics-server-6d684c7b5-4zrgx 1/1 Running 0 13m
kube-system coredns-d798c9dd-szfg7 1/1 Running 0 13m
kube-system helm-install-traefik-xg2zd 0/1 Completed 0 13m
kube-system svclb-traefik-frjb9 3/3 Running 0 12m
kube-system traefik-65bccdc4bd-rxlv4 1/1 Running 0 12m
kubernetes-dashboard dashboard-metrics-scraper-566cddb686-5wvcx 1/1 Running 0 9m38s
kubernetes-dashboard kubernetes-dashboard-7b5bf5d559-tn4rh 1/1 Running 0 9m38s
브라우저에 다음 URL을 입력합니다.
http : // localhost : 8001 / api / v1 / namespaces / kubernetes-dashboard / services / https : kubernetes-dashboard : / proxy /
다음 인터페이스가 표시됩니다.
따라서 토큰이 필요합니다. ServiceAccount 및 ClusterRoleBinding 매니페스트 파일을 만드는 예제 (대시 보드 관련)를 찾았습니다. 먼저 서비스 사용자를 생성하고 cluster-admin 역할에 대한 역할 바인딩을 완료합니다 (이 역할은 기본적으로 k3s에 존재하지 않음).
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
이 예에서는 대시 보드에 로그인 할 수있는 토큰을 얻는 방법에 대한 정보도 제공합니다.
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
위의 예를 기반으로 다음 콘텐츠로 serviceaccount-k3s.yaml 파일을 yaml 디렉터리에 추가했습니다.
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
yaml 디렉터리의 clusterrolebinding-k3s.yaml 파일에 다음을 추가했습니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
결과적으로 kubectl -n kube-system get secret 명령에는 긴 키 정보 목록이 포함됩니다. 따라서 대시 보드에 로그인 할 수있는 토큰을 쉽게 결정할 수 있도록 다른 네임 스페이스를 사용하고 싶습니다. Kubernetes 대시 보드를 설치할 때 네임 스페이스가 생성 되었기 때문에 kubernetes-dashboard 네임 스페이스를 사용하기로 선택했습니다. 위의 출력을 참조하십시오.
스크립트 디렉토리에서 dashboard.sh 파일을 다음과 같이 변경했습니다.
#!/bin/bash
echo "**** Begin preparing dashboard"
echo "**** Install Kubernetes Dashboard"
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
#Create Helm chart
echo "**** Create Helm chart"
cd /vagrant
cd helmcharts
rm -rf /vagrant/helmcharts/k3s-chart/*
helm create k3s-chart
rm -rf /vagrant/helmcharts/k3s-chart/templates/*
cp /vagrant/yaml/*k3s.yaml /vagrant/helmcharts/k3s-chart/templates
# Install Helm chart
cd /vagrant
cd helmcharts
echo "**** Install Helm chart k3s-chart"
helm install k3s-release ./k3s-chart
# Wait 30 seconds
echo "**** Waiting 30 seconds ..."
sleep 30
#List helm releases
echo "**** List helm releases"
helm list -d
#List secrets
echo "**** List secrets with namespace kubernetes-dashboard"
kubectl get secrets --namespace kubernetes-dashboard
echo "**** Describe secret with namespace kubernetes-dashboard"
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
kubectl proxy --address='0.0.0.0' /dev/null &
echo "**** End preparing dashboard"
Helm 버전 3.0.2를 사용하고 있기 때문에 몇 가지 변경이 필요합니다. 다음 명령을 사용하여 변경된 버전을 확인합니다.
helm version
출력 생성 :
version.BuildInfo{Version:”v3.0.2″, GitCommit:”19e47ee3283ae98139d98460de796c1be1e3975f”, GitTreeState:”clean”, GoVersion:”go1.13.5″}
helm install ./k3s-chart –name k3s-release를 사용하면 다음과 같은 결과가 나타납니다.
Error: unknown flag: –name
따라서 다음과 같이 변경했습니다. helm install k3s-release ./k3s-chart
Helm을 사용하고 싶기 때문에 Vagrantfile의 내용을 다음과 같이 변경했습니다.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.define "ubuntu_k3s" do |ubuntu_k3s|
config.vm.network "forwarded_port",
guest: 8001,
host: 8001,
auto_correct: true
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu k3s"
vb.memory = "8192"
vb.cpus = "1"
args = []
config.vm.provision "k3s shell script", type: "shell",
path: "scripts/k3s.sh",
args: args
args = []
config.vm.provision "helm shell script", type: "shell",
path: "scripts/helm.sh",
args: args
args = []
config.vm.provision "dashboard shell script", type: "shell",
path: "scripts/dashboard.sh",
args: args
end
end
end
Windows 명령 프롬프트 (cmd)를 다시 열고 다음을 입력했습니다. vagrant up
다음 출력을 생성합니다 (대시 보드에 대한 부분 만 표시됨).
ubuntu_k3s: **** Begin preparing dashboard
ubuntu_k3s: **** Install Kubernetes Dashboard
ubuntu_k3s: namespace/kubernetes-dashboard created
ubuntu_k3s: serviceaccount/kubernetes-dashboard created
ubuntu_k3s: service/kubernetes-dashboard created
ubuntu_k3s: secret/kubernetes-dashboard-certs created
ubuntu_k3s: secret/kubernetes-dashboard-csrf created
ubuntu_k3s: secret/kubernetes-dashboard-key-holder created
ubuntu_k3s: configmap/kubernetes-dashboard-settings created
ubuntu_k3s: role.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
ubuntu_k3s: deployment.apps/kubernetes-dashboard created
ubuntu_k3s: service/dashboard-metrics-scraper created
ubuntu_k3s: deployment.apps/dashboard-metrics-scraper created
ubuntu_k3s: **** Create Helm chart
ubuntu_k3s: Creating k3s-chart
ubuntu_k3s: **** Install Helm chart k3s-chart
ubuntu_k3s: NAME: k3s-release
ubuntu_k3s: LAST DEPLOYED: Tue Jan 14 19:53:24 2020
ubuntu_k3s: NAMESPACE: default
ubuntu_k3s: STATUS: deployed
ubuntu_k3s: REVISION: 1
ubuntu_k3s: TEST SUITE: None
ubuntu_k3s: **** Waiting 30 seconds …
ubuntu_k3s: **** List helm releases
ubuntu_k3s: NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ubuntu_k3s: k3s-release default 1 2020-01-14 19:53:24.329429114 +0000 UTC deployed k3s-chart-0.1.0 1.16.0
ubuntu_k3s: **** List secrets with namespace kubernetes-dashboard
ubuntu_k3s: NAME
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s: TYPE
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s:
ubuntu_k3s: DATA AGE
ubuntu_k3s: default-token-l2nr4 kubernetes.io/service-account-token 3 34s
ubuntu_k3s: kubernetes-dashboard-token-54p9k kubernetes.io/service-account-token 3 34s
ubuntu_k3s: kubernetes-dashboard-certs Opaque 0 34s
ubuntu_k3s: admin-user-token-trfdn kubernetes.io/service-account-token 3 31s
ubuntu_k3s: kubernetes-dashboard-csrf Opaque 1 34s
ubuntu_k3s: kubernetes-dashboard-key-holder Opaque 2 34s
ubuntu_k3s: **** Describe secret with namespace kubernetes-dashboard
ubuntu_k3s: Name: admin-user-token-trfdn
ubuntu_k3s: Namespace: kubernetes-dashboard
ubuntu_k3s: Labels:
ubuntu_k3s: Annotations: kubernetes.io/service-account.name: admin-user
ubuntu_k3s: kubernetes.io/service-account.uid: b65dc46c-0833-4fcf-b833-cfec45139764
ubuntu_k3s:
ubuntu_k3s: Type: kubernetes.io/service-account-token
ubuntu_k3s:
ubuntu_k3s: Data
ubuntu_k3s: ====
ubuntu_k3s: token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlhyREtIa21HdlhBQVd2Nm9kTGtJU3RUTnlWWTNJaHI2blNPb3J5eWRwR2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXRyZmRuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJiNjVkYzQ2Yy0wODMzLTRmY2YtYjgzMy1jZmVjNDUxMzk3NjQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.bJBCZmV7oIUuljz9-I1oO71js-mAOZHc4wLaUwPayYAqAzx_kTM_oFwSEBtieFxmwYP2CTP2QJZM6G8OBGvLyUiQyRumaTavFo51Rh-eW9wSXO24p6Sf7BdQRaJsjS4lnInDGd1Ksrv-Az6LI10rrIJXHgI7jz1wNmSdSqk3OHGXgioKZL0qjlrwgS6UviTe-0geMFxvdGUogUWvShmQkR-sGRSfACYX8-RZdFSc3wRWsoIVo_4NME-q8uNm79BaP5RbPAC-z-2amVHJQUUtgs_88pY-Qu-iiDqUpC823pHYkjB65w5RICjjqlKIrWqAptT35fBFSOfrUKf_Oy483A
ubuntu_k3s: ca.crt: 526 bytes
ubuntu_k3s: namespace: 20 bytes
ubuntu_k3s: **** End preparing dashboard
랩톱의 브라우저에서 토큰 값을 입력하고 (위에 표시된대로) "로그인"버튼을 클릭했습니다.
Kubernetes 대시 보드를 열고 기본 네임 스페이스를 선택하십시오.
다음으로 "노드"를 클릭합니다. 여기에서 Kubernetes 클러스터가 하나의 노드로 구성되어 있음을 알 수 있습니다.
마지막으로 네임 스페이스를 kube-system으로 변경하고 Pod로 이동 한 결과 결과는 다음과 같습니다.
이제이 기사의 작업이 완료되었습니다! 이 기사에서는 Vagrant 및 셸 스크립트를 사용하여 Oracle VirtualBox 장치의 Ubuntu Guest OS에서 k3s, Helm 및 Kubernetes Dashboard를 포함한 데모 환경을 처음부터 자동으로 설정하는 방법을 설명합니다. K3s는 실제로 설치가 비교적 쉽습니다. 다음 단계에서 실제로 사용을 시작할 수 있습니다.