Kubernetes にアプリケーション (Nginx) をデプロイする方法は 2 つあります。どちらがお好みですか?

Kubernetes にアプリケーション (Nginx) をデプロイする方法は 2 つあります。どちらがお好みですか?

k8s でアプリケーションを公開するには 2 つの方法があります。

  • Kubernetesダッシュボード
  • kubectl コマンドライン

1. ダッシュボード方式

構成の展開: アプリケーション名、コンテナ サイズ、ポッドの数、サービスなどが含まれており、非常に便利です。構成 yaml をセットアップしたくない場合は、簡単にデプロイできます。

「デプロイ」をクリックすると、k8s アプリケーションがデプロイされます。デプロイ後、対応するデプロイメント、ポッド、サービスなどのステータスと情報を確認できます。

  • 展開

  • ポッド

  • サービス

  • モニター

2. コマンドライン方式

1. 名前空間を作成する

vim nginx-namespace.yaml
 apiVersion: v1 #类型为Namespace kind: Namespace #类型为Namespace metadata: name: ns-test #命名空间名称labels: name: label-test #pod标签

埋め込む:

 #创建kubectl create -f nginx-namespace.yaml #查询kubectl get namespace

2.ポッドを作成する

通常、ポッドは直接作成されず、コントローラーを通じて作成されます。デプロイメントはコントローラーの一種です。

 vim nginx-deployment.yaml
 apiVersion: apps/v1 kind: Deployment metadata: namespace: ns-test name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80

埋め込む:

 #创建kubectl create -f nginx-deployment.yaml #查询。查询时需要等待一会,此时会下载镜像需要时间kubectl get deployment -n ns-test #或kubectl get pods -n ns-test

「レプリカ: 3」と表示されているので、ポッドは 3 つあり、各ポッドにはコンテナーが 1 つだけあります。すべて正常に開始されました。

次に、アクセスしたポートにアクセスして表示する方法を見てみましょう。

 kubectl get pods -o wide -n ns-test #-o wide 展开的意思

このとき、仮想 IP ポート経由でアクセスすることができます。

  • カール 10.244.1.43
  • カール 10.244.1.44
  • カール 10.244.1.45

下の図に示すように、クラスター内のどのマシンにも IP 経由で直接アクセスできます。

ここで問題となるのは、仮想 IP が非常に多いため、ポッドが再構築されるたびに仮想 IP が再生成されるので、どうすればいいのかということです。

以下のサービスをご覧ください。

3. サービスを作成する

vim nginx-service.yaml:

 apiVersion: v1 kind: Service metadata: namespace: ns-test name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80

埋め込む:

 kubectl apply -f nginx-service.yaml kubectl get svc nginx-service -o wide -n ns-test

クラスター IP があり、それを介してポート + ポートを前の 3 つのノードの nginx にロードできることがわかります。

もちろん、cluster-ip にアクセスできるのはクラスター内のマシンのみです。 nginxやドメイン名と組み合わせることで、外部への負荷分散アクセスを提供できます。

cluster-ip には負荷分散の機能がありますが、外部ネットワークから k8s によってデプロイされたアプリケーションにアクセスできないことがわかります。では、k8s によってデプロイされたアプリケーションに外部ネットワークから直接アクセスするにはどうすればよいでしょうか?

次のようにサービスを nodeport モードに設定します。

 apiVersion: v1 kind: Service metadata: namespace: ns-test name: nginx-service spec: selector: app: nginx ports: - nodePort: 30000 protocol: TCP port: 80 targetPort: 80 type: NodePort

タイプ: NodePort。ポートを指定する場合は、nodePort: 30000 を追加することもできます。これにより、ホスト ip+nodePort を介して k8s によってデプロイされたアプリケーションにアクセスできるようになります。

埋め込む:

 kubectl apply -f nginx-service.yaml kubectl get svc nginx-service -o wide -n ns-test

ホストの ip+nodePort を使用して nginx に直接アクセスしていることがわかります。

3. 補足知識

1. サービス

Kubernetes サービスには、ClusterIP、NodePort、LoadBalancer、ExternalName の 4 種類があります。サービス仕様の type 属性によって、サービスがネットワークに公開される方法が決まります。

  • ClusterIP タイプのサービスはクラスター内で公開され、クラスター IP アドレスが割り当てられます。ポッドはこの IP アドレスを通じてサービスにアクセスできます。 ClusterIP サービスは、データベース サービスなど、クラスター内でアクセスする必要があるサービスに適しています。
  • NodePort サービスは各ノード上のポートを公開し、クラスター IP アドレスを割り当てます。外部クライアントは <NodeIP>:<NodePort> を介してサービスにアクセスできます。 NodePort タイプのサービスは、Web サービスなど、クラスターの外部からアクセスする必要があるサービスに適しています。
  • LoadBalancer タイプのサービスは、クラスター外部のロード バランサーを使用してサービスを公開します。外部クライアントは、ロード バランサーの IP アドレスを通じてサービスにアクセスできます。 LoadBalancer サービスは、クラスターの外部からアクセス可能で、高可用性が求められるサービスに適しています。通常、LoadBalancer は有料で提供されます。
  • ExternalName タイプのサービスは、サービスを外部のホスト名またはドメイン名にポイントします。ポッドはホスト名またはドメイン名を通じてサービスにアクセスできます。 ExternalName タイプのサービスは、外部サービスにアクセスする必要があるシナリオに適用できます。

<<:  2023年のクラウドコンピューティングのトレンド

>>:  分散一貫性を1つの記事で徹底的に理解する

推薦する

SEO における「必要のない」10 のこと

SEO について一定期間学習した後、多くのウェブマスターはよくある誤解を実践し始めます。 1. タイ...

INXY: Verizon CDN (アジアノードを含む) が 50% オフ、一部の専用サーバーも 50% オフ

inxy の Verizon CDN 事業はアジアでかなりの数のポップがあり、グローバル カバレッジ...

360検索エンジンのリリースはBaiduの8.23メジャーアップデートにつながるでしょうか?

8月16日、360検索エンジンがひっそりとリリースされました。わずか数日で大反響を呼び、インターネッ...

IBM レポート: 在宅勤務は SaaS セキュリティにどのような影響を与えるか?

IBM Security が発表した 2020 年のデータ侵害コストレポートによると、クラウドの使用...

infrenion-$9/Xen/512m メモリ/20g SSD/1T トラフィック/フェニックス/ロンドン

infrenion.com は、2002 年に設立された [これはとんでもない数字です] と主張する...

Google ウェブマスター ツールのデータ エクスポートの文字化け問題を解決する

これはよく知られている SEO ツールです。これを使用すると SEO 効率を大幅に向上させることがで...

losangelesvps: G-port 無制限トラフィック VPS、KVM、年間 27.99 ドル、2.5G メモリ、2 コア、35g SSD

losangelesvps がメッセージを送信しました: 新しいサーバーは e5-2690v2 また...

企業サイトに必要な条件を分析し、コンバージョン率を迅速に向上

企業ウェブサイトのコンバージョン率が比較的低いことは、現在ほとんどの企業が直面している共通の問題であ...

Diggの失敗の暴露:ソーシャルメディアの価値はユーザーにある

アトランティック・マンスリーのオンライン版は本日、かつて人気を博したソーシャルニュースサイト「ディグ...

最大のショッピング割引ウェブサイトは、ねずみ講の疑いで閉鎖されました。ねずみ講の疑いを特定するのは困難です。

新華社によると、浙江省金華市の関係者は、国内最大のショッピング割引サイトである浙江易佳電子商取引有限...

ネットワークマーケティングの有効性評価

オフライン マーケティングと比較したオンライン マーケティングの最大の利点の 1 つは、ほとんどのオ...

Yinke が SEO について簡単に語る: ウェブサイト スパイダーのクローリングを改善する 8 つの方法

SEO 最適化を始めたばかりの方は、検索エンジン スパイダー (検索エンジンが Web ページをクロ...

Sparknode ハイエンドVPS(クラウド)の紹介

Sparknodeは2017年に設立された、プロのVPS運営会社です。簡単に言うと、有名なサーバーレ...