k3sのインストールと設定ガイド

Dockerのインストール

systemctl start docker

k3sのインストール

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

ダッシュボードのインストール

k3s kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml

ダッシュボードのRBAC設定

重要: 本ガイドで作成されるadmin-userはダッシュボードで管理権限を持ちます。

以下のリソースマニフェストファイルを作成します:

dashboard.admin-user.yml

[root@localhost ~]# cat dashboard.admin-user.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

dashboard.admin-user-role.yml

[root@localhost ~]# cat dashboard.admin-user-role.yml
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: kubernetes-dashboard

admin-user設定をデプロイします:

sudo k3s kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

Bearerトークンの取得

sudo k3s kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'

ダッシュボードへのリモートアクセス方法1: ポートフォワーディング

  1. MongoDBをインストールします
  2. kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-deployment.yaml
    
  3. ポッドを確認します
  4. [root@localhost ~]# kubectl get pods
    NAME READY STATUS RESTARTS AGE
    mongo-75f59d57f4-mmp98 1/1 Running 1 (2m55s ago) 6m7s
    
  5. デプロイメントを確認します
  6. [root@localhost ~]# kubectl get deployment
    NAME READY UP-TO-DATE AVAILABLE AGE
    mongo 1/1 1 1 6m53s
    
  7. レプリカセットを確認します
  8. [root@localhost ~]# kubectl get replicaset
    NAME DESIRED CURRENT READY AGE
    mongo-75f59d57f4 1
    
  9. ネットワーク上でMongoDBを公開するServiceを作成します
  10. kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-service.yaml
    
  11. mongoサービスを確認します
  12. [root@localhost ~]# kubectl get service mongo
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    mongo ClusterIP 10.43.159.130 <none> 27017/TCP 27s
    
  13. ポートを確認します
  14. [root@localhost ~]# kubectl get pod mongo-75f59d57f4-mmp98 --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
    27017
    
  15. ローカルポートをポッドのポートに転送します
  16. kubectl port-forward mongo-75f59d57f4-mmp98 28015:27017
    

別のターミナルを開き、以下を実行します:

nc -w 3 -v 127.0.0.1 28015

エラーが発生した場合は、socatをインストールします:

yum install socat

次に、以下のコマンドでポートフォワーディングを再試行します:

kubectl port-forward --address 0.0.0.0 mongo-75f59d57f4-mmp98 28015:27017

ダッシュボードのポートを確認します:

kubectl get pod kubernetes-dashboard-576cb95f94-xk8hl --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}' -n kubernetes-dashboard

出力: 8443

ダッシュボードのポートを転送します:

kubectl port-forward --address 0.0.0.0 kubernetes-dashboard-576cb95f94-xk8hl -n kubernetes-dashboard 30010:8443

ファイアウォールを停止します:

systemctl stop firewalld

ダッシュボードへのリモートアクセス方法2: NodePort

  1. recommended.yamlを修正し、サービスタイプをNodePortに変更します

修正されたrecommended.yamlの抜粋:

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31001
  selector:
    k8s-app: kubernetes-dashboard

変更したファイルを適用します:

kubectl apply -f recommended.yaml

サービスを確認します:

[root@localhost ~]# kubectl get service -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard NodePort 10.43.195.198 <none> 443:31001/TCP 3h19m
dashboard-metrics-scraper ClusterIP 10.43.32.76 <none> 8000/TCP 3h19m

ブラウザで https://[ノードのIPアドレス]:31001 にアクセスします

認証には以下のトークンを使用します:

kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'

タグ: k3s Kubernetes Docker dashboard rbac

5月17日 18:39 投稿