我有一种情况,Kubernetes 显然无法再为kubectl create -f Deployment.yaml. kubectl describe service <my-service>报告以下错误:
CreatingLoadBalancerFailed
Error creating load balancer (will retry): Failed to create load balancer
for service default/<my-service>: requested ip <my-address> is
neither static nor assigned to LB <id>(default/<my-service>): <nil>
Run Code Online (Sandbox Code Playgroud)
但gcloud compute addresses list表示my-address是静态IP地址:
NAME REGION ADDRESS STATUS
<my-address> europe-west1 <ip-address> RESERVED
Run Code Online (Sandbox Code Playgroud)
并Deployment.yaml包含<my-service>分配<my-address>给负载均衡器的规范:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: UDP
port: …Run Code Online (Sandbox Code Playgroud) 我想为 OOMKilled 事件设置检测,在检查 pod 时看起来像这样:
Name: pnovotnak-manhole-123456789-82l2h
Namespace: test
Node: test-cluster-cja8smaK-oQSR/10.x.x.x
Start Time: Fri, 03 Feb 2017 14:34:57 -0800
Labels: pod-template-hash=123456789
run=pnovotnak-manhole
Status: Running
IP: 10.x.x.x
Controllers: ReplicaSet/pnovotnak-manhole-123456789
Containers:
pnovotnak-manhole:
Container ID: docker://...
Image: pnovotnak/it
Image ID: docker://sha256:...
Port:
Limits:
cpu: 2
memory: 3Gi
Requests:
cpu: 200m
memory: 256Mi
State: Running
Started: Fri, 03 Feb 2017 14:41:12 -0800
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
Started: Fri, 03 Feb 2017 14:35:08 -0800
Finished: Fri, 03 Feb 2017 14:41:11 -0800 …Run Code Online (Sandbox Code Playgroud) 我有一个正在运行的 Kubernetes 集群,它在 stackdriver 中聚合它的日志文件,并希望在命令行上跟踪聚合的日志。但到目前为止,我只能在 Web 界面中查看浮动的 json 流或使用类似gcloud beta logging read 'resource.type="container" jsonPayload.service:("my-service") timestamp >= "2017-06-22T16:00:00+02:00"' --format=json.
我无法在 GCE 中构建当前日志条目的聚合实时视图,就像您从tail -f?
我对 k8s 和 minikube 还很陌生,可以帮助理解我在运行时遇到的频繁但不普遍的错误 kubectl logs -f <POD NAME>
我有时会在我自己的命名空间中的 pod 上以及在 . 中kube-system,例如,在尝试跟踪入口控制器日志时,无法预测地获得此信息。pods 本身没有明显的错误,并且kubectl logs命令的输出包含看起来正常的日志行,例如failed to watch file "/var/log/pods/kube-system_nginx-ingress-controller-586cdc477c-95pgh_4b8310a4-5f9b-11e9-9666-0800270e7244/nginx-ingress-controller/1.log": no space left on device$
这个问题的最终来源是什么,我该如何解决?
Kubernetes 正在弃用 Docker 作为 CRI 引擎。现在有containerd和CRI-O,可以作为它的替代品。两者都可以通过 cri-tools 中的 crictl 进行管理。
我需要一些通用的方法来查找正在运行的容器的 PID。
实际上我需要一个相当于 docker 命令的crictl :
# docker inspect 86cd8d605c2da -f '{{ .State.Pid }}'
9625
Run Code Online (Sandbox Code Playgroud) 我正在尝试kubectl expose在 Google Container Engine 上通过带有静态 IP 地址的命令公开 kubernetes“部署” 。
使用临时 IP,一切正常:
kubectl expose deployment my-application \
--type="LoadBalancer" --port=80 --target-port=8080
Run Code Online (Sandbox Code Playgroud)
我使用kubectl get services并等待几分钟以查看已分配的临时 IP。我在浏览器中输入 IP 并看到应用程序,即一切正常。
但是,当我执行以下操作时:
使用 gcloud 网络界面创建静态 IP 地址(网络 -> 外部 IP 地址 -> 保留静态 IP 地址)
使用与上述相同的命令重新创建服务,但使用额外的--load-balancer-ip选项
kubectl expose deployment my-application \
--type="LoadBalancer" --port=80 --target-port=8080 \
--load-balancer-ip='1.2.3.4' # IP as assigned by web interface above
Run Code Online (Sandbox Code Playgroud)命令成功,但在该 IP 地址下无法访问应用程序,当我使用以下命令时:
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
endpoints 10.119.247.39 <pending> …Run Code Online (Sandbox Code Playgroud) 我需要在 Kubernetes 中运行这个 Docker 命令:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
Run Code Online (Sandbox Code Playgroud)
我可以映射除“-notebook”之外的所有内容 - 有谁知道怎么做?
这是我到目前为止所拥有的,当然它不起作用,因为“-notebook”没有正确转换为 kubectl:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
Run Code Online (Sandbox Code Playgroud) 这篇文章描述了如何在 kubernetes 中为 pod 分配主机别名,无论如何都可以为部署而不是为 pod 那样做?
在 kubernetes 中添加主机条目以提供主机名解析的第一行(在检查像 8.8.8.8 这样的服务器之前)的任何其他建议也将作为答案受到欢迎。
尽管使用相同映像注册表的其他部署按预期工作,但我deployment在minikube本地注册表中收到“无法拉取映像”错误。
我的工作流程是从docker.collection如下所示的 Dockerfile 构建映像。
$ minikube start --insecure-registry localhost:5000 --memory 4096
$ docker build . -f docker.collection -t localhost:5000/collection:latest -t localhost:5000/collection:dev
$ docker push localhost:5000/collection
$ cat deployment.yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
部署已根据需要创建,但 Pod 未启动,并且 minikube 仪表板显示:
无法拉取映像“localhost:5000/collection:dev”:rpc 错误:代码 = Unknown desc = 来自守护进程的错误响应:localhost:5000/collection:dev 未找到清单
我没有理由相信构建或推送映像有任何问题,并且在主机上,我可以成功拉取...
$ docker pull localhost:5000/collection:dev
dev: Pulling from collection
Digest: sha256:8becfdd412f0b86ece8335aa5ee1aede75992d17f88739a28da5939eab28fde5
Status: Image is up to date for localhost:5000/collection:dev
Run Code Online (Sandbox Code Playgroud)
我还应该检查什么?如何获得有关失败的更多详细信息?
我也检查过:
localhost:5000:$ minikube …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Kubernetes 空间中设置 ChirpStack,但它似乎对我不起作用,而且我在网上找不到任何解决方案的资源。
**chirpstack-application-server-6d6f8d699c-nlrmx 1/1 Running 0 44s\
chirpstack-gateway-bridge-5454b7f9f-fm5wl 1/1 Running 0 73s\
chirpstack-mosquitto-646899d74d-d7bhl 0/1 CrashLoopBackOff 3 85s\
chirpstack-network-server-66cdf9bdf7-rhzg5 1/1 Running 0 55s**
Run Code Online (Sandbox Code Playgroud)
上面是我有自动取款机的每个吊舱。应用程序服务器、网络服务器、网关桥都启动并运行,但是 Mosquitto 代理转到“完成”并直接进入 CrashLoopBackOff。
我认为这可能与缺乏配置有关,因此我花了几天时间将 mosquitto.conf 文件与“allow_anonymous true”放在一起,希望能够从我的任何 ChirpStack 组件获得连接,但日志只是指示 mqtt 连接被拒绝错误。
kubectl 日志的输出 chirpstack-application-server
time="2020-12-10T15:01:41Z" level=error msg="integration/mqtt: connecting to broker error, will retry in 2s: Network Error : dial tcp 10.244.146.236:1883: i/o timeout"
Run Code Online (Sandbox Code Playgroud)
因为无法建立连接,所以我认为情况恰恰相反,我需要添加password_file并将allow_anonymous设置为false。以下是我当前的配置,如果有人可能知道出了什么问题。
configMap-1.yml
kind: ConfigMap
metadata:
name: mosquitto-password
namespace: ****
labels:
app: chirpstack-mosquitto
data:
password_file.txt: |
admin:admin
user:user
app-server:app-server
net-server:net-server
gateway-bridge:gateway-bridge
Run Code Online (Sandbox Code Playgroud)
配置映射.yml
kind: …Run Code Online (Sandbox Code Playgroud)