我使用kubeadm配置了一个Kubernetes集群,创建了3个Virtualbox节点,每个节点都运行CentOS(master,node1,node2)。每个虚拟机虚拟机都使用' Bridge'联网。 因此,我有以下设置:
现在,我想从本地计算机(运行虚拟机节点的物理计算机)访问群集中运行的服务。
正在运行kubernetes clutser-info
我看到以下输出:
Kubernetes master is running at https://192.168.19.87:6443
KubeDNS is running at ...
举个例子,假设我在我的群集中部署了仪表板,如何使用在我的物理机器上运行的浏览器打开仪表板UI?
答案 0 :(得分:2)
传统方式是使用kubectl proxy
或Load 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:30000或http://192.168.50.12:30000或http://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规则