5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

k3s+MetalLBの環境を構築してKubernetes-Dashboardをデプロイする

Last updated at Posted at 2019-10-03

はじめに

お手軽&軽量なk8s環境としてお馴染みなk3sを、MetalLBと組み合わせた時にハマったのでメモ。
サンプルとしてKubernetes-DashboardをloadBalancerIPを利用するようにデプロイするところまで書きます。

k3sインストール

k3sには標準でソフトウェアLoadBalancerが実装されており、標準インストールをした状態でMetalLBを追加すると挙動が不安定になります。
そのため、インストール時にk3sのLoadBalancerを無効化しておきます。

$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--no-deploy servicelb" sh -

公式ドキュメントにも記載があります。

#####(Option)手元のMacからkubectlを使う
k3sをインストールしたサーバで以下を実行

$ sudo cp /etc/rancher/k3s/k3s.yaml /tmp/
$ sudo chmod +r /tmp/k3s.yaml 

Mac上で以下を実行(Homebrew導入済みの前提)

$ brew install kubectl
$ mkdir ~/.kube
$ scp <k3sサーバのIP>:/tmp/k3s.yaml ~/.kube/config 
$ sed -i -e 's/127.0.0.1/<k3sサーバのIP>/g' ~/.kube/config 

k3sサーバ上の/tmp/k3s.yamlは適宜削除しておくこと。

MetalLBインストール & 設定

公式サイトのInstallationに沿って実施。
2019/10/04時点ではv0.8.1なので以下の通り。

$ kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml

インストール後、Configurationの内容を見ながらconfig用yamlファイルを作る。
今回は単純にk3sのNodeと同じNWのIPレンジを使いたいだけなので以下のように作成。

metallb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.24.100-192.168.24.199
$ kubectl apply -f metallb-config.yaml

Kubernetes-Dashboardインストール

今回は以下の条件でデプロイします。

  • 個別のIPを割り当て(192.168.24.101を使用します)
  • httpでアクセス
  • アクセス時の認証なし
    セキュリティとか考えなしのガバガバ構成なので、気にする必要がある場合は適宜修正すること。

GithubのReleasesを見て適当なバージョンのyamlを探してダウンロード。
今回はv2.0.0-beta4を利用します。

$ wget -O kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

以下のように修正。

--- kubernetes-dashboard.yaml.orig	2019-10-04 00:37:28.000000000 +0900
+++ kubernetes-dashboard.yaml		2019-10-04 00:48:09.000000000 +0900
@@ -38,8 +38,10 @@
   namespace: kubernetes-dashboard
 spec:
   ports:
-    - port: 443
-      targetPort: 8443
+    - port: 80
+      targetPort: 9090
+  type: LoadBalancer
+  loadBalancerIP: 192.168.24.101
   selector:
     k8s-app: kubernetes-dashboard
 
@@ -160,7 +162,7 @@
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
-  name: kubernetes-dashboard
+  name: cluster-admin
 subjects:
   - kind: ServiceAccount
     name: kubernetes-dashboard
@@ -191,10 +193,10 @@
           image: kubernetesui/dashboard:v2.0.0-beta4
           imagePullPolicy: Always
           ports:
-            - containerPort: 8443
+            - containerPort: 9090
               protocol: TCP
           args:
-            - --auto-generate-certificates
+            # - --auto-generate-certificates
             - --namespace=kubernetes-dashboard
             # Uncomment the following line to manually specify Kubernetes API server Host
             # If not specified, Dashboard will attempt to auto discover the API server and connect
@@ -210,7 +212,7 @@
             httpGet:
-               scheme: HTTPS
+               scheme: HTTP
               path: /
-              port: 8443
+              port: 9090
             initialDelaySeconds: 30
             timeoutSeconds: 30
       volumes:

編集したyamlを利用してデプロイ。

$ kubectl apply -f kubernetes-dashboard.yaml 
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

ブラウザでhttp://192.168.24.101へアクセスするとDashboardが表示されます。
スクリーンショット 2019-10-04 0.56.26.png

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?