(22)Kubernetes-サービス

1.コンセプト

以前の調査では、展開を通じてポッドのセットを作成して、可用性の高いサービスを提供することができます。各ポッドはIPを割り当てますが、次の問題があります
。1)再構築ポッドの場合ポッドIPは異なります
。2)ポッドIPはクラスター仮想IP内でのみ表示され、外部は
これにアクセスしてこのサービスにアクセスできます。これは困難です。したがって、kubernetesはこの問題を解決するためのサービスを設計しました。
サービスは、同様のポッドの外部アクセスインターフェイスのグループと見なすことができます。サービスの助けを借りて、アプリケーションはサービス検出と負荷分散を簡単に実現できます。
ここに画像の説明を挿入
リクエストは最初にサービスに到着し、サービスはタグセレクターに従ってポッドと照合し、次にそれをポッドに転送します。

2、サービスの作成

サービスが作成されると、IPが作成されます。サービスのIPが変更されると、サービスを介してポッドにアクセスするために使用されるIPも変更されます。

  1. クラスタ内にアクセス可能なサービスを作成する
#暴露service
# expose 暴露,就是把上图所示的三个pod暴露出来
# deploy nginx 通过deployment 来寻找pod
# name 名称
# type 类型,ClusterIp这个类型是只有在集群内部才可以访问的
# port service 上的端口
# target-port 对应到pod上的端口
kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIp --port=80 --target-port=80 -n dev
#查询service, service可以简写为svc
kubectl get service -n dev

ここで、サービスのIPであるCLUSTER-IPが生成されます。サービスのライフサイクル中、このアドレスは変更されません。このIPを介して、現在のサービスに対応するポッドにアクセスできます。

curl 10.109.179.231:80
  1. クラスターの外部からもアクセスできるサービスを作成する
#上面创建的service的type类型为ClusterIp,这个ip地址只可以在集群内部访问,如果需要创建集群外部也可以访问的service,需要修改type的类型为NodePort
kubectl expose deploy nginx --name=svc-ningx2 --type=NodePort --port=80 --target-port=80 -n dev
#这时候的port格式80:30539,30539对应的是node节点上的端口,访问node节点的30740会转发到此service的80端口,可以在本机访问:

ここに画像の説明を挿入

  1. セルビアを削除する
kubectl delete svc svc-nginx1 -n dev
  1. 設定方法
    svc-nginx.yamlを作成します
apiVersion: v1
kind: Service
metadata:
	name: svc-nginx
	namespace: dev
spec:
	clusterIp: 10.109.179.231
	ports:
		- port: 80
		  protocol: TCP
		  targetPort: 80
	selector:
		run: nginx
	type: ClusterIp
		

ClusterIpが構成されている場合、ClusterIpは構成なしで構成できます。構成されている場合はipで構成されます。構成されていない場合は、デフォルトでipで構成されます。

#创建service
kubectl create -f svc-nginx.yaml
#删除
kubectl delete -f svc-nginx.yaml

》》》ブロガーは長い間学習体験を更新し、いいねを推薦してフォローします!
》》》コメント欄にメッセージを残してください、ありがとうございます!

おすすめ

転載: blog.csdn.net/qq_41622739/article/details/114223100