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データ分析のやり方

国平先生のSEO理論は、データから始めて科学的かつ制御可能なSEOを行うことです。この概念はSEOを...

国内初となる「クラウドデータベースの選択と満足度調査レポート」を公開!

ガートナーは、クラウドがデータベース市場の将来を支配し、2022 年までにデータベースの 75% が...

xeepi-$2.5/256m メモリ/10g ハードディスク/300g フロー

xeepi (2010 年に設立されたとされている) は、Alipay 決済を正式にサポートすると発...

ゼロコードデータ連携プラットフォーム「Partner Cloud」がB+ラウンドで4,000万ドルの資金調達を実施

最近、ゼロコードアプリケーション構築プラットフォームのPartner Cloudは、著名な投資機関と...

Virmach のニューヨーク データ センターの AMD シリーズ VPS の簡単なレビュー

ニューヨークは、virmach の新しい AMD シリーズ VPS の 9 番目のデータ センターで...

マイクロソフト リサーチ アジア インテリジェント オペレーション: クラウド サービスのインテリジェントな推進力

この疫病は人々の生産や生活の仕方を変えました。共同作業、リモートワーク、オンライン教育などのシナリオ...

長江の真ん中にある「インターネット島」:人口2万人以上の町に400のオンラインストアがオープン

長い長江が静かに流れています。江蘇省の下流域には、川を挟んで向かい合う二つの都市、南は鎮江市、北は揚...

Light Year Forum が閉鎖されたら、Bianniu Forum はどうなるのでしょうか?

国内SEO業界では最近、多くの出来事が起こっており、Baiduアルゴリズムの更新と調整により、SEO...

ケーススタディ: 興味グラフとソーシャルグラフ

1. 興味グラフとソーシャルグラフについて興味グラフとは何か興味グラフとは、「これが好きだ」というこ...

ブランドプロモーションにおける百度ライブラリの魅力

著者は個人的に、最高の SEO はブランディング効果を達成することだと考えています。自分で作った名前...

Microsoft Insights: AI は中国企業のイノベーション、生産性、競争力を 2 倍以上に高める

マイクロソフトとIDCがアジア太平洋地域で実施した調査「未来に備えたビジネス:AIによるアジアの成長...

インフラストラクチャ・アズ・コード (IaC) を 1 つの記事で理解する

Infrastructure-as-Code (IaC) とは、手動のプロセスではなくコードを使用し...

ライブストリーミングeコマースはいつまで人気が続くのでしょうか?

近年、今年最も人気を集めたライブストリーミング電子商取引やプライベートドメイントラフィックなど、トラ...

さらに強力な機能!この効率的なコラボレーションガイドはTencent Meetingで入手できます。

テンセントカンファレンスの応用シナリオがさらに拡張されました。 10月13日、Tencent Mee...

Infrastructure as Code と Platform as Code とは何ですか?読めば明らかになる

Infrastructure as Code (IaC) を使用すると、インフラストラクチャのコンピ...