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

推薦する

WordPress: インターネットの母国語になる

「いつかそうなるでしょう?」マレンウェッグ氏とCEOのシュナイダー氏は、WordPressで大儲けす...

検索後半:WeChatは大規模な検索を行うか?

先ほど終了したWeChatオープンクラスPROでは、WeChat検索には有望な未来があるという非常に...

ユーザーエクスペリエンスと独創性: 250以上の非オリジナル記事が、高品質で安定したランキングを簡単にもたらします。

オリジナルのウェブサイト コンテンツは、疑似オリジナルまたは直接コピーされたコンテンツよりも確実に優...

Ainameのドメイン名登録動向:2月下旬に1,709のドメイン名が追加

中国IDCレビューネットワークは3月14日に次のように報告した。WebHosting.infoが提供...

extravm: ロシアの VPS、月額 5 ドル、KVM 仮想化/1G メモリ/1 コア (Ryzen 3700X)/15g NVMe/500g トラフィック

extravm についてご存知の方もいるでしょう。同社は主に、OVH コンピュータ ルームのさまざま...

Qvodのサーバーシャ​​ットダウン事件が拡大: 警察が同社に突入したと報道

テンセントテクノロジーニュース、4月22日:Qvodのサーバーのシャットダウンについてオンラインで多...

「アップグレード」という名のもと、クラウドネイティブデータウェアハウスAnalyticDBのコア技術についてお話ししましょう

著者 |ヘンイ背景客室のアップグレードといえば、まず思い浮かぶのはエコノミークラスからビジネスクラス...

Baidu では、クリックとユーザー エクスペリエンスのどちらに重点を置いていますか?

最近最もホットな話題は、Baidu のクリックに関する白熱した議論であり、喜ぶ人もいれば心配する人も...

革新を追求し、協力を促進しましょう!興蘭テクノロジーのデータ伝送セキュリティセミナーが成功裏に終了

総書記のサイバー強国建設に関する重要な思想を徹底的に実行し、国家全体の安全保障観を実践し、発展と安全...

PayPal データサンプル: 中国の「電子商取引の新シルクロード」

世界中の消費者信頼感が低下する中、電子商取引は「Made in China」の新たなシルクロードとな...

Amazon QuickSightについて

Amazon QuickSight は、視覚化を簡単に構築し、アドホック分析を実行し、データからビジ...

ハイブリッドクラウドアプリケーションの導入を数秒でサポートするInspurの最新Yunhai OSの分析

世界の進歩を推進するのは「怠惰な思考」だと言う人もいます。確かに、利便性を追求したIT技術革新はある...

「ネットセレブ営業」ゲームは終了しました! ?

これまでの製品発表と同様に、羅永浩のエイプリルフールの最初のライブストリーミング番組はさまざまな分野...

エンタープライズSEOのワークフローに関する簡単な説明

SEO 企業で働いたことがあるウェブマスターが何人いるかはわかりません。私は以前、医療投資会社で働い...

CN ドメイン名はまだ価値がありますか?

最近のHost Review Networkのドメイン名価格比較ツールからのデータフィードバックから...