摘要:为什么在节点直接起容器网络不通为什么在节点直接起容器网络不通为什么在节点直接起容器网络不通使用自己的插件,而直接用起的容器并不能使用该插件,因此网络不通。
完全兼容。
对于使用 UK8S 遇到的本文档未涉及的问题,如果需要人工支持,请提供主机的 uhost-id,并添加公钥信任,将下面内容添加到ssh配置文件authorized_keys中。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGIFVUtrp+jAnIu1fBvyLx/4L4GNsX+6v8RodxM+t3G7gCgaG+kHqs1xkLBWQNNMVQz2c/vA1gMNYASnvK/aQJmI9NxuOoaoqbL/yrZ58caJG82TrDKGgByvAYcT5yJkJqGRuLlF3XL1p2C0P8nxf2dzfjQgy5LGvZ1awEsIeoSdEuicaxFoxkxzTH/OM2WSLuJ+VbFg8Xl0j3F5kP9sT/no1Gau15zSHxQmjmpGJSjiTpjSBCm4sMaJQ0upruK8RuuLAzGwNw8qRXJ4qY7Tvg36lu39KHwZ22w/VZT1cNZq1mQXvsR54Piaix163YoXfS7jke6j8L6Nm2xtY4inqd uk8s-tech-support
UK8S 为保障生产环境 Pod 的运行稳定,每个 Node 限制了 Pod 数量为 110 个,用户可以通过登陆 Node 节点"vim /etc/kubernetes/kubelet.conf"
修改 maxpods:110
,然后执行 systemctl restart kubelet
重启 kubelet 即可。
kubectl describe pods pod-name -n ns
查看 pod 的相关 event 及每个 container 的 status,是 pod 自己退出,还是由于
oom 被杀,或者是被驱逐如果是 pod 自己退出,kubectl logs pod-name -p -n ns
查看容器退出的日志,排查原因如果是由于 oom 被杀,建议根据业务重新调整 pod 的 request 和 limit 设置(两者不宜相差过大),或检查是否有内存泄漏如果 pod 被驱逐,说明节点压力过大,需要检查时哪个 pod 占用资源过多,并调整 request 和 limit 设置非 pod 自身原因导致的退出,需要执行dmesg
查看系统日志以及journalctl -u kubelet
查看 kubelet 相关日志。kubectl get pods -n kube-system |grep plugin-operation
找到对应插件升级的 pod,并 describe pod 查看 pod
失败原因。uk8s-xxxxxx-master-ulb4
)UK8S 集群的三台 master 主机是否被删了或者关机等登陆到 UK8S 三台 master 节点,检查 etcd 和 kube-apiserver 服务是否正常,如果异常,尝试重启服务3.1 systemctl status etcd
/ systemctl restart etcd
如果单个 etcd 重启失败,请尝试三台节点的 etcd 同时重启3.2 systemctl status kube-apiserver
/ systemctl restart kube-apiserver
kubectl describe node node-name
查看节点 notReady 的原因,也可以直接在 console 页面上查看节点详情。如果可以登陆节点,journalctl -u kubelet
查看 kubelet 的日志, system status kubelet
查看 kubelet 工作是否正常。对于节点已经登陆不了的情况,如果希望快速恢复可以在控制台找到对应主机断电重启。查看主机监控,或登陆主机执行sar
命令,如果发现磁盘 cpu 和磁盘使用率突然上涨, 且内存使用率也高,一般情况下是内存 oom
导致的。关于内存占用过高导致节点宕机,由于内存占用过高,磁盘缓存量很少,会导致磁盘读写频繁,进一步增加系统负载,打高cpu的恶性循环内存 oom 的情况需要客户自查是进程的内存情况,k8s 建议 request 和 limit 设置的值不宜相差过大,如果相差较大,比较容易导致节点宕机。如果对节点 notready 原因有疑问,请按照UK8S人工支持联系人工支持UK8S 使用 VPC 网络实现内网互通,默认使用了 UCloud 的 DNS,wget 获取信息需要对 VPC 的子网配置网关,需要在 UK8S 所在的区域下进入VPC产品,对具体子网配置 NAT 网关,使集群节点可以通过 NAT 网关拉取外网数据,具体操作详见VPC创建NAT网关 。
--network host
参数,使用 hostnetwork 的模式起容器tcpdump -i eth0 host
查看是否正常, ulb-ip 替换为 svc 对应的实际 ip查看节点上 kube-proxy 服务是否正常 systemctl status kube-proxy
执行iptables -L -n -t nat |grep KUBE-SVC
及 ipvsadm -L -n
查看转发规则是否下发正常iptables -L -n -t nat
或者ipvsadm -L -n
查看对应规则 修改 Service 类型,原 type: LoadBalancer
修改为 NodePort 或者 ClusterIP,再进行删除 Service 操作,EIP 和 ULB 会保留。
因该操作 EIP 和 ULB 资源将不再受 UK8S 管理,所以需要手动至 ULB 和 EIP 页面进行资源解绑和绑定。
在 Kubernetes 集群中运行的容器默认使用格林威治时间,而非宿主机时间。如果需要让容器时间与宿主机时间一致,可以使用 "hostPath" 的方式将宿主机上的时区文件挂载到容器中。
大部分linux发行版都通过 "/etc/localtime" 文件来配置时区,我们可以通过以下命令来获取时区信息:
# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 32 Oct 15 2015 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
通过上面的信息,我们可以知道宿主机所在的时区为Asia/Shanghai,下面是一个Pod的yaml范例,说明如何将容器内的时区配置更改为Asia/Shanghai,和宿主机保持一致。
apiVersion: app/v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: "IfNotPresent"
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80
volumeMounts:
- name: timezone-config
mountPath: /etc/localtime
volumes:
- name: timezone-config
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
如果容器之前已经创建了,只需要在 yaml 文件中加上 volumeMounts
及 volumes
参数,再使用 kubectl apply
命令更新即可。
该情况一般有以下两种可能
kube-system下面metrics-server Pod没有正常工作,可以通过kubectl get pods -n kube-system
进行查看metrics.k8s.io
API地址被错误重定向,可以执行kubectl get apiservice v1beta1.metrics.k8s.io
查看重定向到的service名称,并确认service当前是否可用及是否对外暴露了v1beta1.metrics.k8s.io
接口。默认重定向地址为kube-system/metrics-server
情况二一般出现在部署prometheus,且prometheus提供的接口不支持v1beta1.metrics.k8s.io时。如果不需要自定义HPA指标,其实不需要此重定向操作。如果属于情况二,可以按照下面步骤操作。
确认配置中的的prometheus service可用,并根据需要自定义HPA指标重新部署执行下面yaml文件,回退到普通metrics server,Grafana等不依赖此api。注意,如果您之前已经使用了自定义HPA指标,且处于线上环境,建议您仅确认prometheus service可用即可。回退到普通metrics server可能导致之前的自定义HPA指标失效,请谨慎操作。apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1beta1.metrics.k8s.io
spec:
service:
name: metrics-server
namespace: kube-system
group: metrics.k8s.io
version: v1beta1
insecureSkipTLSVerify: true
groupPriorityMinimum: 100
versionPriority: 100
遇到containerd-shim进程泄露的情况,可以按照如下方式进行处理
确认泄露的进程id,执行kill pid
。注意,此时无需加-9
参数,一般情况下简单的kill就可以处理。确认containerd-shim进程退出后,可以观察docker及kubelet是否恢复正常。注意,由于kubelet此时可能被docker卡住,阻挡了很多操作的执行,当docker恢复后,可能会有大量操作同时执行,导致节点负载瞬时升高,可以在操作前后分别重启一遍kubelet及docker。[root@xxxx ~]# docker ps |grep coredns-8f7c8b477-snmpq
ee404991798d uhub.service.ucloud.cn/uk8s/coredns "/coredns -conf /etc…" 4 minutes ago Up 4 minutes k8s_coredns_coredns-8f7c8b477-snmpq_kube-system_26da4954-3d8e-4f67-902d-28689c45de37_0
b592e7f9d8f2 uhub.service.ucloud.cn/google_containers/pause-amd64:3.2 "/pause" 4 minutes ago Up 4 minutes k8s_POD_coredns-8f7c8b477-snmpq_kube-system_26da4954-3d8e-4f67-902d-28689c45de37_0
[root@xxxx ~]# ps aux |grep ee404991798d
root 10386 0.0 0.2 713108 10628 ? Sl 11:12 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id ee404991798d70cb9c3c7967a31b3bc2a50e56b072f2febf604004f5a3382ce2 -address /run/containerd/containerd.sock
root 12769 0.0 0.0 112724 2344 pts/0 S+ 11:16 0:00 grep --color=auto ee404991798d
[root@xxxx ~]# ps -ef |grep 10386
root 10386 1 0 11:12 ? 00:00:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id ee404991798d70cb9c3c7967a31b3bc2a50e56b072f2febf604004f5a3382ce2 -address /run/containerd/containerd.sock
root 10421 10386 0 11:12 ? 00:00:00 /coredns -conf /etc/coredns/Corefile
root 12822 12398 0 11:17 pts/0 00:00:00 grep --color=auto 10386
在1.19.5集群中,有可能出现节点not
ready的情况,查看kubelet日志,发现有大量Error while dialing dial unix:///run/containerd/containerd.sock
相关的日志。这是1.19.5版本中一个已知bug,当遇到containerd重启的情况下,kubelet会失去与containerd的连接,只有重启kublet才能恢复。具体可以查看k8s官方issue。如果您遇到此问题,重启kubelet即可恢复。同时目前uk8s集群已经不支持创建1.19.5版本的集群,如果您的集群版本为1.19.5,可以通过升级集群的方式,升级到1.19.10。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/126974.html
摘要:详细请见产品价格产品概念使用须知名词解释漏洞修复记录集群节点配置推荐模式选择产品价格操作指南集群创建需要注意的几点分别是使用必读讲解使用需要赋予的权限模式切换的切换等。UK8S概览UK8S是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kubernetes集群自身的搭建及维护等运维类工作。了解使用UK8S为了让您更快上手使用,享受UK...
摘要:集群常见问题单个集群最多能添加多少个节点当前单个集群对应节点数量可查看集群节点配置推荐。创建失败,使用发现报错为,是啥原因在创建等资源时,都需要扮演云账户的身份调用来完成相关操作。集群内可以解析,但无法联通外网拉取数据失败。集群常见问题单个集群最多能添加多少个节点?A:当前单个UK8S集群对应节点数量可查看集群节点配置推荐。UK8S完全兼容原生Kubernetes API吗?A:完全兼容。U...
摘要:会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。如何识别由创建的云资源由创建的云资源名称,都遵循明确的命名规范,具体详见命名规范简要说明如下名称,如名称为的云主机,是这个集群的节点。容器云UK8S使用必读注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过U...
摘要:注意通过创建的云主机云盘等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致运行不正常或数据丢失风险,可以通过将资源释放或解绑删除。会使用到以下产品的全部操作权限,例如代替你创建删除云主机,由此产生的费用由你负责,请知悉。注意:通过UK8S创建的云主机、云盘、EIP等资源,删除资源请不要通过具体的产品列表页删除,否则可能导致UK8S运行不正常或数据丢失风险,可以通过UK8S将资源释放...
摘要:产品概念是一项基于的容器管理服务,你可以在上部署管理扩展你的容器化应用,而无需关心集群自身的搭建及维护等运维类工作。完全兼容原生的,以私有网络为基础,并整合了等云产品。其命名规范为。产品概念UCloud Container Service for Kubernetes (UK8S)是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kub...
阅读 283·2024-11-07 18:25
阅读 130362·2024-02-01 10:43
阅读 867·2024-01-31 14:58
阅读 828·2024-01-31 14:54
阅读 82766·2024-01-29 17:11
阅读 3047·2024-01-25 14:55
阅读 1985·2023-06-02 13:36
阅读 3032·2023-05-23 10:26