突然,当我使用 docker-compose 部署一些新容器时,内部主机名解析不起作用。
当我尝试使用 docker-compose.yaml 文件中的服务名称从另一个容器 ping 一个容器时,ping: bad address 'myhostname'
我检查了它/etc/resolv.conf是否正确并且正在使用127.0.0.11
当我尝试手动解析我的主机名时,nslookup myhostname.或者nslookup myhostname.docker.internal出现错误
nslookup: write to '127.0.0.11': Connection refused
;; connection timed out; no servers could be reached
Run Code Online (Sandbox Code Playgroud)
好的,问题是 docker DNS 服务器已停止工作。所有已经启动的容器仍然可以运行,但任何新启动的容器都有这个问题。我在跑步Docker version 19.03.6-ce, build 369ce74
我当然可以重新启动 docker 以查看它是否解决了它,但我也很想了解为什么会发生这个问题以及如何在将来避免它。
我在服务器上启动了很多容器,目前共有 25 个 docker 网络。关于可以做什么来排除故障的任何想法?任何可以解释这一点的已知问题?docker-compose.yaml我使用的文件以前工作过,没有对其进行任何更改。
编辑:根本无法解析 DNS 名称。127.0.0.11 拒绝所有连接。我可以 ping 任何外部 IP 地址,以及同一 docker 网络上其他容器的 IP。只有 127.0.0.11 DNS 服务器不工作。127.0.0.11 仍然从容器内回复 ping。
我想要实现的目标:
我希望 Terraform 在 GCP 中创建基于经典路由的 VPN 隧道。
背景:
在 GCP 中设置 VPN 隧道时,有 3 个选项用于路由 BGP 基于路由 基于策略
在 GCP 中创建基于路由的 VPN 隧道时,您需要指定远程子网。如果您要创建基于策略的 VPN 隧道,您还需要指定本地子网。
由于我想创建基于路由的 VPN 隧道,因此我只需要提供远程子网。
问题:
但是在 Terraform 中,资源“google_compute_vpn_tunnel”没有与要使用的路由类型有关的选项。好吧,也许它是由缺少“local_traffic_selector”决定的,然后变成基于路由的 VPN 隧道。但即使我在 main.tf 中省略了“local_traffic_selector”选项,它仍然存在于计划中。
' + local_traffic_selector =(应用后已知)
由于我没有为其指定任何值,Terraform 尝试将其与空值一起使用,这是不可能的。
Error: Error creating VpnTunnel: googleapi: Error 400: Invalid value for field 'resource.localTrafficSelector[0]': ''. The local_traffic_selector field cannot be empty for network in custom subnet mode., invalid
on main.tf line 51, in resource "google_compute_vpn_tunnel" "tunnel1":
51: resource "google_compute_vpn_tunnel" …Run Code Online (Sandbox Code Playgroud) 我已将日志从 kubernetes 发送到 S3 存储桶,并想使用 Athena 查询它
日志看起来像这样
[{ "date":1589895855.077230,
"log":"192.168.85.35 - - [19/May/2020:13:44:15 +0000] \"GET /healthz HTTP/1.1\" 200 3284 \"-\" \"ELB-HealthChecker/2.0\" \"-\"",
"stream":"stdout",
"time":"2020-05-19T13:44:15.077230187Z",
"kubernetes":{
"pod_name":"myapp-deployment-cd984ffb-kjfbm",
"namespace_name":"master",
"pod_id":"eace0175-99cd-11ea-95e4-0aee746ae5d6",
"labels":{
"app":"myapp",
"pod-template-hash":"cd984ffb"
},
"annotations":{
"cluster-autoscaler.kubernetes.io/safe-to-evict":"false",
"kubernetes.io/psp":"eks.privileged"
},
"host":"ip-1-1-1-1.eu-north-1.compute.internal",
"container_name":"myapp",
"docker_id":"cb2cda1ed46c5f09d15090fc3f654b1de35970001e366923287cfbd4a4abf4a1"
}
},
{ "date":1589995860.077230,
"log":"192.168.1.40 - - [20/May/2020:17:31:00 +0000] \"GET /healthz HTTP/1.1\" 200 3284 \"-\" \"ELB-HealthChecker/2.0\" \"-\"",
"stream":"stdout",
"time":"2020-05-20T17:31:00.077230187Z",
"kubernetes":{
"pod_name":"myapp-deployment-cd984ffb-kjfbm",
"namespace_name":"master",
"pod_id":"eace0175-99cd-11ea-95e4-0aee746ae5d6",
"labels":{
"app":"myapp",
"pod-template-hash":"cd984ffb"
},
"annotations":{
"cluster-autoscaler.kubernetes.io/safe-to-evict":"false",
"kubernetes.io/psp":"eks.privileged"
},
"host":"ip-1-1-1-1.eu-north-1.compute.internal",
"container_name":"myapp",
"docker_id":"cb2cda1ed46c5f09d15090fc3f654b1de35970001e366923287cfbd4a4abf4a1"
}
},]
Run Code Online (Sandbox Code Playgroud)
所以基本上是一个包含 json 对象的数组。
我正在 …
我有一个简单的工作网络策略,如下所示
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: monitoring-network-policy-prometheus-jbn
namespace: monitoring
spec:
podSelector:
matchLabels:
app: prometheus
policyTypes:
- Egress
egress:
- to:
ports:
- port: 61678
Run Code Online (Sandbox Code Playgroud)
但现在我想再限制一下。我不想允许从带有标签的所有 pod 到端口 61678 上的所有目的地的出口,app: prometheus而是只允许流向带有标签的 pod 的流量k8s-app: aws-node
所以我将政策更改为:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: monitoring-network-policy-prometheus-jbn
namespace: monitoring
spec:
podSelector:
matchLabels:
app: prometheus
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
k8s-app: aws-node
Run Code Online (Sandbox Code Playgroud)
根据https://kubernetes.io/docs/concepts/services-networking/network-policies/的政策,看起来像这样
...
ingress:
- from:
- namespaceSelector:
matchLabels:
user: alice
- podSelector:
matchLabels:
role: client …Run Code Online (Sandbox Code Playgroud)