gpt4 book ai didi

kubernetes - 使用 Docker 驱动程序启动 Minikube 并将其绑定(bind)到主机网络

转载 作者:行者123 更新时间:2023-12-03 18:53:39 36 4
gpt4 key购买 nike

我想知道是否可以将我的 minikube 网络绑定(bind)到我的 host网络。
我试过:

minikube start --memory=10000 --cpus=4 --vm-driver=docker --kubernetes-version=v1.19.6 --mount --mount-string="/usr/local/citizennet/db:/usr/local/citizennet/db" --network="host"
但我收到以下错误:
❗  Unable to create dedicated network, this might result in cluster IP change after restart: un-retryable: create network host 192.168.49.0/24: docker network create --driver=bridge --subnet=192.168.49.0/24 --gateway=192.168.49.1 -o --ip-masq -o --icc -o com.docker.network.driver.mtu=1500 --label=created_by.minikube.sigs.k8s.io=true host: exit status 1
stdout:

stderr:
Error response from daemon: operation is not permitted on predefined host network
我可以通过使用 haproxy 来做到这一点但我想知道是否有更清洁的方法。
我的 minikube 托管在 EC2 实例上,我想将所有内容直接转发到我的 minikube。或者至少是 HTTP/HTTPS 请求。
谢谢!

最佳答案

我还没有找到暴露 minikube 的方法--driver=docker 的实例到主机网络(除了 $ kubectl port-forward svc/svc-name --address=0.0.0.0 local_port:pod_port 在主机上运行)。
它产生与原始海报相同的错误:

Error response from daemon: operation is not permitted on predefined host network
承认以下评论:

the problem is that I want to use the ingress addon and this addon is not compatible anymore with --driver=none.


而不是使用 --driver=docker它将所有资源放在 Docker 容器中,您可以选择 --driver=none这将直接在 VM 上配置您的所有资源.您将能够直接从其他网络设备查询资源。
现在 minikube版本 v1.17.1不允许使用 ingress带有 --driver=none 的插件但我找到了一种可以配置的方法。我在这个答案的末尾包含了这个例子。请将此视为一种解决方法。
此问题(无法在 ingress 上使用 --driver=none 插件)已在 github 上得到解决:
  • Github.com: Kubernetes: Minikube: Issues: Ingress addon stopped to work with 'none' VM driver starting from v1.12.x

  • 从曝光的角度谈 minikube :
    由于它旨在从外部资源访问,我建议尝试其他解决方案,从主观上讲,这些解决方案可以更轻松地将您的工作负载暴露给外部资源。 有许多可用的工具可以生成 Kubernetes 集群,您可以查看最适合您需求的工具。 一些 其中包括:
  • Kubeadm
  • Kubespray
  • MicroK8S

  • 部署 nginx-ingressminikube --driver=none如前所述,请将其视为一种解决方法。

    A side note!

    Take a look on how your NGINX Ingress controller is configured with minikube addons enable ingress as it will be pretty much mimicked in this example.


    脚步:
  • Download nginx-ingress YAML显现:
  • 修改Deployment在 list 中
  • 删除Service来自 list

  • 申请查看
  • Download nginx-ingress YAML显现
    您可以使用以下 list :
  • Kubernetes.github.io: Ingress Nginx: Deploy (例如 GKE 可以下载 list )

  • 修改 Deployment在 list 中
    正如我之前所说,当你运行 minikube addons enable ingress 时会发生什么?可以证明是有用的。部署的资源有一些关于您需要如何修改它的线索。
  • 添加 hostPort对于 HTTPHTTPS通讯:

  •           ports:
    - name: http
    hostPort: 80 # <-- IMPORTANT, ADD THIS
    containerPort: 80
    protocol: TCP
    - name: https
    hostPort: 443 # <-- IMPORTANT, ADD THIS
    containerPort: 443
    protocol: TCP
    - name: webhook
    containerPort: 8443
    protocol: TCP
  • 删除--publish-service=$(POD_NAMESPACE)/ingress-nginx-controller :

  •           args:
    - /nginx-ingress-controller
    - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller # <-- DELETE THIS
    - --election-id=ingress-controller-leader
    - --ingress-class=nginx
    - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
    - --validating-webhook=:8443
    - --validating-webhook-certificate=/usr/local/certificates/cert
    - --validating-webhook-key=/usr/local/certificates/key
    删除 Service从 list
    您需要完全删除 Service类型 LoadBalancer命名: ingress-nginx来自 list ,因为您已经在使用 hostPort .
    完成此步骤后,您应该可以使用 Ingress资源并在 VM_IP 上与他们交流: 80/ 443 .

    其他资源:
  • Kubernetes.io: Docs: Concepts: Services networking: Ingress
  • Minikube.sigs.k8s.io: Docs: Drivers: None
  • 关于kubernetes - 使用 Docker 驱动程序启动 Minikube 并将其绑定(bind)到主机网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66378335/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com