2016-07-13 5 views
0

Kubernetes의 일부 포드에서 서비스를 만들었습니다. service-ip : port를 감길 수 있고 HTML을 볼 수 있습니다. 내 브라우저에서 내 PC로 서비스에 액세스하고 싶습니다. 로컬 호스트 (PC)에 내방 내부 IP를 매핑하려면 Vagrantfile에서 무엇을 편집해야합니까? 이 내 vagrantfile의 일부입니다 내가 node.vm.network "private_network", ip: "192.xx.xx.xx"에서 node.vm.network "private_network", ip: "#{node_ip}"을 변경하려고로컬 호스트의 Kubernetes 서비스 (Vagrant에서)에 액세스

# Finally, fall back to VirtualBox 
    config.vm.provider :virtualbox do |v, override| 
     setvmboxandurl(override, :virtualbox) 
     v.memory = vm_mem # v.customize ["modifyvm", :id, "--memory", vm_mem] 
     v.cpus = $vm_cpus # v.customize ["modifyvm", :id, "--cpus", $vm_cpus] 

     # Use faster paravirtualized networking 
     v.customize ["modifyvm", :id, "--nictype1", "virtio"] 
     v.customize ["modifyvm", :id, "--nictype2", "virtio"] 
    end 
    end 

    # Kubernetes master 
    config.vm.define "master" do |c| 
    customize_vm c, $vm_master_mem 
    if ENV['KUBE_TEMP'] then 
     script = "#{ENV['KUBE_TEMP']}/master-start.sh" 
     c.vm.provision "shell", run: "always", path: script 
    end 
    c.vm.network "private_network", ip: "#{$master_ip}" 
    end 

    # Kubernetes node 
    $num_node.times do |n| 
    node_vm_name = "node-#{n+1}" 
    node_prefix = ENV['INSTANCE_PREFIX'] || 'kubernetes' # must mirror default in cluster/vagrant/config-default.sh 
    node_hostname = "#{node_prefix}-#{node_vm_name}" 

    config.vm.define node_vm_name do |node| 
     customize_vm node, $vm_node_mem 

     node_ip = $node_ips[n] 
     if ENV['KUBE_TEMP'] then 
     script = "#{ENV['KUBE_TEMP']}/node-start-#{n}.sh" 
     node.vm.provision "shell", run: "always", path: script 
     end 
     node.vm.network "private_network", ip: "#{node_ip}" 
    end 
    end 

(내가 가지고있는 부분은 편집 할 생각)하지만 내 방랑 다시로드 할 수 아니에요 :

/opt/vagrant/embedded/lib/ruby/2.2.0/ipaddr.rb:559:in `in6_addr': invalid address (IPAddr::InvalidAddressError) 
+0

값을 확인하기 위해'node_ip = $ node_ips [n]'뒤에'p node_ip'를 추가 할 수 있습니까?'node_ips'의 값은 무엇인지 추측 할 수 없지만 유효한 IP 주소가 아니라고 불평합니다. 값을 확인하십시오. –

+0

$ node_ips = $ num_node.times.collect {| n | $ node_ip_base + "# {n + 3}"}이 (가) 파일에 있습니다. 하지만 "# {node_ip}"을 "192 ..."(하드 코드 된)로 변경하려고했습니다. 그리고 불평하고 있니? 여기에 https://www.vagrantup.com/docs/networking/private_network.html 그들은 똑같이하는 것? – DenCowboy

+0

실제로 IP에 오류가 발생하면 오류가 발생합니다. '192.168.32.310' (범위를 벗어남) 또는'192.168.01.12'와 같은 것; 유효한 IP의 예로'192.168.33.10'을 사용할 수 있습니까? 여전히 작동하지 않는지 확인하십시오. –

답변

0

당신의 서비스는 유랑인 VM의 IP에 도달하려면 NodePort 유형이어야합니다. 예를 들어, 포드가 복제 컨트롤러에 의해 시작된 경우. 와 서비스를 만들기 : 이것은 임의의 포트를 반환합니다

kubectl expose rc foobar --type=NodePort --port=80

. 해당 포트에있는 Vagrant 노드 VM에서 브라우저를 열면 서비스가 제공됩니다.

+0

현재이 작업을 수행하고 있습니다. --port = 80 --target-port = 8080 따라서 80 (포트)의 포트 8080 내 봉사. 그래서 나는 이것을 이웃 VM의 IP상의 임의의 포트에 매핑 할 NodePort를 정의해야합니까? – DenCowboy