|NO.Z.00161|——————————|CloudNative|——|KuberNetes&服务发布.V12|——|service.v04|service常用类型|

一、service常用类型:service类型一:ClusterIP:在集群内部使用,也是默认值。
### --- 类型一:ClusterIP:在集群内部使用,也是默认值。

~~~     这个service的地址,在安装的时候不要和公司的网段去重复。
~~~     还有Pod的网段是不建议去重复。
~~~     这个service的地址是基于k8s集群内部去管理的,外部网络是不可以访问的。
~~~     在node节点是可以访问的,pod也是可以访问的,但是k8s外部网络是不可以访问的。
[root@k8s-master01 ~]# kubectl get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
kubernetes           ClusterIP      10.96.0.1       <none>          443/TCP          11d
二、service类型二:ExternalName:通过返回定义的CNAME别名。
### --- 类型二:ExternalName:通过返回定义的CNAME别名。

~~~     在这个ExternalName定义了一个外部的域名,
~~~     解析这个名称nginx-externalname就可以解析到ExternalName对应的dns记录。
~~~     然后就可以访问到它了www.baidu.com
[root@k8s-master01 ~]# cat nginx-externalName.yaml 
    app: nginx-externalname
  name: nginx-externalname
spec:
  type: ExternalName
  externalName: www.baidu.com
[root@k8s-master01 ~]# kubectl get svc     
nginx-externalname   ExternalName   <none>          www.baidu.com   <none>           17m
三、service类型三:NodePort:kube-proxy的节点代理端口
### --- 类型三:NodePort:在所有安装了kube-proxy的节点上打开一个端口,此端口可以代理至后端Pod,
~~~     # 然后集群外部可以使用节点的IP地址和NodePort的端口号访问到集群Pod的服务。
~~~     # NodePort端口范围默认是30000-32767。

~~~     这个dashboard在创建的时候会创建一个service,这个service的类型是NodePort,
~~~     它会会做一个映射,就是在安装了kube-proxy的节点上都会启动一个端口;30000端口
~~~     就是在宿主机上打开了一个端口,这个端口就可以到k8s内部的k8s-service,
~~~     这样就可以通过任何一个宿主机的IP地址,加上端口号就可以访问到我们的服务。
~~~     我们通过这个就可以访问到:https://192.168.1.20:30008/ 
~~~     这个端口可以在apiserver的配置文件中查看到
### --- 查看svc对应的地址及端口

[root@k8s-master01 ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.18.41    <none>        8000/TCP        11d
kubernetes-dashboard        NodePort    10.104.232.53   <none>        443:30008/TCP   11d
[root@k8s-master01 ~]# netstat -antp |grep 30008
tcp        0      0 0.0.0.0:30008           0.0.0.0:*               LISTEN      19452/kube-proxy 
### --- 查看kube-apiserver.service地址范围
~~~     比如之前有一个service,只能在k8s内部去访问, 我们配置更改为外部网络也是可以访问

[root@k8s-master01 ~]# cat /usr/lib/systemd/system/kube-apiserver.service  
      --service-cluster-ip-range=10.96.0.0/12  \
      --service-node-port-range=30000-32767  \     // 这个端口号也是可以更改的
### --- 查看service地址
~~~     之前这个service只能在k8s内部去访问,我们可以更改它的类型。并设置为外部网络可以访问

[root@k8s-master01 ~]#  kubectl get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
nginx-svc            ClusterIP      10.101.145.83   <none>          80/TCP,443/TCP   20h
四、查看nginx-service配置参数
### --- 查看nginx-service配置参数
~~~     我们可以通过31000可以访问到nginx:http://192.168.1.20:31000/:
~~~     输出:Welcome to nginx!

[root@k8s-master01 ~]# kubectl edit svc nginx-svc
spec:
  clusterIP: 10.101.145.83
  clusterIPs:
  - 10.101.145.83
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 31000          // 且为NodePort指定一个端口号,若是不指定,它会随机生成一个。
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  type: NodePort             // 类型更改为NodePort,
[root@k8s-master01 ~]# kubectl get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
nginx-svc            NodePort       10.101.145.83   <none>          80:31000/TCP,443:32765/TCP   20h 
### --- 所以说NodePort也是可以访问到集群内部的一种方式:

~~~     # 使用场景:
~~~     若是你在k8s内部部署了Redis或者mysql,一般情况下这些服务都不会暴露在外,
~~~     因为在集群内部访问笔记安全,但是开发临时性的需要访问到集群内部的Redis或者mysql。
~~~     这个时候可以通过临时性的创建一个NodePort,让它访问一次,访问完之后可以给他关掉。
~~~     当然不建议给你的应用程序直接暴露一个端口号给别人去访问的。
~~~     IP地址+端口号:NodePort的性能是不怎么样的。
五、service类型四:LoadBalancer:使用云提供商的负载均衡器公开服务。
### --- 类型四:LoadBalancer:使用云提供商的负载均衡器公开服务。

~~~     若是你在云服务上话是支持loadbalancer这个格式,把它的TYPE更改为loadbalancer,
~~~     但是这种使用起来是有成本的。
~~~     用的最多的是clusterIP
[root@k8s-master01 ~]# kubectl get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kubernetes           ClusterIP      10.96.0.1       <none>          443/TCP                      11d

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示