k8s出现kubelet证书过期问题解决方法

一般我们在部署k8s集群,创建的证书期限只有一年,当master节点证书重建以后,那么此时在低版本的K8s集群中可能还会遇到以下客户端证书过期问题此时我们备份故障节点/etc/kubernets/kubelet.conf文件并删除,然后去一个正常的master节点,使用以下命令重新生成一个kubelet.conf文件kubeadm kubeconfig user --org system:nodes --client-name system:node:$NODE > k...

阅读全文

pod删除长时间处于Terminating状态的解决办法

当POD被删除以后,一直保持Terminating状态,那么这个POD可能不仅仅是删除不掉的问题,可能关联服务异常引起的,可以检查下kubelet服务和docker服务,或者其它问题引起的POD没有收到中断的信号。这里只是仅仅记录下如下强制删除这种POD,至于根本原因还需要根据自己环境情况进行排查。强制删除命令如下kubectl delete pod -n <namespace> <pod_name> --grace-period=0 --force也可以通过移...

阅读全文

python k8s api操作类

网上找了零散的,然后看了k8s的pythonapi,里面很有方法,大致整理了一下操作的封装,很多操作返回都有to_dict()方法可以直接将返回的对象转为字典,之前没注意,后面懒得改了,写的比较乱,直接记录下来方便以后使用。#!/usr/bin/python3#coding:utf-8__author__ = 'yang.su'from kubernetes import client, configfrom app.common impo...

阅读全文

k8s使用local pv配置本地盘作为数据存储

当前项目中遇到一个问题,就是sts资源类型在使用本地hostpath存储时,在某些极端情况下会导致sts资源调度到其它节点,导致本地hostpath存储的资源不存在sts资源新调度的节点,这样就会出现没有数据,数据丢失的情况。那么这种场景下我们需要将sts的资源和pv进行绑定,然后找到了localpv这种方案,使用localpv以后生产的pvc会绑定sts资源,这样在任何情况下sts资源都会和pv绑定到同一个节点,同时再配合nodeAffinity将pv固定到指定的节点,这样就实现了sts资源固定到某一节点的需求。接下来就是我测试的方案,实际场景是一...

阅读全文

apiserver报错failed with: failed to retrieve openAPI spec, http error: ResponseCode: 503

今天上k8s集群,kubectl命令操作卡顿,执行kubectlgetnode命令返回有时很快,有时能卡好几十秒。然后检查apiserver日志,发现了以下信息v1beta1.metrics.k8s.io failed with: failing or missing response from https://10.106.18.58:443/apis/metrics.k8s.io/v1beta1: Get https://10.106.18.58...

阅读全文

kubelet报错nable to connect to the server: x509: certificate is valid for xxx, not xxx

我当前k8s环境是多master节点,前几天刚续费k8s证书,今天查看所有工作节点均notready,但是master节点正常,查看工作节点kubelet报错日志如下:k8s.io/kubernetes/pkg/kubelet/kubelet.go:450: Failed to list *v1.Service: Get https://192.168.1.220:16443/api/v1/services?limit=500&resourceVersion=0: x509:&...

阅读全文

k8s无头服务headless介绍

我们在k8s中访问POD提供的业务服务时通常都是通过Servicename的负载来访问,其中负载的原理和CoreDNS有关,它是将Servicename解析成ClusterIP,这样我们就可以通过ClusterIP作负载均衡,把流量分布到各个POD上面。ClusterIP的原理一个service可能代理多个endpoint,每个endpoint实际就是一个POD提供,client访问的就是service的ClusterIP,从而通过iptable规则转发到到后端的某一个POD服务。从而达到负载均衡的效果。当servicetype类型设置为Clu...

阅读全文

k8s健康检查Liveness/Readiness/Startup探针介绍

k8s健康检测主要分为以下三种存活性探测(Livenessprobes):主要是探测应用是否还活着。如果检测到应用没有存活就杀掉当前pod并重启。就绪性探测(Readinessprobes):只要是探测应用是否准备好接受请求访问,如果检测应用准备好了,就把请求流量放进来;反之,则把应用节点从注册中心拿掉。启动探测(StartupProbes):对于旧应用需要更长的启动时间,这时候既不想重启应用也不想让请求访问进来,可以设置启动探测给足够的启动时间保证应用启动成功。k8s中ReadinessProbes示例readinessProbe:&nb...

阅读全文