标签: kubernetes-pod

在 Google Cloud Kubernetes pod 中消耗磁盘空间的日志上的日志轮换

我们在 Google Cloud Platform Kubernetes 集群中有一个 pod,将 JsonFormatted 写入 StdOut。这是 Stackdriver 开箱即用的。但是,我们看到 pod 的磁盘使用量一直在增长,我们无法理解如何在 Deployment 上设置最大大小以进行日志轮换。

Google Cloud 和 Kubernetes 上的文档对此不清楚。

这只是最后一个小时:

Pod 上的内存消耗

logging log-rotation google-cloud-platform kubernetes kubernetes-pod

6
推荐指数
1
解决办法
5543
查看次数

拉取 docker 镜像时 Kubernetes ImagePullBackOff 错误

我在 Google Container Registry 中有一个大小为 6.5GB 的图像。当我尝试通过部署在 Kubernetes 集群节点(工作节点)上拉取镜像时,会发生错误:ErrImagePull(或有时是 ImagePullBackOff)。我使用describe命令详细查看错误。该错误被描述为无法拉取映像“gcr.io/.../..”:rpc 错误:代码 = 已取消 desc = 上下文已取消 可能是什么问题以及如何缓解它?

rpc kubernetes docker-image kubernetes-pod

6
推荐指数
1
解决办法
8191
查看次数

单个服务公开的多个 Pod 的会话亲和性设置

我有一个设置 Metallb 作为 LB,在 K8S 集群上安装了 Nginx Ingress。我已经阅读了有关会话关联及其重要性的内容,但到目前为止我还没有清楚的了解。

如何创建一个服务来公开同一应用程序的多个 Pod?创建单个服务入口点后,如何将具体的客户端IP映射到服务抽象出来的Pod?

是否有任何博客根据 kubernetes 中如何完成客户端 IP 和 POD 之间的映射来解释这个概念?

但是我在 YAML 中没有看到客户端的 IP。那么,这个服务如何将流量映射到各自的客户端到它的端点?这是我的问题。

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10000
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress kubernetes-pod kubernetes-service

6
推荐指数
2
解决办法
5290
查看次数

kubernetes中的Label和Selector有什么区别?

看了kubernetes.io上的官方文档,我还是想知道 Kubernetes 中 label 和 selector 到底有什么区别?

编辑:例如考虑以下 Kubernetes 对象,以下 yaml 文件的 Labels 和 Selectors 有什么区别。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: label-demo
  labels:
    environment: production
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: App1
  template:
    metadata:
      labels:
        environment: production
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.7.9
Run Code Online (Sandbox Code Playgroud)

kubernetes devops kubernetes-pod

6
推荐指数
2
解决办法
3571
查看次数

Kubectl 等待 statefulset 的一个 pod 准备就绪?

要等待某个 pod 完成,命令是

kubectl wait --for=condition=Ready pod/pod-name

同样,我想等待 statefulset 中的任何一个 pod 准备就绪。我试过下面的命令没有用,

kubectl wait --for=condition=Ready statefulset/statefulset-name

命令选项应该是什么样的?

kubernetes kubectl kubernetes-statefulset kubernetes-pod

6
推荐指数
2
解决办法
2637
查看次数

Kubernetes 中容器端口和目标端口的区别?

如何container port从不同targetports在Kubernetes容器?它们是否可以互换使用,如果可以,为什么?

我遇到了下面的代码片段,其中containerPort用于表示portKubernetes 中的 pod。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
  labels:
    app: demo-voting-app
spec:
  replicas: 1
  selector:
    matchLabels:
      name: postgres-pod
      app: demo-voting-app
  template:
    metadata:
      name: postgres-pod
      labels:
        name: postgres-pod
        app: demo-voting-app

    spec:
      containers:
      - name: postgres
        image: postgres:9.4
        ports:
        - containerPort: 5432
        
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,他们为containerPort参数提供了 5432 (在最后一行)。那么,这containerPorttargetport?

据我所知,该术语port泛指portservice(Kubernetes)。如果我不正确,请纠正我。

port containers kubernetes kubernetes-pod

6
推荐指数
2
解决办法
1527
查看次数

重新触发时,helm 回滚无法识别失败的部署

我有一个像下面这样的场景,有两个版本 - Release-A 和 Release-B。

目前,我在 Release-A 上,需要将所有微服务升级到 Release-B。我尝试使用以下命令执行微服务的掌舵升级 - “mymicroservice”以交付 Release-B。

helm --kubeconfig /home/config upgrade --namespace testing --install --wait mymicroservice mymicroservice-release-b.tgz
Run Code Online (Sandbox Code Playgroud)

由于某些问题,部署对象无法安装并进入错误状态。

观察到这一点,我执行以下回滚命令。

helm --kubeconfig /home/config --namespace testing rollback mymicroservice
Run Code Online (Sandbox Code Playgroud)

由于某些问题(可能是间歇性系统故障或用户行为),Release-A 的部署对象也进入了 failed/Crashloopbackoff 状态。虽然这会导致 helm 回滚成功,但部署对象仍然没有进入运行状态。

一旦我进行了必要的更正,我将重试回滚。由于部署规范已经使用 helm 进行了更新,因此即使处于失败状态,它也不会尝试重新安装部署对象。

Helm 是否有任何选项可以处理上述情况?

尝试使用--force标志,但在使用 --force 标志方法时,还有其他与微服务中的服务对象替换相关的错误。

Rollback "mymicroservice -monitoring" failed: failed to replace object: Service "mymicroservice-monitoring" is invalid: spec.clusterIP: Invalid value: "": field is immutable
Run Code Online (Sandbox Code Playgroud)

kubernetes microservices kubernetes-helm kubernetes-deployment kubernetes-pod

6
推荐指数
1
解决办法
145
查看次数

在就绪探测失败后是否重试了对 Pod 的探测

readinessProbe:指示容器是否准备好响应请求。如果就绪探测失败,端点控制器会从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。初始延迟之前的默认就绪状态为失败。如果容器不提供就绪探测,则默认状态为成功

如果就绪探测失败(并且从端点删除了 Pod 的 IP 地址),接下来会发生什么?会再次检查 Pod 的就绪探测条件吗?它会在初始延迟后再次检查吗?Pod 的 IP 地址是否有可能再次添加到端点(如果 Pod 在就绪探测失败后自我修复)?如果 Pod 被治愈,它会再次收到流量吗?

self-healing kubernetes google-kubernetes-engine kubernetes-pod readinessprobe

6
推荐指数
1
解决办法
715
查看次数

如何从 K3s 集群中的应用程序 pod 中删除机密的依赖关系

我有一个 k3s 集群,我的应用程序 Pod 正在运行。当我登录(使用命令)时,在所有 Pod 中kubectl exec <pod_name> -n <ns> -it /bin/bash都有kubernetes.io一个目录,其中包含任何人都可以获得的秘密令牌 cat token

root@Ubuntu-VM: kubectl exec app-test-pod -n app-system -it /bin/bash
root@app-test-pod:/var/run/secrets/kubernetes.io/serviceaccount# ls -lhrt
total 0
lrwxrwxrwx 1 root root 12 Oct 11 12:07 token -> ..data/token
lrwxrwxrwx 1 root root 16 Oct 11 12:07 namespace -> ..data/namespace
lrwxrwxrwx 1 root root 13 Oct 11 12:07 ca.crt -> ..data/ca.crt
Run Code Online (Sandbox Code Playgroud)

这似乎是一个安全威胁(或漏洞)。有人可以让我知道是否有办法从 pod 中删除此依赖项,以便我可以限制用户(甚至是 root 用户)在登录 pod 时访问此机密?另外,如果这是可能的,那么 pod 将如何与 API 服务器通信?

kubernetes kubernetes-security kubernetes-pod kubernetes-secrets k3s

5
推荐指数
1
解决办法
364
查看次数

Shell 脚本应等到 kubernetes pod 运行

在一个简单的 bash 脚本中,我想运行多个kubectlhelm命令,例如:

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.5.4 \
  --set installCRDs=true
kubectl apply -f deploy/cert-manager/cluster-issuers.yaml
Run Code Online (Sandbox Code Playgroud)

我的问题是,在helm install命令之后我必须等到 cert-manager pod 运行,然后kubectl apply才能使用该命令。现在脚本调用它太早了,所以它会失败。

bash shell kubectl kubernetes-pod

5
推荐指数
1
解决办法
8633
查看次数