我正在尝试使用以下命令强制删除来删除我的 Pod
kubectl 删除 pod my-pod-fg4ss --grace-period=0 --force
但我的 Pod 正在重新创建
my-pod-fg4ss 0/3 容器创建 0 2d3h
我无法删除 Pod
我想使用 kubectl cp 将文件从已完成的 pod 复制到我的本地主机(本地计算机)。我使用了kubectl cp /:/,但是,它给了我一个错误:无法在已完成的 pod 中执行到容器中;当前阶段是成功错误。有没有办法从已完成的 Pod 中复制文件?它不需要是 kubectl cp。任何帮助表示赞赏!
尝试使用以下命令运行基于图像的 Pod Dockerfile
:
...
ENTRYPOINT [ "./mybashscript", ";", "flask" ]
CMD [ "run" ]
Run Code Online (Sandbox Code Playgroud)
我期望完整的命令是./mybashscript; flask run
. 然而,在此示例中,pod
/container
执行./mybashscript
,但 不执行flask
。
我还尝试了一些变体,例如:
...
ENTRYPOINT [ "/bin/bash", "-c", "./mybashscript && flask" ]
CMD [ "run" ]
Run Code Online (Sandbox Code Playgroud)
现在,flask
被执行但run
被忽略。
PS:我试图理解为什么这不起作用,并且我知道我可以将所有内容放入脚本中entrypoint
或将所有内容放入bash
脚本中,但这不是重点。
我试图调试一些安装问题,安装日志将我引导到以下路径/var/lib/kubelet/pods
,即
/var/lib/kubelet/pods/f6affad1-941d-4df1-a0b7-38e3f2ab99d5/volumes/kubernetes.io~nfs/my-pv-e0dbe341a6fe475c9029fb372e
如何将根目录的guid映射pods
到实际运行的pod或容器?
(f6affad1-941d-4df1-a0b7-38e3f2ab99d5
在上面的例子中)
kubectl
我没有看到与or返回的值有任何相关性crictl
。
我有一个在 k8s 上运行的 java 进程。
\n我设置Xms和Xmx来处理。
\njava -Xms512M -Xmx1G -XX:SurvivorRatio=8 -XX:NewRatio=6 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -jar automation.jar\n
Run Code Online (Sandbox Code Playgroud)\n我的预期是 pod 应该消耗 1.5 或 2 GB 内存,但它消耗的内存更多,接近 3.5 GB。太多了。\n如果 \xc4\xb1 在虚拟机上运行我的进程,它消耗的内存要少得多。
\n当 \xc4\xb1 检查 pod 的内存统计信息时,\xc4\xb1 表示 pod 分配了过多的缓存内存。
\nRSS近1.5GB就可以了。因为Xmx是1gb。但为什么缓存近3GB。
\n有什么方法可以调整或控制这种用法吗?
\n/app $ cat /sys/fs/cgroup/memory/memory.stat\ncache 2881228800\nrss 1069154304\nrss_huge 446693376\nmapped_file 1060864\nswap 831488\npgpgin 1821674\npgpgout 966068\npgfault 467261\npgmajfault 47\ninactive_anon 532504576\nactive_anon 536588288\ninactive_file 426450944\nactive_file 2454777856\nunevictable 0\nhierarchical_memory_limit 16657932288\nhierarchical_memsw_limit 9223372036854771712\ntotal_cache 2881228800\ntotal_rss 1069154304\ntotal_rss_huge 446693376\ntotal_mapped_file 1060864\ntotal_swap 831488\ntotal_pgpgin 1821674\ntotal_pgpgout 966068\ntotal_pgfault 467261\ntotal_pgmajfault 47\ntotal_inactive_anon 532504576\ntotal_active_anon 536588288\ntotal_inactive_file 426450944\ntotal_active_file 2454777856\ntotal_unevictable 0\n
Run Code Online (Sandbox Code Playgroud)\n 我正在学习kubernetes的无头服务。
我毫无疑问地理解以下内容(如果我错了,请纠正我):
我不太确定的是:
如果你不需要负载均衡,但想直接连接到pod(例如数据库),你可以使用headless服务
但这到底是什么意思呢?
因此,以下是我对 k8s 中无头服务的想法以及两个带有示例的问题
假设我在一个服务后面有 3 个 PostgreSQL 数据库实例的副本,如果它是一个常规服务,我知道默认情况下对数据库的请求将以循环方式路由到三个数据库 Pod 之一。这确实是一个负载平衡。
问题一:
如果使用无头服务,上面引用的语句是否意味着无头服务将坚持使用三个数据库 pod 之一,并且永远不会更改,直到 pod 死亡?我问这个问题是因为否则如果不坚持使用三个 Pod 之一,它仍然会进行负载平衡。有人可以澄清一下吗?
问题2:
我觉得无论是常规服务还是无头服务,客户端应用程序只需要知道服务的 DNS 名称即可与 k8s 集群中的数据库进行通信。不是这样吗?我的意思是,那么使用无头服务有什么意义呢?对我来说,只有当客户端应用程序代码确实需要知道它所连接的 Pod 的 IP 地址时,无头服务才有意义。因此,只要客户端应用程序不需要知道 IP 地址,它始终可以通过集群中的服务 DNS 名称通过常规服务或无头服务与数据库进行通信,我在吗?
我\xe2\x80\x99m 很难理解我的水平 Pod 自动缩放器发生了什么\xe2\x80\x99s。
\n\n如果内存或 CPU 使用率超过 80%,I\xe2\x80\x99m 会尝试扩展我的部署。
\n\n这里\xe2\x80\x99是我的HPA模板:
\n\napiVersion: autoscaling/v2beta2\nkind: HorizontalPodAutoscaler\nmetadata:\n name: my-hpa\nspec:\n scaleTargetRef:\n apiVersion: apps/v1\n kind: Deployment\n name: my-deployment\n minReplicas: 2\n maxReplicas: 10\n metrics:\n - type: Resource\n resource:\n name: cpu\n target:\n type: Utilization\n averageUtilization: 80\n - type: Resource\n resource:\n name: memory\n target:\n type: Utilization\n averageUtilization: 80\n
Run Code Online (Sandbox Code Playgroud)\n\n问题是,尽管使用率低于 80%,但它\xe2\x80\x99 已经在 3 个副本上呆了好几天了,而且我不\xe2\x80\x99 不明白为什么。
\n\n$ kubectl get hpa --all-namespaces\n\nNAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE\nmy-ns my-hpa Deployment/my-deployment 61%/80%, 14%/80% 2 10 3 2d15h\n …
Run Code Online (Sandbox Code Playgroud) autoscaling kubernetes kubernetes-pod horizontal-pod-autoscaling
我有这个命令来列出Kubernetes
没有运行的pod:
sudo kubectl get pods -n my-name-space | grep -v Running
Run Code Online (Sandbox Code Playgroud)
是否有一个命令可以返回未运行的 Pod 计数?
In Kubernetes I create a configmap using:
kubectl create configmap dd-agent-config --from-file=./kubernetes/datadog/configmap.yaml
configmap.yaml:
kind: ConfigMap
apiVersion: v1
metadata:
name: dd-agent-config
namespace: default
data:
etcd: |-
ad_identifiers:
- etcd
init_config:
instances:
- prometheus_url: "http://%%host%%:2379/metrics"
ssl_cert: "/etc/kubernetes/pki/etcd/peer.crt"
ssl_private_key: "/etc/kubernetes/pki/etcd/peer.key"
ssl_ca_cert: "/etc/kubernetes/pki/etcd/ca.crt"
Run Code Online (Sandbox Code Playgroud)
The description of the configmap loaded in Kubernetes:
$ kubectl describe configmap dd-agent-config
Name: dd-agent-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
configmap.yaml:
----
kind: ConfigMap
apiVersion: v1
metadata:
name: dd-agent-config
namespace: default
data:
etcd: |-
ad_identifiers:
- etcd
init_config: …
Run Code Online (Sandbox Code Playgroud) 我知道一个 pod 可以有多个容器。但是,我试图找出一个 pod 内的容器数量是否有最大限制。我用谷歌搜索,但找不到答案。
我已经自定义了 coredns 映像并将其推送到我的 azure 容器注册表 (ACR)。
现在,在安装 k3s 之后出现的默认 coredns pod 中,我想使用my_azure_acr_repo/proj/customize-coredns:latest
image而不是 rancher/coredns-coredns:1.8.3
. 因此,我编辑了 coredns 部署kubectl edit deploy coredns -n kube-system
,并将我的 acr 映像替换为 rancher one。但现在 coredns pod 无法提取我的 acr 映像并在 pod 描述中给出错误:
Failed to pull image "my_azure_acr_repo/proj/customize-coredns:latest": rpc error:
code = Unknown desc = failed to pull and unpack image "my_azure_acr_repo/proj/customize-coredns:latest":
failed to resolve reference "my_azure_acr_repo/proj/customize-coredns:latest": failed to
authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized
Run Code Online (Sandbox Code Playgroud)
如何验证 acr 映像,以便 pod 拉取它?
当 Kubernetes 返回 false 时会发生什么readiness-probe
?超时后 Kubernetes 是否会重新启动该 pod?Kubernetes 等待准备就绪需要多长时间?
kubernetes ×12
kubernetes-pod ×12
kubectl ×2
autoscaling ×1
azure-aks ×1
configmap ×1
containers ×1
coredns ×1
docker ×1
dockerfile ×1
jvm ×1
memory ×1
memory-leaks ×1