关于k8s 使用 Service 控制器对外暴露服务的问题

 更新时间:2022年03月28日 09:06:41   作者:笃北天涯  
这篇文章主要介绍了k8s使用Service控制器对外暴露服务,包括部署deploy,部署 service及查看 service 和 pod 的关系,本文给大家介绍的非常详细,需要的朋友可以参考下

Service 引入主要是解决 Pod 的动态变化,提供统一访问入口:

  1. 防止 Pod 失联,准备找到提供同一个服务的 Pod (服务发现) 
  2. 定义一组 Pod 的访问策略 (负载均衡)

部署 deploy

kubectl apply -f deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: chiyi-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: chiyi-nginx
  template:
    metadata:
      labels:
        app: chiyi-nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

部署 service

kubectl apply -f service.yaml
apiVersion: v1
kind: Service
metadata:
  name: chiyi-nginx
spec:
  selector:
    app: chiyi-nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30002
  type: NodePort

查看 service 和 pod 的关系

kubectl  get ep
curl 10.244.1.58:80

说明:

Service 通过标签关联一组 Pod

Service 为一组 Pod 提供负载均衡能力

[root@k8s-master service]# kubectl get ep
NAME          ENDPOINTS                                      AGE
chiyi-nginx   10.244.1.58:80,10.244.1.59:80,10.244.2.46:80   5m19s
kubernetes    172.17.28.225:6443                             23h
[root@k8s-master service]# curl 10.244.1.58:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
 
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
 
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

查看 service

kubectl  get service
curl 10.101.104.218
[root@k8s-master service]# kubectl get service
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
chiyi-nginx   NodePort    10.101.104.218   <none>        80:30002/TCP   6m3s
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP        23h
[root@k8s-master service]# curl 10.101.104.218
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
 
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
 
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

查看端口

ss -antp |grep 30002
[root@k8s-master service]# ss -antp |grep 30002
LISTEN     0      128          *:30002                    *:*                   users:(("kube-proxy",pid=3544,fd=13))

导出 yaml

kubectl  get service chiyi-nginx -o yaml

筛选 service 关联 pod

kubectl get pods -l app=chiyi-nginx
[root@k8s-master service]# kubectl get pods -l app=chiyi-nginx
NAME                           READY   STATUS    RESTARTS   AGE
chiyi-nginx-5bbf8bff4b-6bwfz   1/1     Running   0          3m58s
chiyi-nginx-5bbf8bff4b-bpvvc   1/1     Running   0          3m58s
chiyi-nginx-5bbf8bff4b-pwwt4   1/1     Running   0          3m58s

扩容测试

kubectl scale deployment chiyi-nginx --replicas=1
kubectl  get service,pods,ep

Service 三种常用类型

  • ClusterIP 集群内部使用,任一节点服务器和 pod 内部都可以访问
  • NodePort 对外暴露应用(端口默认范围:30000-32767),任一节点服务器公网IP+端口号,可在浏览器访问。
  • LoadBalancer 对外暴露应用,适合公有云

到此这篇关于k8s 使用 Service 控制器对外暴露服务的文章就介绍到这了,更多相关k8s对外暴露服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Kubernetes部署可视化地图的十个步骤

    Kubernetes部署可视化地图的十个步骤

    这篇文章主要为大家介绍了十步骤Kubernetes部署的可视化地图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 关于CentOS7日志文件及journalctl日志查看方法

    关于CentOS7日志文件及journalctl日志查看方法

    这篇文章主要介绍了关于CentOS7日志文件及journalctl日志查看方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 关于k8s中subpath的使用详解

    关于k8s中subpath的使用详解

    这篇文章主要介绍了k8s中subpath的使用,文章介绍分为两种情况给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 阿里云kubernetes查找镜像中jar包的方法(docker查看镜像中的jar)

    阿里云kubernetes查找镜像中jar包的方法(docker查看镜像中的jar)

    这篇文章主要给大家介绍了关于阿里云kubernetes查找镜像中jar包的方法,也就是在docker查看镜像中的jar,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • php  redis扩展支持scan命令实现方法

    php redis扩展支持scan命令实现方法

    这篇文章主要介绍了php redis扩展支持scan命令实现方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • K8S部署lnmp项目全过程

    K8S部署lnmp项目全过程

    这篇文章主要介绍了K8S部署lnmp项目全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Kubernetes应用配置管理创建使用详解

    Kubernetes应用配置管理创建使用详解

    这篇文章主要为大家介绍了Kubernetes应用配置管理创建使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • IPVS下CoreDNS滚动更新解析失败原理探究

    IPVS下CoreDNS滚动更新解析失败原理探究

    这篇文章主要为大家介绍了IPVS下CoreDNS滚动更新解析失败原理探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • k8s编排之Deployment知识点详解

    k8s编排之Deployment知识点详解

    这篇文章主要为大家介绍了k8s编排之Deployment知识点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • CentOS 7.9 升级内核 kernel-ml-5.6.14版本的方法

    CentOS 7.9 升级内核 kernel-ml-5.6.14版本的方法

    这篇文章主要介绍了CentOS 7.9 升级内核 kernel-ml-5.6.14版本,默认内核版本为3.10.0,现升级到 5.6.14 版本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10

最新评论