标签: kubernetes

创建 GCE 负载均衡器时出错:请求的地址 ip 既不是静态的也不是分配给 LB

我有一种情况,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)

google-compute-engine kubernetes google-kubernetes-engine

9
推荐指数
2
解决办法
4061
查看次数

检测 GKE 日志中的 Kubernetes OOMKilled 事件

我想为 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 google-kubernetes-engine google-stackdriver

9
推荐指数
1
解决办法
6263
查看次数

使用 GCE 和 stackdriver 拖尾日志

我有一个正在运行的 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?

kubernetes google-cloud-platform google-stackdriver

9
推荐指数
1
解决办法
1343
查看次数

minikube/k8s/kubectl“无法观看文件 [...]:设备上没有剩余空间”

我对 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 minikube

9
推荐指数
1
解决办法
4187
查看次数

如何使用crictl找出容器的PID

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)

containers kubernetes

9
推荐指数
1
解决办法
1万
查看次数

Google Container Engine 上带有“kubectl Exposure”的静态 IP 永远处于 &lt;pending&gt; 状态

我正在尝试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 并看到应用程序,即一切正常。

但是,当我执行以下操作时:

  1. 使用 gcloud 网络界面创建静态 IP 地址(网络 -> 外部 IP 地址 -> 保留静态 IP 地址)

  2. 使用与上述相同的命令重新创建服务,但使用额外的--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 gcloud

8
推荐指数
1
解决办法
4445
查看次数

Kubernetes - 如何将 docker run 命令行参数映射到 kubectl 命令行

我需要在 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)

command-line-interface docker kubernetes

8
推荐指数
1
解决办法
1万
查看次数

可以将主机别名分配给 Kubernetes 中的部署吗?如果是这样,如何?

这篇文章描述了如何在 kubernetes 中为 pod 分配主机别名,无论如何都可以为部署而不是为 pod 那样做?

在 kubernetes 中添加主机条目以提供主机名解析的第一行(在检查像 8.8.8.8 这样的服务器之前)的任何其他建议也将作为答案受到欢迎。

hosts internal-dns kubernetes google-kubernetes-engine

8
推荐指数
2
解决办法
2万
查看次数

Kubernetes 部署“无法使用本地注册表、minikube 拉取镜像”

尽管使用相同映像注册表的其他部署按预期工作,但我deploymentminikube本地注册表中收到“无法拉取映像”错误。

我的工作流程是从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)

我还应该检查什么?如何获得有关失败的更多详细信息?

进一步调试

我也检查过:

  • minikube 节点可以达到localhost:5000
$ minikube …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes minikube

8
推荐指数
1
解决办法
1万
查看次数

如何在 Kubernetes 中设置 Mosquitto MQTT 代理

我一直在尝试在 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)

kubernetes mqtt

8
推荐指数
1
解决办法
1万
查看次数