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地址配置给负载均衡服务做后端。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐