我基本上想找到kubelet当前正在使用的硬驱逐策略。
我检查了K8s节点上/etc/systemd/system/kubelet.service文件中的设置。我提到的策略如下:
--eviction-hard=nodefs.available<3Gi
但是,当nodefs.available <10%(默认kubernetes设置)时,我的pod似乎被驱逐了。我一直无法找到一种方法来了解kubernetes正在使用的当前参数。
谁能让我知道我们如何通过kubernetes集群中的另一个Pod来访问部署在一个Pod上的服务?
例:
有一个部署在Node1上的Nginx服务(以Pod名称为Nginx-12345)和另一个部署在Node2上的服务(以Pod名称为Service-23456)。现在,如果“服务”出于某种原因要与“ nginx”进行通信,那么我们如何在“ service-23456”窗格中访问“ nginx”?
作为对评论的回应,我提供了更多信息。
$ kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
coredns-66bff467f8-lkwfn 0/1 ContainerCreating 0 7m8s
coredns-66bff467f8-pcn6b 0/1 ContainerCreating 0 7m8s
etcd-masternode 1/1 Running 0 7m16s
kube-apiserver-masternode 1/1 Running 0 7m16s
kube-controller-manager-masternode 1/1 Running 0 7m16s
kube-proxy-7zrjn 1/1 Running 0 7m8s
kube-scheduler-masternode 1/1 Running 0 7m16s
Run Code Online (Sandbox Code Playgroud)
...
Jun 16 16:18:59 masternode kubelet[6842]: E0616 16:18:59.313433 6842 remote_runtime.go:105] RunPodSandbox from runtime service failed: rpc error: code = Unknown desc = failed to create pod network sandbox …Run Code Online (Sandbox Code Playgroud) 我有一个 5 个节点的 kubernetes 集群。当我添加一个简单的 nginx pod 时,它将被调度到其中一个节点,但它不会启动。它甚至不会拉图像。
这是 nginx.yaml 文件:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Run Code Online (Sandbox Code Playgroud)
当我描述 pod 时,有一个事件:Successfully assigned busybox to up02当我登录到 up02 并检查是否有任何图像被拉出时,我发现它没有被拉出,所以我手动拉动它(我想也许它需要一些启动; ) )
Pod 会一直处于 Container 创建状态。不仅是这个 Pod 出现问题,我尝试添加的任何 Pod 都出现问题。
机器上运行着一些 Kubernetes 运行所必需的 pod:
up@up01:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox 0/1 ContainerCreating 0 11m
default nginx 0/1 ContainerCreating 0 22m
kube-system dummy-2088944543-n1cd5 1/1 …Run Code Online (Sandbox Code Playgroud) 我有 kubernetes 集群,带有由 3 个节点组成的 weave CNI 插件:
问题是top显示 kubelet 在第一个 worker 上有 60-100% 的 CPU 使用率。在journalctl -u kubelet我看到很多消息(每分钟数百条)
May 19 09:57:38 kube-worker1 bash[3843]: E0519 09:57:38.075243 3843 docker_sandbox.go:205] Failed to stop sandbox "011cf10cf46dbc6bf2e11d1cb562af478eee21eba0c40521bf7af51ee5399640": Error response from daemon: {"message":"No such container: 011cf10cf46dbc6bf2e11d1cb562af478eee21eba0c40521bf7af51ee5399640"}
May 19 09:57:38 kube-worker1 bash[3843]: E0519 09:57:38.075360 3843 remote_runtime.go:109] StopPodSandbox "011cf10cf46dbc6bf2e11d1cb562af478eee21eba0c40521bf7af51ee5399640" from runtime service failed: rpc error: code = 2 desc = NetworkPlugin cni failed to teardown pod …Run Code Online (Sandbox Code Playgroud) 我在某些kubernetes节点上的CentO上遇到OOM问题。我想像在演示中一样进行设置:
--kube-reserved is set to cpu=1,memory=2Gi,ephemeral-storage=1Gi
--system-reserved is set to cpu=500m,memory=1Gi,ephemeral-storage=1Gi
--eviction-hard is set to memory.available<500Mi,nodefs.available<10%
Run Code Online (Sandbox Code Playgroud)
我在哪里添加这些参数?
我应该将它们添加到/etc/systemd/system/kubelet.service吗?什么格式?
另外,是否仅在工作节点上设置这些设置?
这是在一个活生生的环境中,所以我想一开始就做好。
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud) 我在预览帖子中搜索了此内容,但抱歉,找不到解决方案。
我在kubeadm v1.12上安装了指标服务器,并且从日志中得到了以下错误:
私有网络中有1个主节点和1个从节点。
Get https://ip-10-0-1-154:10250/stats/summary/: x509: a certificate signed by an unknown authority, unable to fully scrape metrics from source
Run Code Online (Sandbox Code Playgroud)
我没有安装任何证书。
如何安装新证书,以及在不设置新Kubernetes集群的情况下需要更改的地方?
抱歉,菜鸟问题,我尝试创建一个新证书,但无法更改kubelet。
我正在尝试使用 vagrant 和 ansible 安装 kubernetes 集群,但它不起作用。作为错误消息,我有:
TASK [Configure node ip] *******************************************************
fatal: [k8s-node-3]: FAILED! => {"changed": false, "msg": "Destination /etc/default/kubelet does not exist !", "rc": 257}
RUNNING HANDLER [docker status] ************************************************
PLAY RECAP *********************************************************************
k8s-node-3 : ok=10 changed=8 unreachable=0 failed=1 skipped=1 rescued=0 ignored=0
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
Run Code Online (Sandbox Code Playgroud)
流浪文件:
IMAGE_NAME = "ubuntu/bionic64"
Nodes = 3
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.provider "virtualbox" do |v| …Run Code Online (Sandbox Code Playgroud) 我配置了1个master 2个worker。kubernetes安装成功后。Worker1 加入集群没问题,但我无法将 Worker2 添加到集群,因为 kubelet 服务未运行。kubelet 似乎没有运行或不健康
sudo kubectl 获取节点:
名称 状态 角色 年龄 版本
master1 Ready 控制平面,master 23m v1.22.2
node1 NotReady 4m13s v1.22.2
我想知道为什么 kubelet 服务没有运行。
这里 kubelet 日志。
The start-up result is RESULT.
Dec 04 20:21:26 node2 kubelet[25435]: Flag --network-plugin has been deprecated, will be removed along with dockershim.
Dec 04 20:21:26 node2 kubelet[25435]: Flag --network-plugin has been deprecated, will be removed along with dockershim.
Dec 04 20:21:26 node2 kubelet[25435]: I1204 20:21:26.659131 25435 server.go:440] "Kubelet version" …Run Code Online (Sandbox Code Playgroud) 我知道它kubelet负责获取 PodSpecs(通常来自 API 服务器)并运行 Pod。
Kubernetes 组件 > 节点组件 > kubelet
“kubelet 采用一组通过各种机制提供的 PodSpecs,并确保这些 PodSpecs 中描述的容器正在运行和健康。”
但是 API Server 如何跟踪每个 Pod 的状态(例如运行/失败)?是否kubelet向 API 服务器发送常规请求?还是 API Server 会kubelet定期轮询?还是其他什么机制?