kubeasz による k8s クラスターの構築 - シングルノードクラスターのデプロイ (AllinOne デプロイ)

1 説明

kubeasz は、高可用性の k8s クラスターを迅速にデプロイするためのツールを提供することに尽力していると同時に、k8s の実践と使用のためのリファレンス ブックになるよう努めています。バイナリ デプロイメントに基づいており、自動化を実現するために ansible プレイブックを使用しています。には、ワンクリックのインストール スクリプトが用意されていますが、インストール ガイドに従って段階的に各コンポーネントをインストールすることもできます。

Kubeasz は、個々のコンポーネントから完全なクラスターを組み立てて、最も柔軟な構成機能を提供し、任意のコンポーネントのほぼすべてのパラメーターを設定できます。同時に、クラスター用に適切に実行されるデフォルト構成のプリセット セットを作成します。大規模クラスターの作成を自動化する BGP ルート リフレクター ネットワーク モード。

2.基本システム構成

  • メモリ2G/ハードディスク30G以上の仮想マシンを用意する
  • Linux オペレーティング システムをインストールするUbuntu16以上或者CentOS7以上
  • 基本的なネットワーク、アップデート元、SSH ログインなどを設定します。

注意: kubeadm や他の k8s ディストリビューションがインストールされている環境は使用せず、クリーンなシステムでインストールを開始してください。

3. ファイルをダウンロードする

  • 例として kubeasz バージョン 3.5.2 を使用して、ツール スクリプト ezdown をダウンロードします。
export release=3.5.2
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
  • ツール スクリプトを使用してダウンロードします (ezdown に関するその他のパラメーターについては、./ezdown を実行して表示します)

kubeasz コード、バイナリ、デフォルトのコンテナ イメージをダウンロードする

# 
./ezdown -D

[オプション] 追加のコンテナー イメージ (繊毛、フランネル、プロメテウスなど) をダウンロードします。

./ezdown -X

[オプション] オフライン システム パッケージをダウンロードします (yum/apt ウェアハウスが使用できない状況に適用されます)

./ezdown -P

上記のスクリプトが正常に実行されると、すべてのファイル (kubeasz コード、バイナリ、オフライン イメージ) が整理され、ディレクトリに配置されます。/etc/kubeasz

  • /etc/kubeaszkubeasz バージョン ${release} のリリース コードが含まれています
  • /etc/kubeasz/bink8s/etcd/docker/cni などのバイナリ ファイルが含まれます
  • /etc/kubeasz/downクラスターのインストールに必要なオフライン コンテナー イメージが含まれています
  • /etc/kubeasz/down/packagesクラスターのインストールに必要な基本的なシステム ソフトウェアが含まれています

4. クラスターをインストールする

  • コンテナ化された実行中のkubeasz
./ezdown -S

...
  • デフォルト構成で aio クラスターをインストールする
docker exec -it kubeasz ezctl start-aio
# 如果安装失败,查看日志排除后,使用如下命令重新安装aio集群
# docker exec -it kubeasz ezctl setup default all

5. インストールの確認

$ source ~/.bashrc
$ kubectl version         # 验证集群版本     
$ kubectl get node        # 验证节点就绪 (Ready) 状态
$ kubectl get pod -A      # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等
$ kubectl get svc -A      # 验证集群服务状态

6. ダッシュボードの使用

このドキュメントは、ダッシュボード バージョン 2.2 および k8s バージョン 1.22 に基づいています。ダッシュボード 1.7 以降では、デフォルトで有効になっている独自のログイン認証メカニズムがあるため、バージョンごとにログインに違いがあります。

  • 古いバージョン (<= 1.6) では、apiserver 経由でアクセスし、apiserver の認証および認可メカニズムを介してダッシュボードのアクセス許可を直接制御することが推奨されています。詳細については、古いバージョンのドキュメントを参照してください
  • 新しいバージョン (>= 1.7) では、独自のログイン インターフェイスを使用し、さまざまなサービス アカウント トークンを使用してダッシュボードへのアクセスを制御できます。

展開する

参考 https://github.com/kubernetes/dashboard

  • api-serverダッシュボードへのアクセスを追加しました
  • サービスを公開するメソッドが追加されNodePort、クラスターの外部でサービスを使用してhttps://NodeIP:NodePort(バージョン 1.6.3 とは異なり、https が http ではないことに注意してください)、ダッシュボードに直接アクセスできるようになりました。

インストールと展開

# ezctl 集成部署组件,xxxx 代表集群部署名
# dashboard 部署文件位于 /etc/kubeasz/clusters/xxxx/yml/dashboard/ 目录
./ezctl setup xxxx 07

導入の検証

# 查看pod 运行状态
kubectl get pod -n kube-system | grep dashboard
dashboard-metrics-scraper-856586f554-l6bf4   1/1     Running   0          35m
kubernetes-dashboard-698d4c759b-67gzg        1/1     Running   0          35m

# 查看dashboard service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard   NodePort    10.68.219.38   <none>        443:24108/TCP                   53s

# 查看pod 运行日志
kubectl logs -n kube-system kubernetes-dashboard-698d4c759b-67gzg

ログイン

ダッシュボードはk8sネイティブUIとして、さまざまなリソース情報を表示でき、さらに変更・追加・削除の権限を持つため、認証やアクセス制御が必要となります。ダッシュボードは、https://NodeIP:NodePortKubeconfig 、 Token という 2 つのログイン方法をサポートしています。

トークントークンログイン (管理者)

ログインするトークン方法を選択し、以下の管理トークン フィールド出力を入力ボックスにコピーします。

# 获取 Bearer Token,找到输出中 ‘token:’ 开头的后面部分
$ kubectl describe -n kube-system secrets admin-user 
Name: dashboard-read-user-token-68g2q
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-read-user
kubernetes.io/service-account.uid: 2aeac11f-5498-491d-832d-bd4e6b307c08
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1350 bytes
namespace: 11 bytes
token:
eyJhbGciOiJSUzI1NiIsImtpZCI6ImpBQzEyelVYNjdwaDRBMm5HbHZLSE5sTTgzTTNQWU5Rak1Ja24tU29ybGcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL
3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc
2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtcmVhZC11c2VyLXRva2VuLTY4ZzJxIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb
3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1yZWFkLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtY
WNjb3VudC51aWQiOiIyYWVhYzExZi01NDk4LTQ5MWQtODMyZC1iZDRlNmIzMDdjMDgiLCJz

注: Chrome ブラウザを使用してアクセスすると、https://NodeIP:NodePortセキュリティ上のリスクが生じ、アクセスできなくなる可能性があります。Firefox ブラウザを変更してセキュリティ例外を設定し、アクセスを続行することができます。上記のヒントによると、ここでの私のアクセスアドレスは次のとおりです: https://172.23.13.168:24108

ブラウザでアクセス

注: Chrome ブラウザを使用して https://NodeIP:NodePort にアクセスすると、セキュリティ リスクにアクセスできないというメッセージが表示される場合があります。[詳細] を選択してアクセスを続行します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

Kubeconfig ログイン (オプション)

Kubeconfig ログイン (管理者) 管理者 kubeconfig ファイルのデフォルトの場所: /root/.kube/config、デフォルトではこのファイルにトークン フィールドはありません。Kubeconfig を使用してログインするには、トークンをファイルに追加する必要があります。完全なファイル形式は次のとおりです。

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdxxxxxxxxxxxxxx
    server: https://192.168.1.2:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: admin
  name: kubernetes
current-context: kubernetes
kind: Config
preferences: {
    
    }
users:
- name: admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRxxxxxxxxxxx
    client-key-data: LS0tLS1CRUdJTxxxxxxxxxxxxxx
    token: eyJhbGcixxxxxxxxxxxxxxxx

付録: kubeasz のクリーンアップ

上記の手順で作成した K8S の開発およびテスト環境をお楽しみください。エラーが発生した場合は、issuesログを確認したり、オンラインで検索したり、送信したりして解決してください。もちろん、クラスターをクリーンアップして再作成することもできます。

ホスト マシンで、次の手順に従ってクリーンアップします。

  • クラスターをクリーンアップするdocker exec -it kubeasz ezctl destroy default
  • ノードを再起動して、残りの仮想ネットワーク カード、ルーティング、その他の情報が確実にクリアされるようにします。

おすすめ

転載: blog.csdn.net/somken/article/details/130061249