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つの記事で徹底的に理解する

推薦する

テンセントがクラウドへのビジネス移行を文書化: サーバーレスアーキテクチャアプリケーションのベストプラクティス

ここ2年ほどで、国産のドキュメントSaaS製品が多数登場し、クラウドドキュメントの共同作業はクラウド...

タオバオアライアンスのルール変更がタオバオ顧客に与える影響(第9回)

これは、タオバオアライアンスの規則変更がタオバオアフィリエイトに与える影響に関するシリーズの第9回で...

分析する価値のある競合ウェブサイトとその分析方法について簡単に説明します。

みなさんこんにちは。私はハルビン仮想および現実ウェブサイトデザインです。最近、オンラインでいくつかの...

王通:パートナーを募集するには、この4つのコツを使うことが重要です

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス代理店パートナーを募集す...

SEO トラフィック サイトはどのようにして検索エンジンを通じてトラフィックを取得するのでしょうか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラントラフィックサイトは多くのSEO専門家が...

タオバオも「リトルレッドブック」を作りたい?

Alibaba がコンテンツ作成への取り組みを加速するにつれ、コンテンツ コミュニティは「次元削減攻...

moonvm: 台湾の高トラフィック VPS + 台湾の動的 IP VPS

紹介:moonvm(新商人)は、主に台湾のコンピューター室でKVM仮想化に基づくVPSを運営し、台湾...

ソーシャルマーケティングの革新的なレイアウト、Quxiangfuは正確なトラフィック転換の新しいモデルを開きます

月収10万元の起業の夢を実現するミニプログラム起業支援プラン企業が顧客やトラフィックを引き付けるため...

ランキング最適化のための3つの要素: データ、ユーザー、クリック

ウェブサイトの SEO 担当者として、私たちがすべきことは、ウェブサイトのキーワードを検索エンジンの...

Baidu アルゴリズムのアップグレード後にかつて人気だった SEO ソフトウェアを確認する方法

ソフトウェアは、SEO 作業の負担を軽減する強力な武器です。記事の更新、外部リンクの公開、ランキング...

電子商取引をやっていますか?人間の本質を理解しなければなりません!

SEO にとって、ユーザー エクスペリエンスとは Web サイトのユーザー エクスペリエンスを指しま...

クラウドコンピューティングのオンデマンド利用を実現する方法

クラウド コンピューティングが成熟するにつれて、従来のオフライン シナリオに存在する問題を解決するた...

SEOを行う際に数千万ページを制作・管理する方法

友人の招待により、Taozui は今日、Himalaya SEO が何千万ページものコンテンツをどの...