我在同一台wifi上有一台Macbook(192.168.1.101
)和一台Macmini(192.168.1.104
)。
我通过Macmini上的docker-desktop启动了一个k8s集群,并希望通过Macbook上的kubectl
对其进行访问。
这是我在Macmini上的~/.kube/config
的样子:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ******
server: https://kubernetes.docker.internal:6443
name: docker-desktop
contexts:
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-desktop
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-for-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
user:
client-certificate-data: ******
client-key-data: ******
如何在Macbook上写~/.kube/config
?目前,我遵循官方doc并出现以下错误。
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: http://192.168.1.104:6443
name: macmini-cluster
contexts:
- context:
cluster: macmini-cluster
user: macmini-user
name: macmini-context
current-context: macmini-context
kind: Config
preferences: {}
users:
- name: macmini-user
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
$ kubectl get pods
The connection to the server 192.168.1.104 was refused - did you specify the right host or port?
更新:
我在6443
的{{1}}上添加了端口server
,并尝试cluster
到Macmini的端口telnet
,但是得到了:
6443
当我检查Macmini时:
$ telnet 192.168.1.104 6443
Trying 192.168.1.104...
telnet: connect to address 192.168.1.104: Connection refused
telnet: Unable to connect to remote host
似乎有一个尚未解决的相关issue。
答案 0 :(得分:1)
您只需将.kube / config文件从mac-mini桌面复制到macbook,如果要使用相同的上下文,则无需再次写入配置文件。
答案 1 :(得分:0)
在Macbook中,必须按以下指定端口号。那是K8S APIServer的端口号。 (1)
答案 2 :(得分:0)
您的kubernetes api服务器似乎没有绑定到本地可访问的ipv4,但绑定到主机的127.0.0.1
$ netstat -na | grep 6443 tcp4 0 0 127.0.0.1.6443 。听
这意味着无法在同一网络中访问该事件。
您需要将此端口代理到本地ipv4网络ip。您可以使用管理员身份在kubernetes主机中运行的命令提示符执行以下操作:
etsh interface portproxy add v4tov4 listenaddress=192.168.1.104 listenport=6443 connectaddress=127.0.0.1 connectport=6443
答案 3 :(得分:0)
有一个内部主机名 ./recursiveUnzip.sh "$WORKSPACE"
指向 kubernetes docker-desktop
,但是,该主机名可以被任何内部容器访问,无需 api-server
选项,我们可以在下面给出一个 hack做一个--link
把戏
docker run -d -p 0.0.0.0:6444:6443 bobrik/socat TCP-LISTEN:6443,fork TCP:docker-desktop:6443
我曾经想过利用 kubernetes port-forwarding
,但没有时间继续挖掘,希望其他人对这个技巧有任何想法。
除此之外,不要忘记对下面的 service
进行一些更改以避免 x509 证书验证
~/.kube/config