サービス紹介
、各ポッドでは、そこでの生活サイクルをkubernetes、障害が発生した場合にポッドは、ポッドポッドコントローラを破壊し、(新しいポッドを作成するポッドポッドコントローラの容量拡張)と同様の置換を作成する可能性があります。そのため、各新しいポッドがIPを再取得します、ポッドがIPサービスを介して取得し信頼性がないと言うことができます。
固定されたドメイン・ネーム・サービスは、後端ポッド上のアルゴリズムによってエージェントへのユーザアクセス要求を受信し、サービス・アクセス・エントリです。ポッドが作成され、サービスへのタイムリーな関連性を破壊されます。
作品紹介は
速やかにマスターにKUBE-apiserverを通知します変更の対象となり、各ノード上の各ノードのノード注意ポッドにkubelet。
ポッドにKUBE-apiserver上の変更を監視する各ノードとリアルタイムでKUBEプロキシは、ローカルのiptables(またはIPVS)を改訂する情報の変更を取得した後、新しいプロキシルールを生成します。
サービス依存の名前解決
CoreDNS(新バージョンK8S)とKUBE-DNS(古いバージョンK8S)
DNSは、クラスタのプラグイン(強く推奨が)はオプションです。DNSサーバのモニタは、各サービスのDNSレコードのセットを作成するには、Kubernetes APIの新しいサービスを作成するための責任があります。DNSクラスタ全体が有効になっている場合、すべての名前解決のために自動的にポッドサービスができるはずです。
例えば、サービスの「私のサービス」の名前があり、それKubernetesクラスタ名前空間には、「私の-service.my-NS」のためのDNSレコードを作成し、「私の-NS」と命名しました。名前空間の「私の-NS」の名前でポッドは、単純にクエリの名前で、「私のサービス」を見つけることができるはずです。別のポッドの名前空間で名前「私の-service.my-NS」として定義する必要があります。これらのクエリの結果は、名前クラスタのIPです
3つの動作モードのサービス
ユーザ空間v1.1のバージョン使用する前に
V1.10前にiptablesのバージョンを使用しての
使用IPVS以降のバージョンv1.11デベロッパー
サービスの種類
- のみプロキシCLUSTERIP +ポートポッドサービスのセットを介して、クラスタIPにランダムに生成されたサービスネットワークセグメントをクラスタ(デフォルトタイプ)の内部にアクセスするためCLUSTERIP。
- Nodeport K8S外部アクセスのためにポッドオープンnodePortポートノードの各クラスタの実行のためのクラスタの外部へのアクセスを指定するために、nodePortのデフォルトの範囲は30000から32767です。このグループのIP + nodeportノードは、プロキシサービスをポッド。(ノードが別のノードにリンクされている場合は、IPアドレスを変更する必要があります)
- ロードバランサのコールのIaaSパブリッククラウドサービスは、クラスタ外のロードバランサを生成し、ロードバランサに対応Nodeportとnodeipを追加し、アクセスが直接ポッド内のノードを打つことができます。
- クラスタ外ExternalNameサービス代行サービス、K8Sクラスタポッドクラスタアクセス外部のサービス
サービスアプリケーションは、
Cluster类型的Service
現在クラスタがポッドのセットがあるK8S
(ラベルセレクタによって)そのプロキシなどの新しいサービスを作成するために、
次のようにしているサービスの定義されたリストを
kind: Service
apiVersion: v1
metadata:
name: ngx-service
spec:
selector:
app: ngx ##选择label为app:ngx的pod建立代理关系
ports:
- protocol: TCP ##代理的协议,可选TCP或者UDP
port: 80 ##service对外服务端口
targetPort: 80 ##Pod上的服务端口
サービスに基づいてリストを作成して、プロキシケースを観察
[root@k8s-master k8s-yaml]# kubectl apply -f ngx-service.yaml
service/ngx-service created
[root@k8s-master k8s-yaml]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d
ngx-service ClusterIP 10.105.184.128 <none> 80/TCP 43s
[root@k8s-master k8s-yaml]# curl 10.105.184.128/hostname.html
ngx-deployment-58d847f49c-9tbwh
[root@k8s-master k8s-yaml]# curl 10.105.184.128/hostname.html
ngx-deployment-58d847f49c-vvnrj
事前にドッキングウィンドウは、良いイメージを構築するために、サービスを提供し、/hostname.html nginxのショーのドッキングウィンドウのホスト名。
代理多服务的cluster类型
定義は、以下のリスト
kind: Service
apiVersion: v1
metadata:
name: ngx-service
spec:
selector:
app: ngx ##选择label为app:ngx的pod建立代理关系
ports:
- name: http
protocol: TCP ##代理的协议,可选TCP或者UDP
port: 80 ##service对外服务端口
targetPort: 80 ##Pod上的服务端口
- name: https
protocol: TCP ##代理的协议,可选TCP或者UDP
port: 443 ##service对外服务端口
targetPort: 443 ##Pod上的服务端口
NodePort类型的Service
定義は、以下のリスト
kind: Service
apiVersion: v1
metadata:
name: ngx-sr-nodeport
spec:
type: NodePort ##虽然为NodePort但仍会为其分配一个ClusterIP
selector:
app: ngx
ports:
- protocol: TCP
port: 80 ##供集群内部使用CluserIP+port访问服务
targetPort: 80 ##Pod上的服务端口
nodePort: 30080 ##供集群外部使用node的IP+nodeport访问服务
サービスに基づいてリストを作成して、プロキシケースを観察
`仍会生成clusterIP,也能提供服务`
[root@k8s-master k8s-yaml]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d
ngx-sr-nodeport NodePort 10.106.74.134 <none> 80:30080/TCP 6s
[root@k8s-master k8s-yaml]# curl 10.106.74.134/hostname.html
ngx-deployment-58d847f49c-9tbwh
[root@k8s-master k8s-yaml]# curl 10.106.74.134/hostname.html
ngx-deployment-58d847f49c-vvnrj
`从集群外的主机访问服务`
[root@192-168-80-121 ~]# curl 192.168.80.147:30080/hostname.html
ngx-deployment-58d847f49c-9tbwh
[root@192-168-80-121 ~]# curl 192.168.80.147:30080/hostname.html
ngx-deployment-58d847f49c-vvnrj
[root@192-168-80-121 ~]# curl 192.168.80.147:30080/hostname.html
ngx-deployment-58d847f49c-9tbwh
外部Service
クラスター(または別のK8Sクラスタまたはクラスタで別の名前空間)外部からのアクセスのためのサービス。エンドポイントを使用するには、セルフサービスの必要性、サービスはspec.selectorを使用する必要はありません。エンドポイントおよびサービスバインディングのためには、あなたが定義する必要があるエンドポイントサービスと同じ名前を。
サービス一覧
kind: Service
apiVersion: v1
metadata:
name: ngx-service
spec:
ports:
- protocol: TCP ##代理的协议,可选TCP或者UDP
port: 80 ##service对外服务端口
targetPort: 80 ##Pod上的服务端口
自己エンドポイントリスト
kind: Service
apiVersion: v1
metadata:
name: ngx-service
subsets:
- address:
- IP:1.2.3.4
ports:
- port:80
Headless Service
リストの後端に、spec.selectorポッドは、直接特定の自己負荷スケジュールで、ユーザに返される:サービスCLUSTERIPは(なしすなわちCLUSTERIP)に設定されていません。
kind: Service
apiVersion: v1
metadata:
name: ngx-service
spec:
selector:
app: ngx ##选择label为app:ngx的pod建立代理关系
clusterIP: None
ports:
- name: http
protocol: TCP ##代理的协议,可选TCP或者UDP
port: 80 ##service对外服务端口
targetPort: 80 ##Pod上的服务端口