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

推薦する

テンセントクラウドが「タレントプラン」を開始、人材育成に参加する企業は100万以上のリソースサポートを享受できる

ポストパンデミック時代において、「新しいインフラ」は「ハイライトの瞬間」を迎えます。業界の観点から見...

モバイルエッジコンピューティングのセキュリティリスク分析とソリューション

ラボガイドモバイル エッジ コンピューティングは、エッジ ノードにクラウド コンピューティング機能を...

技術革新はあらゆる産業に利益をもたらします。 Huawei Cloudは企業がデータの価値を引き出すことを支援します

[51CTO.comからのオリジナル記事]第14次5カ年計画では、デジタル経済の内容が独立した章とし...

仮想デスクトッププロジェクトにおけるサーバー数の簡単な計算方法

デスクトップ クラウドに必要なサーバーの数は、仮想マシンの負荷と密接に関係しています。ユーザー数が比...

2014年第1四半期の国内ブラウザ市場: ChromeがIEの市場シェアを奪い続ける

IDC Review Network (idcps.com) は 4 月 28 日に次のように報告し...

割れ窓理論は、企業がオンラインマーケティングを行う際に3つの点に注意するよう警告している。

インターネット経済は強力な力を発揮しています。今年のダブル11プロモーションでは、天猫だけで132億...

ハイブリッドクラウドの進化と発展

近年、IT の意思決定者や戦略家はクラウド コンピューティングに注目しています。しかし、セキュリティ...

BATの3大チャンネルの初公開作品について、3大初公開作品が一気に完成する様子をご覧ください!

中小企業にとって、アプリマーケットでの最初のリリースは、無視できない重要なプロモーションリソースであ...

ウェブサイトの最適化のための高品質な詳細と強力な攻撃戦略を取得する方法

ウェブサイトの最適化は、基本的にウェブサイト開発の生命線と言えます。ウェブサイトは強力な資本や豊富な...

8684 の苦境の背景にある物語: 弱いチーム、盲目的な拡大、そして資金不足

微博アカウント@互联网那个点事によると、8684が所在する広州天局ネットワークテクノロジー株式会社は...

総合的なウェブサイト診断のプロセスをマスターすれば、他のウェブサイトの「診断と薬の処方」にも役立つでしょう。

SEO技術について長年学んだ経験に基づいて、ウェブサイトの包括的な診断プロセスの手順をまとめ、誰もが...

企業がSEO最適化を効果的に行うには

はじめに:SEO最適化は現在最も費用対効果の高いインターネットマーケティング手法であり、最もホットな...

SEO初心者が知っておくべきこと:検索エンジンに適したウェブサイトのデザイン

ウェブサイトのランキングを向上させるために SEO を実施します。より多くのユーザーに当社の Web...

Kubernetes の可観測性を高める 3 つの優れたツール

適切に管理および実装された可観測性システムは、複雑なシステムのデバッグと修正に使用できるきめ細かい洞...