オラクルのチーフコンサルタントのk3sの旅:ラップトップでUbuntuとk3sを使用してVMをすばやく起動する

マーク・ラメリクス

彼は1995年にOracleに入社し、現在はOracle Cloud、Kubernetes、Dockerなどに焦点を当てたOracleSOAのチーフコンサルタントです。

私はminikubeを研究しているので、トレーニングとデモンストレーションの理由から、適切な環境が自分のWindowsラップトップにインストールされています。この環境には、Oracle VirtualBoxデバイスにゲストOS、Docker、およびMinikubeがあります。デモ環境では、Vagrantfile、スクリプト、およびKubernetesマニフェスト(ya​​ml)ファイルを使用します。そこで、今回はデモにk3sを使用します。

この記事では、Vagrantを使用して、OracleVirtualBoxデバイスのUbuntuゲストOSにk3sとKubernetesダッシュボードをインストールするための詳細な手順を示します。

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)

  • ラズビアンバスター(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に基づいてゲストマシンを作成および構成します。

以下は出力です(k3sの一部のみが示されています):

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にアップグレードしたので、アップグレードに関連している可能性があります。これが私が見つけた解決策です:

エラー自体は、構成ブロックに名前がないためです。それらを2回実行したくない場合は、同様の名前を付けることで修正できます。

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コマンドを介して)現在のユーザーがvagrantであるためです。

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コマンドに関しては、次のルールが適用されます。

  • 埋め込まれたkubectlCLIを実行します。KUBECONFIG環境変数が設定されていない場合、k3sサーバーノードの起動時に/etc/rancher/k3s/k3s.yamlに作成された構成ファイルを自動的に使用しようとします。

以前に受け取った警告に従って、root権限を持たないユーザーが特定の構成でkubectlを使用できるようにするために:

/etc/rancher/k3s/k3s.yamlを読み取れません。–write-kubeconfig-modeを使用してサーバーを起動し、kube構成権限を変更してください。

したがって、k3sサーバーを特定のkubeconfigモードで起動する必要があります。k3sサーバーオプションwrite-kubeconfig-mode(クライアント)を使用して、このモードでkubeconfigを書き込むことができます[$ K3S_KUBECONFIG_MODE]。

環境変数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)を開き、次のように入力します。vagrantup

次の出力を生成します(k3sに関する部分のみが示されています)。

   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 Web 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)を開いて、次のように入力しました。vagrantup

次の出力を生成します(ダッシュボードに関する部分のみが表示されます)。

  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クラスターが1つのノードで構成されていることがわかります。

ここに写真の説明を挿入

最後に、名前をkube-systemに変更し、ポッドに移動しました。結果は次のとおりです。

ここに写真の説明を挿入

これで、この記事のタスクは完了です。この記事では、Vagrantスクリプトとシェルスクリプトを使用して、Oracle VirtualBoxデバイスのUbuntuゲストOSでk3s、Helm、Kubernetesダッシュボードなどのデモ環境を最初から自動的にセットアップする方法について説明します。k3sは確かに比較的簡単にインストールできます。次のステップでは、実際に使用を開始できます。

おすすめ

転載: blog.csdn.net/qq_42206813/article/details/105136603