我想看看是否可以使用本地(Mac)kubectl 连接到远程 minikube 集群(Ubuntu 盒子)。我目前使用 Docker,并且可以使用docker-machine. 只需评估机器名称,docker 就会使用远程机器。
我想知道 minikube/kubectl 是否有类似的东西?我发现一些文章提到我需要将远程~/.minikube目录复制到本地,并更改一些配置。但这对于像这样的工具docker-machine无缝完成的事情来说似乎相当复杂。
是否有类似的工具可用,或者如果没有,有人可以帮助我完成连接到远程集群所需的步骤吗?
远程机器
目前我使用docker驱动程序(这是命令的完整输出,只有一行):
$ minikube config view
- driver: docker
Run Code Online (Sandbox Code Playgroud)
并拥有多项NodePort服务:
$ kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default apigateway NodePort 10.100.122.255 <none> 8080:30601/TCP 19h
default discoveryserver NodePort 10.101.106.231 <none> 8761:30602/TCP 19h
default elasticsearch NodePort 10.97.197.14 <none> 9200:30604/TCP 19h
default harness NodePort 10.97.233.245 <none> 9090:30603/TCP 19h
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19h
default …Run Code Online (Sandbox Code Playgroud) 所以在 docker-desktop 到处出现问题后,我才开始深入研究 minikube。我正在关注https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/,但我遇到了问题。
我完全按照教程的说明进行了操作:
我验证了所有内容都可用,并最终得到以下输出kubectl get ingress:
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> hello-world.info 192.168.49.2 80 87m
Run Code Online (Sandbox Code Playgroud)
然而,当尝试访问 hello-world.info(无论是在我的主机文件中设置,还是直接访问 192.168.49.2,仅用于连接测试)时,除了请求超时之外,我什么也得不到。我的入口控制器的日志也没有提及任何失败的连接尝试。
通过 手动启动隧道时,连接工作正常minikube service ingress-nginx-controller-admission --namespace=kube-system。
这是输出minikube profile list:
|----------|-----------|---------|--------------|------|---------|---------|-------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes |
|----------|-----------|---------|--------------|------|---------|---------|-------|
| minikube | docker | docker | 192.168.49.2 | 8443 | v1.20.2 | Running …Run Code Online (Sandbox Code Playgroud) 我的服务器在 IPv4 和 IPv6 上运行。Docker 在(本地)IPv4 地址(即 192.168.100.1/24)上运行。我没有在内部启用 IPv6,daemon.json因为我知道这会带来很多问题,并且需要我拥有完整的 IPv6 /64 范围可用。
例如,反向代理 nginx docker 容器正在运行superuser.one,该 IP 可通过 IPv4 和 IPv6 访问。
# dig superuser.one +short a
85.17.140.73
# dig superuser.one +short aaaa
2001:1af8:4200:a003:1:aaaa:0:123
Run Code Online (Sandbox Code Playgroud)
IPv6 正在运行:
# ping6 superuser.one -c 1
PING superuser.one(2001:1af8:4200:a003:1:aaaa:0:123 (2001:1af8:4200:a003:1:aaaa:0:123)) 56 data bytes
64 bytes from 2001:1af8:4200:a003:1:aaaa:0:123 (2001:1af8:4200:a003:1:aaaa:0:123): icmp_seq=1 ttl=57 time=19.5 ms
--- superuser.one ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 19.526/19.526/19.526/0.000 ms …Run Code Online (Sandbox Code Playgroud) 我在容器中运行 Windows Nanoserver。nanoserver 仅包含命令提示符,缺少 powershell。
我想在命令提示符下的容器内执行某些需要提升权限的命令。我目前正在使用以下命令启动容器的命令提示符。
docker exec -it <container_id> cmd
还有其他方法可以在管理模式下运行命令提示符吗?
windows windows-command-prompt containers docker windows-server-2019
我已经使用 Graylog 设置了我的服务器日志记录,现在我看到我的日志被 level: 3 错误发送,如下所示:
systemd-udevd[1523120]: veth20996a5: Failed to get link config: No such device
Run Code Online (Sandbox Code Playgroud)
我认为 vethxxxxxxx 是 Docker 创建的接口,但我无法弄清楚是什么导致了这些错误。
任何帮助解决这个问题并找到这些错误原因的帮助都将非常感激。
为了在我的 docker 设置中启用 IPv6,我已在文件中进行了设置/etc/docker/daemon.json:
{
"ipv6": true,
"fixed-cidr-v6": "2a01:xxxx:yyyy:zzzz/64"
}
Run Code Online (Sandbox Code Playgroud)
我从我的 ISP 处获得2a01:xxxx:yyyy:zzzz并通过 找到它ip addr | grep inet6 | grep global。
我的 ISP 不断改变该zzzz位,并且在重新启动路由器时它也会改变。
问题:
fixed-cidr-v6为某些链接本地值fd00:...)const hostname = '0.0.0.0'; // << This is where I'm confused
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Run Code Online (Sandbox Code Playgroud)
当我对这个应用程序进行 dockerize 并在容器中运行它时,主机名 0.0.0.0 可以工作,但 127.0.0.1 不起作用。我理解原因是因为 docker 容器几乎都有自己的 IP。
因此,当我构建并运行容器时,将主机名变量设置为 127.0.0.1,然后在浏览器上访问 127.0.0.1,我没有连接到容器的 IP 地址,而是连接到我的本地计算机。
但是为什么当我在 0.0.0.0 上运行容器化应用程序并在浏览器上访问 127.0.0.1 时,它现在连接到容器而不是我的本地计算机?
谢谢。
使用 docker 我会运行docker login,但是你如何使用ctr/进行类似的操作containerd?
由于达到速率限制,我们需要登录:
ctr:复制失败:httpReaderSeeker:打开失败:意外状态代码https://registry-1.docker.io/v2/library/[...]:429 请求太多 - 服务器消息:toomanyrequests:您已达到您的要求拉动速率限制。您可以通过身份验证和升级来增加限制: https: //www.docker.com/increase-rate-limit
按照containerd文档:/etc/containerd/config.toml
version = 2
[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".auth]
username = "myusername"
password = "mypassword"
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。
我管理一些安装了 Docker CE 的 Debian 服务器,并且 docker-compose 编排了多个服务(每台机器大约 20 个容器)。
每个服务都配置有restart: always每个服务都在 docker-compose 中但是,有一些随机服务(通常每台计算机有 1-2 个)可以正确关闭,但在主机重新启动期间不会重新启动。这种行为是完全随机的。有时所有服务都会启动,有时 docker-compose.yml 文件中的一项服务不会重新启动。
以下是 Traefik 正确关闭但未出现的示例:
$ cat docker-compose.yml
version: '3'
services:
reverse-proxy:
image: traefik:1.7
restart: always
command: --web
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
networks:
- web
Run Code Online (Sandbox Code Playgroud)
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------
traefik_reverse-proxy_1 /traefik --web Exit 128
Run Code Online (Sandbox Code Playgroud)
$ docker-compose logs --tail 6 -t
Attaching to traefik_reverse-proxy_1
reverse-proxy_1 | 2022-01-21T14:05:28.042399112Z …Run Code Online (Sandbox Code Playgroud) 我有一台运行 Wireguard 的服务器(因此需要masquerade)和一个在端口 2525 上运行的容器。
我有以下iptables规则:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 172.18.0.1:2525
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
直接连接时server:2525,Docker 容器能够看到我的真实 IP 地址 ( 1.2.3.4)。当连接到 port 时server:25,Docker 容器会看到由以下内容提供的本地 IP docker network:
Apr 07 12:45:46 mx postfix/smtpd[87]: lost connection after CONNECT from unknown[172.18.0.1]
Apr 07 12:45:46 mx postfix/smtpd[87]: disconnect from unknown[172.18.0.1] commands=0/0
Run Code Online (Sandbox Code Playgroud)
如何确保 Docker 容器在连接到端口 25 时(而不仅仅是在连接到端口 2525 时)正确地看到公共 IP …
docker ×10
ipv6 ×2
kubernetes ×2
minikube ×2
containerd ×1
containers ×1
debian ×1
forwarding ×1
iptables ×1
ipv4 ×1
logging ×1
networking ×1
spam ×1
systemd ×1
udevd ×1
windows ×1