Skip to content

Commit

Permalink
Clarify publicIP on minion use case
Browse files Browse the repository at this point in the history
  • Loading branch information
jayunit100 committed Mar 10, 2015
1 parent ef946da commit fbeeaf8
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions examples/guestbook/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,8 @@ if (isset($_GET['cmd']) === true) {
Just like the others, you want a service to group your frontend pods.
The service is described in the file `examples/guestbook/frontend-service.json`:
**NOTE** This json snippet has been modified, in that it adds the publicIPs field for illustration purposes only.
```js
{
"id": "frontend",
Expand Down Expand Up @@ -417,11 +419,12 @@ For GCE details about limiting traffic to specific sources, see the [GCE firewal
[cloud-console]: https://console.developer.google.com
[gce-firewall-docs]: https://cloud.google.com/compute/docs/networking#firewalls
### Accessing the guestbook site externally.
### Accessing the guestbook site externally
The pods that we have set up are reachable through the frontend service, but you'll notice that 10.0.93.211 (the IP of the frontend service is unavailable from outside of kubernetes, unless, of course, you are running kubernetes minions locally, in which case the host port binding will allow you to reach the guestbook website at localhost:8000.
The pods that we have set up are reachable through the frontend service, but you'll notice that 10.0.93.211 (the IP of the frontend service) is unavailable from outside of kubernetes.
Of course, if you are running kubernetes minions locally, this isn't such a big problem - the port binding will allow you to reach the guestbook website at localhost:8000... but the beloved **localhost** solution obviously doesn't work in any real world scenario.
Unless you have access to the `createExternalLoadBalancer` feature (cloud provider specific), you will want to set up a publicIP on a minion, so that the service can be accessed from outside of the internal kubernetes network. This is quite easy. You simply look at you're list of kubelet IP addresses, and update the service file to include a `publicIPs` string, which is mapped to an IP address of any number of your existing kubelets. This will allow all you're kubelets to act as external entry points to the service (translation: this will allow you to browse the guestbook site at your kubelet IP address from your browser).
Unless you have access to the `createExternalLoadBalancer` feature (cloud provider specific), you will want to set up a **publicIP on a minion**, so that the service can be accessed from outside of the internal kubernetes network. This is quite easy. You simply look at you're list of kubelet IP addresses, and update the service file to include a `publicIPs` string, which is mapped to an IP address of any number of your existing kubelets. This will allow all you're kubelets to act as external entry points to the service (translation: this will allow you to browse the guestbook site at your kubelet IP address from your browser).
If you are more advanced in the ops arena, note you can manually get the service IP from looking at the output of `kubectl get pods,services`, and modify your firewall using standard tools and services (firewalld, iptables, selinux) which you are already familar with.
Expand Down

0 comments on commit fbeeaf8

Please sign in to comment.