kubernetes-5(续) k8s集群服务-NodePort、LoadBalancer、ExternalName

1.NodePort

修改类型为NodePort

在这里插入图片描述

在ClusterIP基础上分一个端口,在宿主机上开放

在这里插入图片描述

宿主机访问,并且满足负载均衡(为了表现负载均衡,我将之前使用的nginx镜像改为了myapp)

在这里插入图片描述

访问ipvs 每个节点上都有这个端口

在这里插入图片描述

node端也可以看到暴露的端口

在这里插入图片描述

2、ExternalName

假如外部的域名变动了,内部跟着变动的东西太多,我们想设置ExternalName,创建一个服务,这个服务可以找到对应的外部的域名,我们内部只要找这个服务,这个服务就能找到外部的域名,外部的域名变化了也没事。

编辑ex-svc.yaml

[root@server2 ~]# cat ex-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: www.westos.org

外部IP是www.westos.org
在这里插入图片描述dig解析
在这里插入图片描述

修改externalName

在这里插入图片描述

dig解析

在这里插入图片描述
已经更新了IP地址而名字没有变化
好处是当外部变化集群内部没有变化

service允许为其分配一个公有IP

编辑exip-svc.yaml文件

[root@server2 ~]# cat exip-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: exip-svc
spec:
  selector:
    app: myapp
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  externalIPs:
  - 172.25.0.100

在ClusterIP的类型上分一个外部地址,外部成员可以访问

在这里插入图片描述

3、LoadBalancer

可以指定一个 LoadBalancer 类型的 Service,他直接给定IP来对外访问。

访问官网有详细说明

https://metallb.universe.tf/installation/

修改文件,支持ARP

kubectl edit configmap -n kube-system kube-proxy

在这里插入图片描述

批量删除之前的kube-proxy,控制器会自动重新建立,更新副本,创建目录。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

官网下载metallb.yaml文件,移动到指定路径

在这里插入图片描述

在server1的私有仓库新建项目

在这里插入图片描述

将镜像上传到私有仓库中


在这里插入图片描述

拉起pod

在这里插入图片描述

发现未就绪

在这里插入图片描述

需要执行以下命令来添加一个密钥

[root@server2 metallb]# kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"

添加成功后,可以看到有一个控制器和三个speaker

在这里插入图片描述

编辑configmap.yaml文件
[root@server2 metallb]# cat config.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data: 
  config: |
    address-pools:      
    - name: default
      protocol: layer2
      addresses:
      - 172.25.10.10-172.25.10.20           ##定义分配的地址池

在这里插入图片描述

编辑lb-svc.yml 文件,建立svc,获取分配ip

apiVersion: v1
kind: Service
metadata:
  name: lb-svc
spec:
  ports:
    - name: http
      port: 80
      targetPort: 80
  selector:
    app: myapp
  type: LoadBalancer

IP已经分配好,当外部服务器访问时可以实现负载均衡。

在这里插入图片描述在这里插入图片描述

在service提交后,Kubernetes就会调用 CloudProvider 在公有云上为你创建一个负载均衡服务,并且把被代理的 Pod 的 IP地址配置给负载均衡服务做后端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要让Kubernetes集群对外访问,需要完成以下步骤: 1. 创建一个Service对象:Service对象是一种Kubernetes资源,用于将一组Pod暴露给集群内或外的其他服务。创建Service对象时,需要指定Service的类型,例如ClusterIP、NodePortLoadBalancerExternalName等。 2. 根据Service类型的不同,进行相应的配置: - ClusterIP:这种类型的Service将创建一个虚拟的Cluster IP地址,用于在集群内部访问服务。如果需要从集群外部访问Service,可以通过KubernetesNodePortLoadBalancer方式。 - NodePort:这种类型的Service将在每个Node上创建一个端口,用于在集群外部访问服务。可以通过在防火墙中打开NodePort所在的端口,实现外部访问Service。 - LoadBalancer:这种类型的Service将创建一个云厂商提供的负载均衡器,用于将流量分发到集群中的Service。需要确保集群所在的云平台支持LoadBalancer功能。 - ExternalName:这种类型的Service将提供一个CNAME记录,用于将Service名称映射到外部名称。 3. 创建Ingress对象(可选):Ingress对象是用于将外部请求路由到集群内部Service的Kubernetes资源。创建Ingress对象时,需要定义Ingress规则以及对应的Service。 4. 配置DNS:如果需要使用域名访问Service,需要在DNS中添加相应的解析记录,将域名映射到Service的IP地址或CNAME记录。 以上是Kubernetes集群对外访问的一般步骤,具体的实现方式还需要根据集群部署的环境和需要访问的Service进行相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值