我已将集群中的 pod 扩展至 20 个,当我第二天看到时,已重新创建了少数扩展的 pod。
当我说重新创建 POD 时,它会被删除并重新创建,并且重新创建的 Pod 和缩放的 Pod 的时间戳会有所不同。
我无法找到重新创建 POD 的原因。
我无法找到哪个 POD 进行了重新创建,因为该 POD 已被删除并消失。Journalctl 中没有关于重新创建哪个 POD 的日志。有什么方法可以进一步调试以找到 POD 重新创建的原因。或 POD 被删除的可能原因是什么。
注意:我定义了就绪性和活性探针,但根据我的理解,这些探针将作用于容器,并且不会导致 POD 重新创建。
kubectl debug我正在尝试通过尝试使用在 aws eks 中默认禁用的临时容器来调试 distroless POD 。我正在使用 aws eks 1.21
\xe2\x9c\x97 kubectl debug -it opentelemetry-collector-agent-6hqvf --image=busybox --target=some-app\n\nerror: ephemeral containers are disabled for this cluster (error from server: "the server could not find the requested resource")\nRun Code Online (Sandbox Code Playgroud)\n那么如何为 EKS 启用它们呢?
\n我正在尝试在 Kubernetes 集群上卸载并重新安装 cert-manager。他们的卸载文档提到:
在继续之前,请确保用户创建的所有 cert-manager 资源均已删除。您可以使用以下命令检查任何现有资源:
$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces
该命令输出数百个资源,分布在二十几个命名空间中。
如何有效地删除它们,而不删除命名空间中的其他任何内容?
该kubectl delete命令在删除所有特定类型时需要指定命名空间,如下所示:kubectl delete certificates -n example-ns,所以这在这里不好。
在指定的同时按名称删除每个循环-A也不起作用,因为我需要指定名称空间:
$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Run Code Online (Sandbox Code Playgroud)
这里正确的 cli 魔法是什么?
升级到 v1.24.0 后(删除 Dockershim 后),我必须安装cri-dockerd,然后我执行了以下操作:
\nsudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.0.196\nRun Code Online (Sandbox Code Playgroud)\n我选择flannel作为网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\nRun Code Online (Sandbox Code Playgroud)\n到目前为止,一切都按预期进行,但在主节点上启用调度、加入工作节点并部署我的 Pod 和服务后,我注意到一个奇怪的网络问题,即NodePort和ClusterIP服务在节点之间无法工作(使用一个节点时没有问题) 。
\n后来我发现 pod 是从docker 网络( 172.17.0.*) 获取 IP 地址,而不是从--pod-network-cidr=10.244.0.0/16:
masterzulu@master-zulu:~$ kubectl get pods --all-namespaces -o wide\nNAMESPACE NAME READY STATUS RESTARTS AGE IP NODE \n\ndjango-space django-588cb669d4-46b4w 1/1 Running 0 3m35s 172.17.0.4 master-zulu\ndjango-space postgres-deployment-b58d5ff94-hs7t4 1/1 Running 0 3m35s 172.17.0.5 master-zulu\nkube-system coredns-6d4b75cb6d-8gw6c 1/1 Running 0 …Run Code Online (Sandbox Code Playgroud) 概括:
我有一个运行 kubectl port-forward 的 docker 容器,将作为 k8s 服务运行的 postgres 服务的端口 (5432) 转发到本地端口 (2223)。在 Dockerfile 中,我暴露了相关端口 2223。然后我通过发布该端口来运行容器 ( -p 2223:2223)
现在,当我尝试通过访问 postgres 时psql -h localhost -p 2223,出现以下错误:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
但是,当我docker exec -ti对上述容器执行操作并运行上述 psql 命令时,我能够连接到 postgres。
Dockerfile 命令:
EXPOSE 2223
CMD ["bash", "-c", "kubectl -n namespace_test port-forward service/postgres-11-2 2223:5432"]
Run Code Online (Sandbox Code Playgroud)
Docker 运行命令:
docker run -it --name=k8s-conn-12 -p 2223:2223 my_image_name:latest
Run Code Online (Sandbox Code Playgroud)
docker …
如何执行到K8s节点?
到目前为止,我只找到了执行节点上运行的容器的方法。
我想避免ssh。
kubectl ×6
kubernetes ×6
aws-eks ×1
cert-manager ×1
docker ×1
kubeadm ×1
networking ×1
psql ×1