[クラウド ネイティブ] [k8s] 初心者から熟練者まで運用とメンテナンスを学ぶ 83 日目 ------- Helm に基づいた Kubernetes アプリケーションの管理

ステージ4

日時: 2023 年 8 月 18 日

参加者:クラス全員

内  容:

Helm に基づいて Kubernetes アプリケーションを管理する

目次

1. Kubernetesの導入方法

(1) ミニクベ

(2) バイナリパッケージ

(3)クビーズム

2. kubeadm に基づいて K8S クラスターをデプロイします

(1) 環境整備

(2) Kubernetesクラスタのデプロイ

(3) ダッシュボードUIのインストール

(4) メトリクスサーバーサービスの導入

(5) Helm アプリケーション パッケージ マネージャーの概要

(6) Helm アプリケーション パッケージ マネージャーのデプロイメント


1. Kubernetesの導入方法

Kubernetesをデプロイする3つの方法を正式に提供

(1)ミニクベ

        Minikube は、Kubernetes を試すユーザーや日々の開発を行うユーザー向けに、Kubernetes の単一ポイントをローカルですばやく実行できるツールです。運用環境では使用できません。

公式ドキュメント:インストール ツール | Kubernetes

(2)バイナリパッケージ

        公式リリースから配布バイナリ パッケージをダウンロードし、各コンポーネントを手動でデプロイして Kubernetes クラスタを形成します。この方法は現在、主にエンタープライズの実稼働環境で使用されています。

ダウンロードリンク:

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#v1113

(3)クビーズム

        Kubeadm は、Kubernetes クラスターの迅速なデプロイメントに特化して Google が立ち上げたツールです。クラスターのデプロイメントプロセス中に、kubeadm init を使用してマスターノードを初期化し、その後、kubeadm join を使用して他のノードをクラスターに追加できます。

        1. Kubeadm は、簡単な構成で最小限の可用性クラスターを迅速に実行できます。当初の設計では、各ノード環境の段階的な準備ではなく、クラスターを迅速にインストールして実行することに重点が置かれていました。同様に、kubernetes クラスターで使用されるさまざまなプラグイン (kubernetes クラスター WEB ダッシュボード、prometheus モニタリング クラスター ビジネスなど) は、kubeadm の焦点では​​ありません。kubeadm アプリケーションの目的は、すべてのデプロイの基礎として機能し、kubeadm を通じて kubernetes クラスターのデプロイを容易にすることです。

2. Kubeadm のシンプルかつ迅速な導入は、次の 3 つの側面に適用できます。

·新規ユーザーは、kubeadm から始めて Kubernete をすばやく構築して理解できます。

·Kubernetes に精通したユーザーは、kubeadm を使用してクラスターを迅速に構築し、アプリケーションをテストできます。

·大規模プロジェクトでは、kubeadm を他のインストール ツールと併用して、より複雑なシステムを形成できます。

・公式文書:

クビーズ | Kubernetes
kubeadm のインストール | Kubernetes

2. kubeadm に基づいて K8S クラスターをデプロイします

(1)環境整備

IPアドレス

CPU名

コンポーネント

192.168.100.131

k8sマスター

kubeadm、kubelet、kubectl、docker-ce

192.168.100.132

k8s-node01

kubeadm、kubelet、kubectl、docker-ce

192.168.100.133

k8s-node02

kubeadm、kubelet、kubectl、docker-ce

注: すべてのホスト構成で推奨される CPU: 2C+ メモリ: 2G+

1.ホストの初期化設定

すべてのホスト構成でファイアウォールと selinux を無効にする

[root@localhost ~]# setenforce 0

[root@localhost ~]# iptables -F

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# systemctl stop NetworkManager

[root@localhost ~]# systemctl disable NetworkManager

[root@localhost ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

2.ホスト名を設定し、ホストをバインドします。ホスト名が異なると、ホスト名も異なります。

[root@localhost ~]# ホスト名 k8s-master

[root@localhost ~]# bash

[root@k8s-master ~]# cat << EOF >> /etc/hosts

192.168.100.131 k8s-マスター

192.168.100.132 k8s-node01

192.168.100.133 k8s-node02

終了後

[root@localhost ~]# ホスト名 k8s-node01

[root@k8s-node01 ~]# cat /etc/hosts

[root@localhost ~]# ホスト名 k8s-node02

[root@k8s-node02 ~]#cat /etc/hosts

3.ホスト構成の初期化

[root@k8s-master ~]# yum -y install vim wget net-tools lrzsz

[root@k8s-master ~]# swapoff -a

[root@k8s-master ~]# sed -i '/swap/s/^/#/' /etc/fstab

[root@k8s-master ~]# cat << EOF >> /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

終了後

[root@k8s-master ~]# modprobe br_netfilter

[root@k8s-master ~]# sysctl -p

4. Docker環境のデプロイ

1) Kubernetes によるコンテナのオーケストレーションには Docker のサポートが必要なため、Docker 環境を 3 つのホストにそれぞれデプロイします。

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2) YUM を使用して Docker をインストールする場合は、Alibaba の YUM ソースを使用することをお勧めします。

[root@k8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3) キャッシュをクリアする

[root@k8s-master ~]# yum すべてクリーン && yum makecache fast

4) ドッカーを起動します

[root@k8s-master ~]# yum -y install docker-ce

[root@k8s-master ~]# systemctl start docker

[root@k8s-master ~]# systemctl docker を有効にする

5)イメージ アクセラレータ (すべてのホスト構成)

[root@k8s-master ~]# cat << END > /etc/docker/daemon.json

{ "レジストリミラー":[ "https://nyakyfun.mirror.aliyuncs.com" ]

}

終わり

6) ドッカーを再起動します

[root@k8s-master ~]# systemctl daemon-reload

[root@k8s-master ~]# systemctl restart docker

(2) Kubernetesクラスタのデプロイ

1. コンポーネントの紹介

3 つのノードすべてに次の 3 つのコンポーネントをインストールする必要があります。

kubeadm:すべてのコンポーネントがコンテナとして実行されるようにツールをインストールします。

kubectl:クライアント接続 K8S API ツール

kubelet : ノードノード上で実行され、コンテナーを起動するために使用されるツール

2. Alibaba Cloud yum ソースを構成する

YUM を使用して Kubernetes をインストールする場合は、Alibaba の YUM ソースを使用することをお勧めします。

[root@k8s-master ~]# ls /etc/yum.repos.d/

[root@k8s-master ~]# cat > /etc/yum.repos.d/kubernetes.repo

3. kubelet kubeadm kubectl をインストールします

すべてのホスト構成

[root@k8s-master ~]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

[root@k8s-master ~]# systemctl kubelet を有効にする

[root@k8s-master ~]# kubectl バージョン

        kubelet をインストールした直後では、systemctl start kubelet を使用して起動することはできません。正常に起動するには、ノードに参加するかマスターとして初期化する必要があります。

4. init-config.yaml を構成する

        Kubeadm は多くの構成アイテムを提供します。Kubeadm 構成は、Kubernetes クラスターの ConfigMap に保存されます。これらの構成は、複雑な構成アイテムの管理を容易にするために構成ファイルに書き込むこともできます。Kubeadm 構成コンテンツは、kubeadm config コマンドを通じて構成ファイルに書き込まれます。

マスター ノードにインストールします。マスターは 192.168.100.131 に設定されます。次の手順に従って、デフォルトの init-config.yaml ファイルを作成します。

[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml

init-config.yaml 構成

[root@k8s-master ~]# cat init-config.yaml

5. マスターノードのインストール

1)必要なイメージをプルします

[root@k8s-master ~]# kubeadm config イメージ リスト --config init-config.yaml

[root@k8s-master ~]# kubeadm config イメージ pull --config init-config.yaml

2)マスターノードのインストール

[root@k8s-master ~]# kubeadm init --config=init-config.yaml //K8Sのインストールを初期化します

3)プロンプトに従います

デフォルトでは、kubectl は、実行されるユーザーのホーム ディレクトリの下の .kube ディレクトリで構成ファイルを検索します。これは、.kube/config への初期化中の [kubeconfig] ステップで生成された admin.conf のコピーです。

[root@k8s-master ~]# mkdir -p $HOME/.kube

[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

        Kubeadm には、初期インストールではネットワーク プラグインが含まれていません。つまり、初期化後に関連するネットワーク機能がありません。たとえば、k8s-master ノードで表示されるノード情報は「準備完了」状態であり、ポッドのCoreDNSではサービス等の提供ができません。

6. ノードのインストール

1)マスターインストール時のプロンプト情報に従って

[root@k8s-node01 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28 502b29c241563e93b4ae

[root@k8s-master ~]# kubectl ノードを取得

[root@k8s-node02 ~]# kubeadm join 192.168.100.131:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:78bdd0f01660f4e84355b70aa8807cf1d0d6325b0b28 502b29c241563e93b4ae

マスター操作:

[root@k8s-master ~]# kubectl ノードを取得

        前述の通り、k8s-masterの初期化時にはネットワーク関連の設定が無いためノードnodeと通信できず、ステータスは「NotReady」となっています。ただし、kubeadm join によって追加されたノードは、すでに k8s-master で確認できます。

7. フランネルを取り付けます

        マスター ノードが NotReady になるのは、ネットワーク プラグインが使用されておらず、現時点でノードとマスター間の接続が正常ではないためです。現在、最も人気のある Kubernetes ネットワーク プラグインには、Flannel、Calico、Canal、Weave がありますが、ここでは flannel を使用することを選択します。

すべてのホスト:

マスターは kube-flannel.yml をアップロードし、すべてのホストは flannel_v0.12.0-amd64.tar、cni-plugins-linux-amd64-v0.8.6.tgz をアップロードします。

[root@k8s-master ~]# dockerload < flannel_v0.12.0-amd64.tar

プラグインのアップロード:

[root@k8s-master ~]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master ~]# cp flannel /opt/cni/bin/

マスターは kube-flannel.yml をアップロードします

マスターホスト構成:

[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

[root@k8s-master ~]# kubectl ノードを取得

[root@k8s-master ~]# kubectl get pods -n kube-system

すでに準備完了状態

(3)ダッシュボードUIのインストール

1.ダッシュボードの展開

ダッシュボードの github ウェアハウス アドレス: https://github.com/kubernetes/dashboard

コード ウェアハウスには、インストール例を示す関連デプロイメント ファイルがあり、これらを直接取得して直接デプロイできます。

[root@k8s-master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

        デフォルトでは、このデプロイメント ファイル内に kubernetes-dashboard という名前の別の名前空間が作成され、kubernetes-dashboard はこの名前空間の下にデプロイされます。ダッシュボード イメージは公式の Docker ハブから取得されるため、イメージ アドレスを変更する必要はなく、公式から直接取得するだけです。

2. ポート設定を開く

        デフォルトでは、ダッシュボードは外部へのアクセス ポートを開きません。ここでの操作を簡素化するには、nodePort を直接使用してそのポートを公開し、サービス部分の定義を変更します。

すべてのホストのイメージをダウンロードする

[root@k8s-master ~]# docker pull kubernetesui/dashboard:v2.0.0

[root@k8s-master ~]# docker pull kubernetesui/metrics-scraper:v1.0.4

[root@k8s-master ~]# vim 推奨.yaml

3. 権限の設定

スーパー管理者権限を設定する

[root@k8s-master ~]# vim 推奨.yaml

[root@k8s-master ~]# kubectl apply -f recommend.yaml

[root@k8s-master ~]# kubectl get pods -n  kubernetes-dashboard

[root@k8s-master ~]# kubectl get pods -A -o Wide

4. アクセストークンの設定

Google Chrome を使用して https://192.168.100.131:32443 へのアクセスをテストします。

        上記の画面が表示され、kubeconfig ファイルまたはトークンを入力する必要があることがわかります。実際、ダッシュボードをインストールすると、デフォルトでサービスアカウントが作成され、kubernetes-dashboard 用のトークンが生成されました。

次のコマンドを通じて sa トークンを取得できます。

[root@k8s-master ~]# kubectl description Secret -n kubernetes-dashboard $(kubectl get Secret -n kubernetes-dashboard |grep kubernetes-dashboard-token | awk '{print $1}') |grep token | awk '{print $2}'

取得したトークンを入力します

クラスターの概要を表示します。

クラスターの役割を表示します。

クラスターの名前空間を表示します。

クラスターノードを表示します。

クラスターポッドを表示します。

(4)メトリクスサーバーサービスのデプロイメント

1. Node ノードにイメージをダウンロードします。

heapster は、K8S のリソース指標取得ツールである metrics-server に置き換えられました。

すべてのノード上で

[root@k8s-node01 ~]# docker pull bluersw/metrics-server-amd64:v0.3.6

[root@k8s-node01 ~]# docker tag bluersw/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

2. Kubernetes APIサーバーの起動パラメータを変更する

kube-apiserver 項目に次の構成オプションを追加すると、変更後、apiserver が自動的に再起動されます。

[root@k8s-master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml

3. マスターにデプロイする

[root@k8s-master ~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

インストール スクリプトを変更します。

[root@k8s-master ~]# vim コンポーネント.yaml

[root@k8s-master ~]# kubectl create -fComponents.yaml

結果が表示されるまで 1 ~ 2 分待ちます

[root@k8s-master ~]# kubectl トップノード

ダッシュボード インターフェイスに戻ると、CPU とメモリの使用状況が表示されます。

(5) Helm アプリケーション パッケージ マネージャーの概要

1. なぜ Helm が必要なのでしょうか?

        Kubernetes にデプロイされたアプリケーション サービスは、デプロイメント、サービスなどを含む特定のリソースの説明で構成されます。各リソース オブジェクトは、独自のファイルに保存されるか、構成ファイルにまとめて書き込まれます。次に、kubectl apply –f Demon.yaml コマンドを使用してデプロイします。

        ビジネス システムが 1 つまたは複数のサービスのみで構成されている場合は、上記の展開管理方法で十分です。

        複雑なビジネス システムの場合、上記のようなリソース記述ファイルが多数存在します。たとえば、マイクロサービス アーキテクチャ アプリケーションには、アプリケーションを構成するサービスが 10 から数十も含まれる場合があります。アプリケーションを更新またはロールバックする必要がある場合、関連する多数のリソース オブジェクト ファイルを変更および維持する必要がある場合があり、アプリケーションを編成および管理するこの方法では不十分になります。

        さらに、公開されたアプリケーションのバージョンの管理と制御が欠如しているため、Kubernetes でのアプリケーションのメンテナンスと更新は多くの課題に直面しており、主に次の問題に直面しています。

これらのサービスを全体として管理する方法

これらのリソース ファイルを効率的に再利用する方法

アプリケーションレベルのバージョン管理はサポートされていません

2. Helm の概要

        Helm は Kubernetes パッケージ管理ツールで、yum/apt-get などの Linux のパッケージ マネージャーと同様に、Helm は以前にパッケージ化された yaml ファイルを kubernetes に簡単にデプロイできます。

Helm には 3 つの重要な概念があります。

helm:主に Kubernetes アプリケーション チャートの作成、パッケージ化、公開、管理に使用されるコマンド ライン クライアント ツール。

チャート:アプリケーションの記述に使用されるディレクトリまたは圧縮パッケージ。k8s リソース オブジェクトの記述に使用される一連のファイルで構成されます。

リリース:チャートベースのデプロイメント エンティティ チャートが Helm によって実行されると、対応するリリースが生成され、実際に実行中のリソース オブジェクトが k8s に作成されます。

ヘルムの特徴

        kubernetes 用に開発されたパッケージ マネージャー。各パッケージは Chart と呼ばれ、Chart はディレクトリです (通常、ディレクトリはパッケージ化され、簡単に送信できるように名前-バージョン.tar.gz 形式の 1 つのファイルに圧縮されます。およびストレージ)

        アプリケーション発行者は、Helm を使用してアプリケーションのパッケージ化、アプリケーションの依存関係の管理、アプリケーションのバージョンの管理、およびソフトウェア ウェアハウスへのアプリケーションの公開を行うことができます。

        Helm を使用すると、ユーザーは Kubernetes の Yaml 構文を理解してアプリケーション デプロイメント ファイルを作成する必要がなくなり、Helm を通じて必要なアプリケーションを Kubernetes にダウンロードしてインストールできるようになります。

        Helm は、Kubernetes 上のアプリケーションのソフトウェアのデプロイ、削除、アップグレード、ロールバックのための強力な機能を提供します

3. Helm V3 の変更点

2019 年 11 月 13 日、Helm チームは Helm v3 の最初の安定バージョンをリリースしました。このバージョンの主な変更点は次のとおりです。

1) アーキテクチャの変更

最も明らかな変更は Tiller の削除です。

2) リリース名は異なる名前空間で再利用可能

3) Chart を Docker ミラーウェアハウス Harbor にプッシュするサポート

4) JSONSchema を使用してグラフの値を検証する

5) その他

Helm CLI の個々の名前が変更され、他のパッケージ マネージャーと文言をより適切に調整できるようになりました。

helm delete の名前が `helm uninstall に変更されました

「helm Inspection」は「helm show」に名前変更されました

「helm fetch」は「helm pull」に名前変更されました

ただし、上記の古いコマンドは引き続き使用できます。

チャート リポジトリをローカルに一時的に構築するために使用される helmserve コマンドは削除されました。

ネームスペースを自動的に作成する

        Helm 2 は、存在しない名前空間にディストリビューションを作成するときに名前空間を作成しました。Helm 3 は他の Kubernetes オブジェクトの動作に従い、名前空間が存在しない場合はエラーを返します。

requirements.yaml は不要になり、依存関係は chart.yaml で直接定義されます。

(6) Helm アプリケーション パッケージ マネージャーのデプロイメント

1. Helm クライアント ツールをデプロイする

Helm クライアントのダウンロード アドレス: Releases · helm/helm · GitHub

ソース コード パッケージを解凍し、/usr/bin/ ディレクトリに移動します。

[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# cd linux-amd64/

[root@k8s-master linux-amd64]# ls

[root@k8s-master linux-amd64]# mv helm /usr/bin/

[root@k8s-master ~]# helm #helm コマンドが利用可能かどうかを確認する

2. Helm でよく使用されるコマンド

注文

説明する

作成する

グラフを作成して名前を指定する

依存

チャートの依存関係を管理する

得る

リリースをダウンロードします。利用可能なサブコマンド: all、hook、manifest、notes、values

歴史

リリース履歴を取得する

インストール

チャートをインストールする

リスト

リリースのリスト

パッケージ

チャート ディレクトリをチャート アーカイブ ファイルにパックする

引く

リモート リポジトリからチャートをダウンロードし、ローカルに抽出します# helm pullsteady/mysql --untar

リポジトリ

チャート リポジトリの追加、一覧表示、削除、更新、インデックス付けを行います。利用可能なサブコマンド: add、index、list、remove、update

ロールバック

以前のバージョンからのロールバック

検索

キーワードに基づいてグラフを検索します。利用可能なサブコマンド: Hub、repo

見せる

チャートの詳細を表示します。利用可能なサブコマンド: all、chart、readme、values

状態

名前付きバージョンのステータスを表示する

テンプレート

ローカルレンダリングテンプレート

アンインストール

リリースをアンインストールする

アップグレード

リリースを更新する

バージョン

Helm クライアントのバージョンを確認する

3.国内チャートウェアハウスの設定

Microsoft ウェアハウス ( Index of /kubernetes/charts/ ) を強くお勧めします。基本的に、公式 Web サイト上のすべてのチャートはここで入手できます。

Alibaba Cloud Warehouse ( https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

公式ウェアハウス ( Kubeapps | Home ) 公式チャートウェアハウスは中国では少し使いにくいです。

チャートリポジトリの追加

[root@k8s-master ~]# Helm リポジトリは安定した http://mirror.azure.cn/kubernetes/charts を追加します

[root@k8s-master ~]# helm リポジトリ追加 aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[root@k8s-master ~]# helm リポジトリ更新

構成されたグラフ リポジトリを表示する

[root@k8s-master ~]# Helm リポジトリ リスト

リポジトリを削除します。

[root@k8s-master ~]# helm リポジトリを削除して aliyun

[root@k8s-master ~]# Helm リポジトリ リスト

4. チャートを使用して Nginx アプリケーションをデプロイする

1)チャートを作成する

[root@k8s-master ~]# helm create nginx

[root@k8s-master ~]# ツリー nginx/

詳細な説明:

nginx/

§── charts #他のパッケージの charts ファイルに依存します

§── Chart.yaml # IP アドレス、バージョン情報などを含むチャートの説明ファイル。

§── templates # k8s テンプレートファイルを格納するディレクトリ

│ §──deployment.yaml #k8s デプロイメントリソースの yaml テンプレートを作成する

│ §── _helpers.tpl #アンダースコアで始まるファイルは他のテンプレートから参照可能

│ §── hpa.yaml #サービスリソースの設定 CPUメモリ

│ §── ingress.yaml # サービスドメイン名にアクセスするための Ingress 設定

│ §──NOTES.txt #Description ファイル、helm インストール後にユーザーに表示される内容

│ §── serviceaccount.yaml

│ §── service.yaml #kubernetes サービス yaml テンプレート

│ └── テスト

│ └── test-connection.yaml

━──values.yaml #テンプレートファイルに使用する変数

2) values.yaml のサービス タイプを NodePort に変更します。

[root@k8s-master ~]# cd nginx/

[root@k8s-master nginx]# vim value.yaml

3)チャート タスクをインストールします (コマンドの最後のドットに注意してください)

[root@k8s-master nginx]# helm install -f value.yaml

4)リリースを見る

[root@k8s-master nginx]# helm ls #または helm list

5)リリースの削除

[root@k8s-master nginx]# helm delete nginx

6)ポッドのステータスを確認する

[root@k8s-master nginx]# kubectl ポッドを取得

[root@k8s-master nginx]# kubectl get pod -o Wide

7) SVC ステータスを確認する

[root@k8s-master nginx]# kubectl get svc

192.168.100.132:30281 にアクセスしてください

5. チャートを使用して Tomcat アプリケーションをデプロイする

[root@k8s-master ~]# helm create tomcat

Tomcatの作成

[root@k8s-master ~]# cd tomcat/

deployment.yamlファイルとservice.yamlファイルを変更する

[root@k8s-master tomcat]# vim templates/deployment.yaml

[root@k8s-master tomcat]# vim templates/service.yaml

リリースの作成

[root@k8s-master tomcat]# helm install tomcat 。

リリースを見る

[root@k8s-master tomcat]# helm ls

ポッドと SVC を表示する

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# kubectl get pod -o Wide

[root@k8s-master tomcat]# kubectl get svc

テストページを用意する

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp

アクセステスト:

192.168.100.132:32092 にアクセスしてください

192.168.100.133:32092 にアクセスしてください

消去

[root@k8s-master tomcat]# helm delete tomcat

[root@k8s-master tomcat]# helm ls

アップグレード(yamlファイル変更後に再適用)

[root@k8s-master tomcat]# helm install tomcat 。

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# vim templates/deployment.yaml

[root@k8s-master tomcat]# helm upgrade tomcat 。

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# helm ls

ロールバック

[root@k8s-master tomcat]# helm rollback tomcat 1

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl get pod

6. 変数を使用してテンプレートをレンダリングする

テンプレートが正常かどうかをテストする

[root@k8s-master tomcat]# helm install --dry-run tomcat 。

value.yaml ファイルで変数を定義する

[root@k8s-master tomcat]# cat value.yaml

[root@k8s-master tomcat]# cat templates/deployment.yaml

[root@k8s-master tomcat]# cat templates/service.yaml

        deployment.yaml ファイルservice.yamlファイル内の変数は、事前に定義され、values.yaml で参照される値です。

Release.Name は、helm インストール後の名前を表します。

[root@k8s-master tomcat]# helm delete tomcat

テンプレート ディレクトリ内の冗長なファイルをすべて削除し、2 つのテスト ファイルのみを残します。

[root@k8s-master tomcat]# ls テンプレート/

[root@k8s-master tomcat]# helm install -f value.yaml

[root@k8s-master tomcat]# helm ls

 

公開ステータスの表示

[root@k8s-master tomcat]# Helm status tomcat

[root@k8s-master tomcat]# kubectl get pod

ポッドの詳細を表示する

[root@k8s-master tomcat]# kubectl 説明ポッド tomcat-dp-67df6cd4d6-78pxc

おすすめ

転載: blog.csdn.net/2302_77582029/article/details/132348710