1.コンセプト
以前の調査では、展開を通じてポッドのセットを作成して、可用性の高いサービスを提供することができます。各ポッドはIPを割り当てますが、次の問題があります
。1)再構築ポッドの場合ポッドIPは異なります
。2)ポッドIPはクラスター仮想IP内でのみ表示され、外部は
これにアクセスしてこのサービスにアクセスできます。これは困難です。したがって、kubernetesはこの問題を解決するためのサービスを設計しました。
サービスは、同様のポッドの外部アクセスインターフェイスのグループと見なすことができます。サービスの助けを借りて、アプリケーションはサービス検出と負荷分散を簡単に実現できます。
リクエストは最初にサービスに到着し、サービスはタグセレクターに従ってポッドと照合し、次にそれをポッドに転送します。
2、サービスの作成
サービスが作成されると、IPが作成されます。サービスのIPが変更されると、サービスを介してポッドにアクセスするために使用されるIPも変更されます。
- クラスタ内にアクセス可能なサービスを作成する
#暴露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
- クラスターの外部からもアクセスできるサービスを作成する
#上面创建的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端口,可以在本机访问:
- セルビアを削除する
kubectl delete svc svc-nginx1 -n dev
- 設定方法
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
》》》ブロガーは長い間学習体験を更新し、いいねを推薦してフォローします!!!
》》》コメント欄にメッセージを残してください、ありがとうございます!!!