GNU/Linux >> Linux の 問題 >  >> Linux

Kubernetesでサービスを削除する方法

このKubernetesのヒントでは、Kubernetesでサービスを削除する方法について学習します。

Kubernetesサービスとは何ですか?

サービスにより、アプリケーション内外のさまざまなコンポーネント間の通信が可能になります。 Kubernetesサービスは、アプリケーションを他のアプリケーションやユーザーと接続するのに役立ちます。安定した仮想IP(VIP)アドレスを提供します。サービスIPを使用することで、クライアントはポッド内で実行されているコンテナに確実に接続できます。

たとえば、アプリケーションには、ユーザーにフロントエンドの負荷を提供するためのグループやバックエンドプロセスを実行するための他のグループ、外部データソースに接続するための3番目のグループなど、さまざまなセクションで実行されるポッドのグループがあります。

これらのポッドグループ間の接続を可能にするサービスです。クラスタ内で必要な数のサービスを利用できます。

なぜサービスを使用するのですか?

Kubernetesポッドは、クラスターの状態に合わせて作成および破棄されるため、信頼性が低く、永続的ではないリソースです。アプリを実行するためにKubernetesデプロイを作成すると、ポッドが動的に作成および破棄される可能性があります。

すべてのポッドには独自のIPアドレスがあり、そのポッドが破壊されて新しいものが登場する可能性があるため、後で変更される可能性があります。

これは問題につながります。ポッドのセット(「バックエンド」と呼びます)がクラスター内の他のポッド(「フロントエンド」と呼びます)に機能を提供する場合、フロントエンドはどのIPアドレスに接続するかをどのように見つけて追跡しますか、フロントエンドがワークロードのバックエンド部分を使用できるようにしますか?

これが、Kubernetesアーキテクトがサービスと呼ばれるソリューションを考案した理由です。

Kubernetesサービスの削除

まず、kubernetesクラスターで利用可能なサービスを一覧表示します。

このコマンドは、すべての名前空間内で作成されたすべてのサービスを一覧表示します:

[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE     SELECTOR
default       kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP                  24d     <none>
kube-system   kube-dns     ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   64d     k8s-app=kube-dns
webapps       my-dep-svc   ClusterIP   10.100.159.167   <none>        8080/TCP                 2m45s   tier=front-end

my-dep-svc という名前のサービスが表示されます webapps内で作成 名前空間。

その機能をすばやく理解するために、そのサービスについて説明しましょう。

[email protected]:~/pod-create# kubectl describe svc my-dep-svc --namespace=webapps
Name:              my-dep-svc
Namespace:         webapps
Labels:            <none>
Annotations:       Selector:  tier=front-end
Type:              ClusterIP
IP:                10.100.159.167
Port:              <unset>  8080/TCP
TargetPort:        80/TCP
Endpoints:         172.16.213.223:80,172.16.213.5:80
Session Affinity:  None
Events:            <none>

前述したように、サービスはポッドのグループです。このサービスには、これに関連付けられた2つのエンドポイントがある可能性があります。おそらく将来の記事でエンドポイントの関連付けについて詳しく説明します。

サービスmy-dep-svc 仮想IPが割り当てられている10.100.159.167

簡単なデモとして、サービスIP(10.100.159.167)とそのポート(8080)を使用して、これら2つのエンドポイント(ポッド)で実行されているアプリケーションにアクセスしてみましょう。

[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#

Kubernetesサービスについての基本的な考え方はもうわかっていると思います。

現在、Kubernetesでサービスを削除する方法は2つあります。それらを1つずつ見てみましょう。

方法1:kubectldeleteコマンドを使用してサービスを削除します

kubectlコマンドにリソース名を直接指定することで、Kubernetesのサービスを削除できます:

[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted

ここで、すべてのサービスをリストアップすると、次のようになります。

[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
default       kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  24d   <none>
kube-system   kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   64d   k8s-app=kube-dns

方法2:作成されたのと同じYAMLファイルを参照して削除します

サービスmy-dep-svc の元となるYAML構成ファイル 作成されました。

[email protected]:~/pod-create# cat my-dep-svc.yml
apiVersion: v1
kind: Service
metadata:
   name: my-dep-svc
   namespace: webapps
spec:
  selector:
    tier: front-end
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80

次に、サービスの作成に使用したものと同じYAMLファイルを参照してサービスを削除します。

[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted

もう一度すべてのサービスをリストアップします。

[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
default       kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  24d   <none>
kube-system   kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   64d   k8s-app=kube-dns

それでおしまい。 Kubernetesでサービスを削除する方法を学びました。今後ともよろしくお願いいたします。


Linux
  1. Kubernetes内でPodmanを使用する方法

  2. LinuxでSystemdサービスを作成する方法

  3. Kubernetesでポッドを削除する方法[K8sのクイックヒント]

  1. cronジョブを削除する方法

  2. Kubernetesデプロイメントを削除する方法[K8sのクイックヒント]

  3. systemd サービスを停止する方法

  1. KubernetesにJenkinsをインストールする方法

  2. Kubernetesポッドを再起動する方法

  3. KubernetesでMongoDBを実行する方法