kubectl - k8s 集群上的“kubectl get”cli 响应时间太长
问题描述
我有两个小型 k8s 集群(一个带有法兰绒,一个带有印花布)。
安装两个 k8s 集群的确切步骤,唯一的区别是在安装时选择 Pod 网络(一个使用 flannel,一个使用 calico)。
问题是“kubectl get all”命令在两个集群上的响应时间不同。使用 calico 在 k8s 上响应大约需要一分钟,而使用 flannel 的 k8s 会立即响应。
确定问题不是由于 Pod 网络选择选择造成的,因为两个集群上的旋转 pod 等都没有问题,两者都按预期工作。
基于法兰绒的 k8s 时间 0m0.167s
$ time kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6db489d4b7-h2mvv 1/1 Running 0 17m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 1/1 1 1 17m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6db489d4b7 1 1 1 17m
real 0m0.167s
user 0m0.100s
sys 0m0.028s
基于 calico 的 k8s 集群上的时间挂起并仅在近一分钟后才响应.. 0m59.294s
$ time kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6db489d4b7-b8c2g 1/1 Running 0 11m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 1/1 1 1 11m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6db489d4b7 1 1 1 11m
real 0m59.294s
user 0m0.316s
sys 0m0.072s
在集群安装时,确保以普通用户身份运行以下命令
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ ll .kube/config
-rw------- 1 ubuntu ubuntu 5455 Jan 23 10:17 .kube/config
我尝试将 kubeconfig env 变量设置为
export KUBECONFIG=$HOME/.kube/config
这仍然没有修复 kubectl 命令的响应时间。
解决方案
在错误的方向上花费了很多时间后,发现cache
andhttp-cache
下的文件夹$HOME/.kube
没有正确的 chown 权限。
一旦修复了这两个文件夹的权限,响应(cache and http-cache)
时间也恢复正常$HOME/.kube
kubectl get
。
ubuntu@k8s-calico-master-1:~/.kube$ ll
total 24
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 23 10:18 ./
drwxr-xr-x 5 ubuntu ubuntu 4096 Jan 23 10:17 ../
drwxr-x--- 3 ubuntu ubuntu 4096 Jan 23 10:18 cache/
-rw------- 1 ubuntu ubuntu 5455 Jan 23 10:17 config
drwxr-x--- 3 ubuntu ubuntu 4096 Jan 23 10:18 http-cache/
ubuntu@k8s-calico-master-1:~/.kube$ cd cache/
ubuntu@k8s-calico-master-1:~/.kube/cache$ ll
total 12
drwxr-x--- 3 ubuntu ubuntu 4096 Jan 23 10:18 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 23 10:18 ../
drwxr-x--- 3 ubuntu ubuntu 4096 Jan 23 10:18 discovery/
ubuntu@k8s-calico-master-1:~/.kube$ cd http-cache/
ubuntu@k8s-calico-master-1:~/.kube/http-cache$ ll
total 164
drwxr-x--- 3 ubuntu ubuntu 4096 Jan 23 10:18 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 23 10:18 ../
drwxr-x--- 2 ubuntu ubuntu 4096 Jan 23 10:18 .diskv-temp/
-rw-rw---- 1 ubuntu ubuntu 813 Jan 23 10:18 f436dd33b3ceee24aa367363c323688e
ubuntu@k8s-calico-master-1:~/.kube/http-cache$ time kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6db489d4b7-b8c2g 1/1 Running 0 52m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 61m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 1/1 1 1 52m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6db489d4b7 1 1 1 52m
real 0m0.104s
user 0m0.104s
sys 0m0.024s
推荐阅读
- c++ - 在结构中创建智能指针?
- php - php如何在命令行中传递锚点
- python - Python Pandas - 检查一个值是否在前 n 行中
- java - 用于 MIDI 音序器的 Scala 中最准确的计时器
- iis - Windows 身份验证 - IIS 8.5 中的特定文件夹权限
- google-sheets - 谷歌表格递归数组公式
- php - 如何在 PHP 中循环 $_POST
- typescript - 如何在 TypeScript 中键入一个按名称包装另一个函数的函数
- angular - 更改数字列表时屏幕上的下一个值会更改
- php - PHP 函数 preg_match() 中的正则表达式拼写错误