在下面的 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 行中提到的 …
我测试了这些查询。第一个查询的值是第二个查询的一半:
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_. *"价值会减半?
我需要观察(并等待)直到 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) 当我们的容器注册表和整个 K8S 集群都断电时,我们发生了一次严重的中断。当集群恢复速度快于容器注册表时,我的 pod(有状态集的一部分)陷入困境 Error: ImagePullBackOff。
是否有配置设置可以定期重试从 CR 下载映像或在无需手动干预的情况下恢复?
我查看了imagePullPolicy,但这不适用于 CR 不可用的情况。
我有带有 prometheus 和 grafana 的 kubernetes 集群用于监控,我正在尝试构建一个仪表板面板,该面板将显示我正在查看的期间已重新启动的 Pod 数量。
Atm 我有一个查询,如果 pod 的创建时间在范围内(意味着它已在此期间重新启动),则用 1 填充向量,否则用 -1 填充。
-sgn((time() - kube_pod_created{cluster="$cluster"}) - $__range_s)
有没有办法计算这个向量中正值的数量并显示它?就像在这个例子中一样,只有一个里面有红色 1 的盒子。或者也许有更好的方法来完成我正在尝试的事情。
我在 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集群,有一个主人和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) 这些是我进入kubernetes的第一步,因此,如果我的术语使用不当等,请原谅。一个mysql数据库和一个powerdns。Powerdns应该将端口53公开给Internet,而mysql应该仅在群集中公开其端口。因此,我设置以下内容:
对于Powerdns容器而不是mysql,“ pod ”的“ hostNetwork:true”
端口3306的“类型:ClusterIP”服务
现在一切都在运行。Powerdns可以连接到mysql,并且位于Internet的端口53上。但是与我的假设相反,mysql数据库也暴露于互联网。
谁能给我提示我做错了什么?
我需要将集群、命名空间和 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。提前致谢。
我有吊舱,它有 2 个容器。如果我给出命令“ kubectl logs pod_name”,它不会列出日志,我需要在此命令的同时给出容器名称。
当我们给出命令“ kubectl logs pod_name”时,有没有办法显示两个容器日志?
kubernetes ×10
kubernetes-pod ×10
prometheus ×2
airflow ×1
appdynamics ×1
cadvisor ×1
cgroups ×1
docker ×1
go ×1
grafana ×1
kubectl ×1
service ×1