Amazon ec2 在aws上使用弹性ip地址公开kubernetes服务

Amazon ec2 在aws上使用弹性ip地址公开kubernetes服务,amazon-ec2,kubernetes,Amazon Ec2,Kubernetes,我试图弄清楚如何使用UDP协议在pod内运行openvpn服务器 由于使用http比使用openvpn连接更容易进行测试,所以我还让nginx容器运行在与openvpn容器相同的pod中 我可以让集群内的一切工作正常,但我无法使用我的弹性ip将此nginx服务公开给Internet 网络是编织的 Kubernetes版本是1.6 我已将service.yaml中的externalIPs字段设置为我的弹性ip地址。我无法使用类型LoadBalancer,因为我的协议是UDP 服务: # kubec

我试图弄清楚如何使用UDP协议在pod内运行openvpn服务器

由于使用http比使用openvpn连接更容易进行测试,所以我还让nginx容器运行在与openvpn容器相同的pod中

我可以让集群内的一切工作正常,但我无法使用我的弹性ip将此nginx服务公开给Internet

网络是编织的

Kubernetes版本是1.6

我已将service.yaml中的externalIPs字段设置为我的弹性ip地址。我无法使用类型LoadBalancer,因为我的协议是UDP

服务:

# kubectl describe service openvpn                              
Name:           openvpn
Namespace:      default
Labels:         name=openvpn
Annotations:        kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"name":"openvpn"},"name":"openvpn","namespace":"default"},"spec":{"externalI...
Selector:       name=openvpn
Type:           NodePort
IP:         100.71.93.74
External IPs:       <my_elastic_ip>
Port:           openvpn 1194/UDP
NodePort:       openvpn 30726/UDP
Endpoints:      100.120.0.1:1194
Port:           http    80/TCP
NodePort:       http    30000/TCP
Endpoints:      100.120.0.1:80
Session Affinity:   None
Events:         <none>
我已经完成了测试,集群内的一切都正常工作

我已经使用AWS控制台手动将弹性ip分配给这个特定实例。所有安全组都已更新


那么,甚至可以使用连接到主机节点的弹性ip连接到kubernetes集群内的pod吗?如果是,怎么做?

您可以尝试
NodePort
键入。通过以下操作,您可以通过
:30080

apiVersion: v1
kind: Service
metadata:
  labels:
    app: app
  name: app-service
  namespace: default
spec:
  ports:
  - name: ext
    nodePort: 30080
    protocol: UDP
    port: 80
  selector:
    app: app
type: NodePort

不使用IP地址,您可以让K8S使用类型:
LoadBalancer
,它将设置一个经典的AWS ELB。从那里,您可以将一个域/子域命名为ELB并以这种方式访问服务

一个简单的例子:

apiVersion: v1
kind: Service
metadata:
  name: MyApp
  labels:
    app: MyApp
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    name: MyApp
  selector:
    app: MyApp
apiVersion: v1
kind: Service
metadata:
  name: MyApp
  labels:
    app: MyApp
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    name: MyApp
  selector:
    app: MyApp