Moh*_*tir 2 kubernetes kubectl minikube
我创建了一项名为flyman-webapp 的服务:
apiVersion: v1
kind: Service
metadata:
name: fleetman-webapp
spec:
selector:
app: webapp
ports:
- name: http
port: 80
nodePort: 30080
type: NodePort
Run Code Online (Sandbox Code Playgroud)
还有一个名为webapp的 pod :
apiVersion: v1
kind: Pod
metadata:
name: webapp
labels:
app: webapp
spec:
containers:
- name: webapp
image: richardchesterwood/k8s-fleetman-webapp-angular:release0
Run Code Online (Sandbox Code Playgroud)
我检查了minikube ip:
192.168.99.102
但是当我在浏览器中输入192.168.99.102:30080 时,webapp 无法访问:
请注意,我使用的是 Ubuntu 最新版本。我进一步验证了代理和防火墙是否处于活动状态:
猫 /etc/environment:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Run Code Online (Sandbox Code Playgroud)
iptables -L :
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Run Code Online (Sandbox Code Playgroud)
我也在Ubuntu 中禁用了ufw,但没有成功,url 192.168.99.102:30080。
你能帮我吗?提前感谢您的回答。
即使您通过 minikube 中的 NodePort 公开端口 30080,minikube 仍然不会公开它,因为它将使用自己的外部端口来侦听此服务。Minikube 通过隧道将服务暴露给外部世界。要找出暴露的端口:
minikube service $SERVICE_NAME
Run Code Online (Sandbox Code Playgroud)
所以,就你而言
minikube service fleetman-webapp
Run Code Online (Sandbox Code Playgroud)
有许多不同的虚拟机管理程序可以与minikube. 选择一种将高度依赖于操作系统等变量。他们之中有一些是:
--vm-driver=none)”(参见引号)有官方文档讨论它:Kubernetes.io:Minikube:指定虚拟机驱动程序
选择Hypervisor会影响minikube意志的行为方式。
专注于:
--vm-driver=none--vm-driver=virtualbox官方文档总结如下:
Minikube 还支持
--vm-driver=none在主机上而不是在虚拟机中运行 Kubernetes 组件的选项。使用此驱动程序需要Docker和 Linux 环境,但不需要虚拟机管理程序。
命令的输出$ sudo minikube ip将显示主机的 IP 地址。
服务对象类型NodePort将可用IP_ADDRESS_OF_HOST:NODEPORT_PORT。
以下命令:$ kubectl get nodes -o wide:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
K8S Ready master 95s v1.17.3 192.168.0.114 <none> Ubuntu 18.04.4 LTS 5.3.0-28-generic docker://19.3.8
Run Code Online (Sandbox Code Playgroud)
请具体查看:
INTERNAL-IP
192.168.0.114
Run Code Online (Sandbox Code Playgroud)
它与其正在运行的主机的 IP 地址相同。例如,您可以curl不受任何限制地使用 pod。请考虑阅读包含引用的文章:
注意: VM 驱动程序
none可能会导致安全和数据丢失问题。使用之前--vm-driver=none,请参阅此文档以获取更多信息。
您可以使用命令检查暴露的内容:
$ sudo netstat -tulpn
创建minikube实例--vm-driver=virtualbox将创建一个以 Virtualbox 作为主机的虚拟机。
使用这种方式创建的虚拟机--vm-driver将具有下面提供的 2 个网络接口:
重要的是您的 minikube 实例将可以通过Host-only 适配器访问。
仅主机网络。这可用于创建包含主机和一组虚拟机的网络,而不需要主机的物理网络接口。相反,在主机上创建类似于环回接口的虚拟网络接口,提供虚拟机和主机之间的连接。
例如:
192.168.99.103192.168.99.1他们一定是不同的!
如果您在连接此适配器时遇到问题,请检查:
ping如果 minikube 的仅主机适配器地址在成功完成时有响应minikube start。 ip aifconfig根据我的经验,如果出现问题,此适配器的重新启动/重新创建始终有效。
命令的输出$ sudo minikube ip将显示仅主机适配器的 IP 地址。
以下命令:$ kubectl get nodes -o wide:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
m01 Ready master 29m v1.17.3 192.168.99.103 <none> Buildroot 2019.02.9 4.19.94 docker://19.3.6
Run Code Online (Sandbox Code Playgroud)
请再次仔细查看INTERNAL-IP并ip address与之相关。
服务对象类型NodePort将可用于:
IP_ADDRESS_OF_HOST_ONLY_ADAPTER:NODEPORT_PORT。
我重新创建了你的Deployment并附Service加到它,它在两种--vm-driver=none情况下都有效--vm-driver=virtualbox。
如果您对此主题有任何疑问,请告诉我。
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |