Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问在Virtualbox中运行的本地Kubernetes群集_Kubernetes_Virtualbox_Kubeadm - Fatal编程技术网

访问在Virtualbox中运行的本地Kubernetes群集

访问在Virtualbox中运行的本地Kubernetes群集,kubernetes,virtualbox,kubeadm,Kubernetes,Virtualbox,Kubeadm,通过创建3个Virtualbox节点,每个节点运行CentOS(master、node1、node2),我使用kubeadm配置了Kubernetes群集。每个virtualbox虚拟机都使用“网桥”网络进行配置。 因此,我有以下设置: 主节点'Master.k8s'运行于192.168.19.87(virtualbox) 工作节点1“node1.k8s”运行于192.168.19.88(virtualbox) 工作节点2“node2.k8s”运行于192.168.19.89(virtualbo

通过创建3个Virtualbox节点,每个节点运行CentOS(master、node1、node2),我使用kubeadm配置了Kubernetes群集。每个virtualbox虚拟机都使用“网桥”网络进行配置。 因此,我有以下设置:

  • 主节点'Master.k8s'运行于192.168.19.87(virtualbox)
  • 工作节点1“node1.k8s”运行于192.168.19.88(virtualbox)
  • 工作节点2“node2.k8s”运行于192.168.19.89(virtualbox
  • 现在,我想从本地机器(运行virtualbox节点的物理机器)访问集群中运行的服务

    运行
    kubectl cluster info
    可以看到以下输出:

    Kubernetes master is running at https://192.168.19.87:6443
    KubeDNS is running at ...
    

    例如,假设我在集群中部署仪表板,如何使用在物理机器上运行的浏览器打开仪表板UI?

    访问kubernetes仪表板的传统方法是使用
    kubectl代理

    您不必通过ssh进入集群来访问任何kubernetes服务,因为这会破坏拥有集群的目的,并且会在集群的安全模型上打一个洞。任何到
    节点的ssh都应该保留用于“紧急情况下打破玻璃”的情况


    更一般地说,一个配置良好的集群将提供大量的地面服务,而且还有一个非常令人愉快的副作用,即您的本地集群将与您的“真正”集群完全相同集群,无需任何秘密规则

    传统方法是使用
    kubectl代理
    负载平衡器
    ,但由于您在开发机器中可以使用
    节点端口
    发布应用程序,因为VirtualBox中没有负载平衡器

    以下示例部署运行nginx的echo服务器的3个副本,并使用
    节点端口发布http端口:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - name: my-echo
              image: gcr.io/google_containers/echoserver:1.8          
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service-np
      labels:
        name: nginx-service-np
    spec:
      type: NodePort
      ports:
        - port: 8082        # Cluster IP http://10.109.199.234:8082
          targetPort: 8080  # Application port
          nodePort: 30000   # Example (EXTERNAL-IP VirtualBox IPs) http://192.168.50.11:30000/ http://192.168.50.12:30000/ http://192.168.50.13:30000/
          protocol: TCP
          name: http
      selector:
        app: nginx
    
    您可以使用任何VirtualBox IP访问服务器,如 或


    请参阅。

    上的完整示例。您是否能够通过ssh从主机访问任何节点?我认为访问群集的设置相对相同,因此您可能需要查看它。我认为您需要确保端口6443转发到主机,以便您可以访问它。我想这需要在主机上运行“kubectl proxy”(托管三个虚拟机的物理机)。不幸的是,目前我可以从运行主节点的虚拟机内部运行kubectl。是的,它可以,但是如果你在玩kubernetes,你100%都会想要一个工作的
    kubectl
    ,否则,哇,必须对所有yaml进行scp会很痛苦(等等)在vm中,使用kubectl应用它们,重复