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

时间:2018-03-27 11:12:54

标签: kubernetes virtualbox kubeadm

我使用kubeadm配置了一个Kubernetes集群,创建了3个Virtualbox节点,每个节点都运行CentOS(master,node1,node2)。每个虚拟机虚拟机都使用' Bridge'联网。 因此,我有以下设置:

  1. 主节点' master.k8s'运行在192.168.19.87(virtualbox)
  2. 工作人员节点1' node1.k8s'运行在192.168.19.88(virtualbox)
  3. 工作人员节点2' node2.k8s'运行在192.168.19.89(virtualbox
  4. 现在,我想从本地计算机(运行虚拟机节点的物理计算机)访问群集中运行的服务。

    正在运行kubernetes clutser-info我看到以下输出:

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

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

2 个答案:

答案 0 :(得分:2)

传统方式是使用kubectl proxyLoad Balancer,但是由于您位于开发机器中,因此NodePort可用于发布应用程序,因为VirtualBox中没有负载均衡器。

以下示例部署了运行nginx的echo服务器的3个副本,并使用NodePort发布了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访问服务器,例如  http://192.168.50.11:30000http://192.168.50.12:30000http://192.168.50.13:30000

Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)上查看完整的示例。

答案 1 :(得分:0)

访问kubernetes信息中心的传统方式是documented in their readme,并使用kubectl proxy

一个人不应该ssh进入群集来访问任何kubernetes服务,因为这会破坏群集的目的,并且绝对会在群集的安全模型中射出一个漏洞。 Nodes的任何ssh都应保留用于“在遇到紧急情况,破窗玻璃”的情况。

更一般地说,配置良好的Ingress controller将使服务集中,并且还具有非常令人愉快的副作用,意味着您的本地群集将与您的“真实”群集完全相同,而不会需要不合理的ssh-ery规则