标签: kubernetes-pod

部署规范和模板中的标签

在下面的 yaml 中:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  labels:
    app: my-nginx # Line 6
spec:             # Line 7  
  replicas: 2
  selector:
    matchLabels:
      app: my-nginx    # line 11
  template:
    metadata:
      labels:
        app: my-nginx   # Line 15
    spec:                # Line 16
      containers:
      - name: my-nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
        resources:
          limits:
            memory: "128Mi" #128 MB
            cpu: "200m" #200 millicpu (.2 cpu or 20% of the cpu)
Run Code Online (Sandbox Code Playgroud)

app: nginx第 6 行为部署指定了标签 ( )。

第 7 行的部署规范使用第 16 行中提到的 …

kubernetes kubernetes-pod

3
推荐指数
1
解决办法
1761
查看次数

为什么 cAdvisor 指标中的容器内存使用量翻倍?

我测试了这些查询。第一个查询的值是第二个查询的一半:

sum(container_memory_working_set_bytes{image!="",name=~"^k8s_.*",pod=~"$pod"}) by (pod)

sum (container_memory_working_set_bytes{pod=~"$pod"}) by (pod)

为什么写作的image! = "", name = ~ "^ k8s_. *"价值会减半?

cgroups kubernetes prometheus cadvisor kubernetes-pod

3
推荐指数
1
解决办法
6068
查看次数

使用 Golang k8s 客户端观看并等待 POD 删除

我需要观察(并等待)直到 POD 被删除。我需要这样做是因为我需要在第一个 pod 被删除后立即启动第二个 pod(具有相同的名称)。

这就是我正在尝试的:

func (k *k8sClient) waitPodDeleted(ctx context.Context, resName string) error {
    watcher, err := k.createPodWatcher(ctx, resName)
    if err != nil {
        return err
    }

    defer watcher.Stop()

    for {
        select {
        case event := <-watcher.ResultChan():

            if event.Type == watch.Deleted {
                k.logger.Debugf("The POD \"%s\" is deleted", resName)

                return nil
            }

        case <-ctx.Done():
            k.logger.Debugf("Exit from waitPodDeleted for POD \"%s\" because the context is done", resName)
            return nil
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,当我获取Deleted事件时,是 POD 接收到要删除的事件时,而不是实际删除时。做了一些额外的测试,我用以下代码结束了调试过程:

case event := …
Run Code Online (Sandbox Code Playgroud)

go kubernetes kubernetes-pod

3
推荐指数
1
解决办法
3435
查看次数

当容器注册表也无法访问时,控制 pod 从“错误:ImagePullBackOff”恢复

当我们的容器注册表和整个 K8S 集群都断电时,我们发生了一次严重的中断。当集群恢复速度快于容器注册表时,我的 pod(有状态集的一部分)陷入困境 Error: ImagePullBackOff

是否有配置设置可以定期重试从 CR 下载映像或在无需手动干预的情况下恢复?

我查看了imagePullPolicy,但这不适用于 CR 不可用的情况。

kubernetes container-registry kubernetes-pod

3
推荐指数
1
解决办法
797
查看次数

如何显示一段时间内重启的kubernetes pod数量?

我有带有 prometheus 和 grafana 的 kubernetes 集群用于监控,我正在尝试构建一个仪表板面板,该面板将显示我正在查看的期间已重新启动的 Pod 数量。

Atm 我有一个查询,如果 pod 的创建时间在范围内(意味着它已在此期间重新启动),则用 1 填充向量,否则用 -1 填充。

-sgn((time() - kube_pod_created{cluster="$cluster"}) - $__range_s)

这看起来像什么

有没有办法计算这个向量中正值的数量并显示它?就像在这个例子中一样,只有一个里面有红色 1 的盒子。或者也许有更好的方法来完成我正在尝试的事情。

grafana kubernetes prometheus kubernetes-pod

3
推荐指数
1
解决办法
7813
查看次数

Airflow - KubernetesPodOperator - 损坏的 DAG:意外的关键字参数“request_cpu”

我在 Docker 容器中使用以下 Airflow 版本,目前遇到一些与损坏的 DAG 相关的问题

FROM apache/airflow:2.3.4-python3.9
Run Code Online (Sandbox Code Playgroud)

我有其他 DAG 使用相同的参数“request_cpu”运行并且功能完美,我不确定问题可能是什么

Broken DAG: [/home/airflow/airflow/dags/my_project.py] Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/models/baseoperator.py", line 858, in __init__
    self.resources = coerce_resources(resources)
  File "/home/airflow/.local/lib/python3.10/site-packages/airflow/models/baseoperator.py", line 133, in coerce_resources
    return Resources(**resources)
TypeError: Resources.__init__() got an unexpected keyword argument 'request_cpu'
Run Code Online (Sandbox Code Playgroud)

这是我当前的 DAG 配置

# DAG configuration
DAG_ID = "my_project_id"
DAG_DESCRIPTION = "description"
DAG_IMAGE = image

default_args = {
    "owner": "airflow",
    "depends_on_past": False,
    "max_active_tasks": 1,
    "max_active_runs": 1,
    "email_on_failure": True,
    "email": ["my@mail.com"],
    "retries": 0,
    "email_on_retry": False,
    "image_pull_policy": …
Run Code Online (Sandbox Code Playgroud)

kubernetes airflow kubernetes-pod

3
推荐指数
1
解决办法
2320
查看次数

kubernetes复制控制器

我有一个简单的kubernetes集群,有一个主人和3个小兵.在这种情况下,如果我运行一个简单的nginx或一个mysql的pod它工作正常,但是,如果我将KIND的类型更改为yaml文件,我尝试运行一个复制的服务,pods将启动但我无法访问服务.

这是我的nginx的yaml文件,包含3个副本:

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

这是服务yaml配置文件:

apiVersion: v1
kind: Service
metadata: 
  labels: 
    name: nginx
  name: nginx
spec: 
  ports:
    - port: 80
  selector: 
    name: nginx
Run Code Online (Sandbox Code Playgroud)

我运行它:

# kubectl create -f nginx-rc.yaml
# kubectl create -f nginx-rc-service.yaml
Run Code Online (Sandbox Code Playgroud)

如果我跑:

# kubectl get pod,svc,rc -o wide
Run Code Online (Sandbox Code Playgroud)

我知道了:

NAME          READY     STATUS    RESTARTS   AGE       NODE
nginx-kgq1s   1/1       Running …
Run Code Online (Sandbox Code Playgroud)

service docker kubernetes kubernetes-pod

2
推荐指数
1
解决办法
1293
查看次数

hostnetwork pod-仅1个容器应暴露于Internet

这些是我进入kubernetes的第一步,因此,如果我的术语使用不当等,请原谅。一个mysql数据库和一个powerdns。Powerdns应该将端口53公开给Internet,而mysql应该仅在群集中公开其端口。因此,我设置以下内容:


对于Powerdns容器而不是mysql,“ pod ”的“ hostNetwork:true”

端口3306的“类型:ClusterIP”服务

现在一切都在运行。Powerdns可以连接到mysql,并且位于Internet的端口53上。但是与我的假设相反,mysql数据库也暴露于互联网。

谁能给我提示我做错了什么?

kubernetes kubernetes-pod

2
推荐指数
1
解决办法
1579
查看次数

如何在 kubernetes yaml 文件的环境变量中分配集群、命名空间和 pod 名称

我需要将集群、命名空间和 pod 名称从我部署在 Kubernetes 集群中的容器传递给 AppDynamics 代理。

我尝试了以下内容,但这不起作用。

containers:
      - env:
        - name: JAVA_OPTS
          value: -Dappdynamics.agent.nodeName=$HOST-$spec.nodeName-spec.PodName
Run Code Online (Sandbox Code Playgroud)

- name: appdynamics.agent.nodeName
  value= $HOST-$spec.nodeName-spec.PodName
Run Code Online (Sandbox Code Playgroud)

任何人都可以在这里帮助我如何收集详细信息并传递给AppD。提前致谢。

appdynamics kubernetes kubernetes-namespace kubernetes-pod

2
推荐指数
1
解决办法
6847
查看次数

如果包含 2 个容器,则 pod 的 kubectl 日志

我有吊舱,它有 2 个容器。如果我给出命令“ kubectl logs pod_name”,它不会列出日志,我需要在此命令的同时给出容器名称。

当我们给出命令“ kubectl logs pod_name”时,有没有办法显示两个容器日志?

kubernetes kubectl kubernetes-pod

2
推荐指数
1
解决办法
562
查看次数