访问在Virtualbox中运行的本地Kubernetes群集
通过创建3个Virtualbox节点,每个节点运行CentOS(master、node1、node2),我使用kubeadm配置了Kubernetes群集。每个virtualbox虚拟机都使用“网桥”网络进行配置。 因此,我有以下设置:访问在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
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应用它们,重复