ano*_*ode 3 kubernetes minikube
有没有办法将在minikube公共网络接口上创建的 Kubernetes 集群的 API 服务器暴露给 LAN?
minikube start --help 谈论这个选项(和两个类似的):
--apiserver-ips ipSlice \
A set of apiserver IP Addresses which are used in the generated \
certificate for localkube/kubernetes. This can be used if you \
want to make the apiserver available from outside the machine (default [])
Run Code Online (Sandbox Code Playgroud)
所以这似乎是可能的。但我无法弄清楚如何或找到任何进一步的信息。
我天真地尝试:
minikube start --apiserver-ips <ip-address-of-my-lan-interface>
Run Code Online (Sandbox Code Playgroud)
但这只会产生一个完全功能失调的 minikube 集群,我什至无法从本地主机访问它。
按照下面一个答案中的建议,我向 Kubernetes 添加了端口转发,如下所示:
vboxmanage controlvm "minikube" natpf1 "minikube-api-service,tcp,,8443,,8443"
Run Code Online (Sandbox Code Playgroud)
然后我实际上可以从网络上的不同主机访问 API 服务器:
curl --insecure https://<ip-address-of-host-running-minikube>:8443
Run Code Online (Sandbox Code Playgroud)
但回应是:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
"reason": "Forbidden",
"details": {
},
"code": 403
}
Run Code Online (Sandbox Code Playgroud)
这有两个问题:
--insecure用于curl调用,否则我会收到 SSL 验证错误。您头疼的一大原因是 minikube 运行在具有自己 IP 地址的 VM 中(通常)。为了安全起见,它会生成一些自签名证书并配置 api 命令行工具 kubectl 来使用它们。证书使用 VM IP 作为证书的主机名进行自签名。
如果您使用kubectl config view. 这是我的:
apiVersion: v1
clusters:
- cluster:
certificate-authority: /home/sam/.minikube/ca.crt
server: https://192.168.39.226:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /home/sam/.minikube/client.crt
client-key: /home/sam/.minikube/client.key
Run Code Online (Sandbox Code Playgroud)
让我们打开它。
server: https://192.168.39.226:8443- 这会告诉 kubectl 服务器在哪里。在香草 minikube 设置中,它是https://<ip-of-the-vm>:8443. 请注意,它的 https.
certificate-authority: /home/sam/.minikube/ca.crt- 此行告诉工具使用哪个证书颁发机构文件来验证 TLS 证书。因为它是自签名证书,即使在 vanilla 设置中,您也必须通知 curl 有关证书颁发机构文件或使用--insecure.
- name: minikube
user:
client-certificate: /home/sam/.minikube/client.crt
client-key: /home/sam/.minikube/client.key
Run Code Online (Sandbox Code Playgroud)
此块指定在发出命令时要验证的用户 - 这就是为什么即使在使用后您也会收到未经授权的消息--insecure。
因此,要使用来自不同 IP 的 minikube 集群,您需要:1) 使用--apiserver-ips <target-ip-here>(因此 minikube 生成的证书用于您将要访问的正确 IP) 2) 将 minikube vm 的 8443 端口转发到在<target-ip-here>:8443
3) 发布或以其他方式提供引用的证书文件kubectl config view
4) 设置您的 kubectl 配置以模仿您的本地 kubectl 配置,使用新 ip 并引用已发布的证书文件。
您需要将 LAN 接口上的某些端口转发到运行 Kubernetes 的虚拟机。这适用于 Minikube 内的任何服务,而不仅仅是 Kubernetes 本身。
简而言之,如果您使用 VirtualBox 作为 VM 驱动程序,您应该:
kubectl describe <servicename>应该minikube service <servicename> --url对你有帮助。使用工具将端口转发到虚拟机vboxmanage:
vboxmanage controlvm "minikube" natpf1 "http,tcp,,12345,,80"
Run Code Online (Sandbox Code Playgroud)其中minikube- VM 的名称,natfp1- VM 的虚拟接口,12345- VM 的端口,80- 本地端口。
| 归档时间: |
|
| 查看次数: |
4388 次 |
| 最近记录: |