分配外部IP的Kubernetes服务
问题描述:
编辑:我设置的整点是实现(如果可能)以下:分配外部IP的Kubernetes服务
- 我有多个K8S节点
- 当我联系的IP地址(来自我公司的网络),它应该被路由到我的容器/ pod/service /其中之一。
- 我应该能够轻松地设置该IP(就像我的服务.yml定义)
我正在为了一个小Kubernetes群(带内置kubeadm)来评估,如果我可以移动我的码头工人(旧)群设置为k8s。我绝对需要的功能是将IP分配给容器的功能,就像我使用MacVlan一样。
在我目前的泊坞窗的设置,我使用MacVlan指定由我公司的网络,一些容器IP地址,这样我就可以直接到达(不反向代理)一样,如果它是任何物理服务器。我正在努力实现与k8s类似的东西。
我发现:
- 我不得不使用服务
- 我不能使用负载平衡器类型,因为它是唯一兼容的云服务提供商(如GCE或AWS)。
- 我应该使用ExternalIPs
- 入口资源是某种反向代理?
我YAML文件是:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
nodeSelector:
kubernetes.io/hostname: k8s-slave-3
---
kind: Service
apiVersion: v1
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
app: nginx
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
externalIPs:
- A.B.C.D
我跳,我的服务会得到IP A.B.C.D(这是我公司的网络之一)。我的部署正在工作,因为我可以使用它的ClusterIP从k8s群集内部到达我的nginx容器。
我缺少什么?或者至少,我在哪里可以找到关于我的网络流量的信息,以查看数据包是否即将到来?
编辑:
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.96.0.1 <none> 443/TCP 6d
nginx-service 10.102.64.83 A.B.C.D 80/TCP 23h
感谢。
答
你可以尝试KUBE-的keepalived-VIP configurtion路由流量。 https://github.com/kubernetes/contrib/tree/master/keepalived-vip
答
您可以尝试在服务的yaml文件中添加“type:NodePort”,然后您将有一个端口通过Web浏览器或从外部访问它。对我而言,这有帮助。
您确定外部IP提到路由到k8s群集节点吗?另外,当你运行kubectl获得服务时,你会看到什么? –
你可以尝试不指定'type:ClusterIP' –
我增加了'kubectl get svc'输出为EDIT。删除'type:ClusterIP'不会改变任何东西,因为它是默认值。如何检查流量是否进入我的群集?在'kube-proxy'中? –