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: ポートフォワーディング
- MongoDBをインストールします
- ポッドを確認します
- デプロイメントを確認します
- レプリカセットを確認します
- ネットワーク上でMongoDBを公開するServiceを作成します
- mongoサービスを確認します
- ポートを確認します
- ローカルポートをポッドのポートに転送します
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-deployment.yaml
[root@localhost ~]# kubectl get pods NAME READY STATUS RESTARTS AGE mongo-75f59d57f4-mmp98 1/1 Running 1 (2m55s ago) 6m7s
[root@localhost ~]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE mongo 1/1 1 1 6m53s
[root@localhost ~]# kubectl get replicaset NAME DESIRED CURRENT READY AGE mongo-75f59d57f4 1
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-service.yaml
[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
[root@localhost ~]# kubectl get pod mongo-75f59d57f4-mmp98 --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
27017
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
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'