我正在试图弄清楚如何使用UDP协议运行在pod中运行的openvpn服务器。
由于使用http比使用openvpn连接更容易测试,因此我还在与openvpn-container相同的pod中运行nginx-container。
我可以在集群内部工作,但我无法使用弹性IP将此nginx服务暴露给Internet。
网络正在编织。
Kubernetes版本是1.6
我已将service.yaml中的externalIPs-field设置为弹性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>
端点
# kubectl get endpoints openvpn
NAME ENDPOINTS AGE
openvpn 100.120.0.1:80,100.120.0.1:1194 20h
我已经完成了https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/,一切都在群集内部进行。
我已使用AWS控制台手动将弹性IP分配给此特定实例。所有安全组都会更新。
甚至可以使用连接到该主机节点的弹性IP连接到kubernetes集群内的pod?如果是,怎么做?
答案 0 :(得分:1)
您可以让K8S使用类型:LoadBalancer
来设置Classic AWS ELB,而不是使用IP地址。从那里你可以CNAME域/子域到ELB并以这种方式访问服务?
一个简单的例子:
apiVersion: v1
kind: Service
metadata:
name: MyApp
labels:
app: MyApp
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: MyApp
selector:
app: MyApp
答案 1 :(得分:0)
您可以尝试NodePort
类型。通过以下内容,您可以通过<node-ip>: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