kubernetes
砚上有墨
这个作者很懒,什么都没留下…
展开
-
docker审计日志过大导致磁盘IO
2、如果有类似下图的回显,则说明存在该问题,需要进行修复,如果无回显则说明节点不受此问题影响。节点发生磁盘io 节点审计日志量较大,由于操作系统内核缺陷,会低概率出现io卡主。root管理员用户登录节点。验证:执行2、部分命令。...原创 2022-08-10 21:16:42 · 690 阅读 · 0 评论 -
卸载rancher出现的问题
卸载rancher出现如下报错检查apiservice,并将对应的异常apiservice删除serviceaccount 无法创建secrct存在准入控制器导致,删除准入控制器原创 2022-06-26 16:14:11 · 1080 阅读 · 0 评论 -
kube-controller-manager 无法清零重启数
清理kube-controller-manager pod 重启次数原创 2022-06-05 21:56:45 · 110 阅读 · 0 评论 -
k8s hpa无法获取数据问题
问题:k8s hpa failed to get cpu utilization: missing request for cpuHPA的监控数据current字段显示为unknownkubectl describe hpa activator -n knative-servingName: activatorNamespace:原创 2021-12-08 10:24:56 · 1894 阅读 · 0 评论 -
k8s节点状态异常思路
要解决和了解节点状态为何会发生异常需要先了解k8s体系组件的基本知识与原理在k8s容器集群运行过程,时长遇到节点运行状态异常的问题和因为组件异常、系统内核死锁、资源不足等原因引起节点状态不可知。该问题可能的原因有:1.节点停机2.节点组件kubelet异常3.节点docker异常4.节点的systemd的版本过低触发pleg的bug (低版本的systemd (67版本之前),dbus的cookie溢出,导致docker、kubelet组件无法正常运行,包括runc 夯死等5.网络有拦截6.原创 2021-11-14 22:55:41 · 3891 阅读 · 0 评论 -
解决应用和节点oom的问题。
解决应用和节点oom的问题。如果设置了应用的resource limit 还是出现oom,建议考虑升级节点内存配置来承载更高的内存使用量。可以参考下这篇文章 https://blog.csdn.net/Jerry_Pan1990/article/details/101773313另外使用容器垂直伸缩(VPA) 和 resource-controller组件动态修改Pod资源上限 可以有效改善OOM的情况。https://help.aliyun.com/document_detail/173702.h原创 2021-10-12 09:19:33 · 330 阅读 · 0 评论 -
k8s、docker和内核的关系
很多同学天天嚷嚷的喊k8和内核的关系是什么,事实上内核和k8s关系不大,这个关系说的是docker和内核的关系,另外就是k8s kubelet和systemd的关系。Docker是世界领先的软件容器平台什么是容器?先来看看容器较为官方的解释:一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终原创 2021-09-16 14:05:20 · 1493 阅读 · 0 评论 -
分析容器退出状态码
Pod status 状态解释 [1]CrashLoopBackOff:容器退出,kubelet正在将它重启InvalidImageName:无法解析镜像名称ImageInspectError:无法校验镜像ErrImageNeverPull:策略禁止拉取镜像ImagePullBackOff:镜像正在重试拉取RegistryUnavailable:连接不到镜像中心ErrImagePull:通用的拉取镜像出错CreateContainerConfigError:不能创建kubelet使用的容器配转载 2021-09-11 19:12:30 · 2273 阅读 · 0 评论 -
问题处理:删除terminating状态的namespace
问题描述:namespace处于terminating状态,要进行删除方法一:kubectl delete namespace 如不能删除,方法二:kubectl delete namespace –force --grace-period=0 #强制删除如不能删除方法三:kubectl edit namespace 看下是否有finalizer的value资源,有的话将其删除执行以下命令kubectl patch crd/此处写CRD的名字 -p '{"metadata":{"原创 2021-09-07 10:14:05 · 641 阅读 · 0 评论 -
K8S Pod status的状态
K8S Pod status的状态:CrashLoopBackOff: 容器退出,kubelet正在将它重启InvalidImageName: 无法解析镜像名称ImageInspectError: 无法校验镜像ErrImageNeverPull: 策略禁止拉取镜像ImagePullBackOff: 正在重试拉取RegistryUnavailable: 连接不到镜像中心ErrImagePull: 通用的拉取镜像出错CreateContainerConfigError: 不能创建kubelet使原创 2021-09-02 21:06:05 · 1702 阅读 · 0 评论 -
pod的生命周期状态
pod生命周期Pod 遵循一个预定义的生命周期,起始于 Pending 阶段,如果至少其中有一个主要容器正常启动,则进入 Running,之后取决于 Pod 中是否有容器以 失败状态结束而进入 Succeeded 或者 Failed 阶段。在 Pod 运行期间,kubelet 能够重启容器以处理一些失效场景。 在 Pod 内部,Kubernetes 跟踪不同容器的状态 并确定使 Pod 重新变得健康所需要采取的动作。在 Kubernetes API 中,Pod 包含规约部分和实际状态部分。 Pod 对转载 2021-08-06 19:16:07 · 1644 阅读 · 0 评论 -
高度耦合的容器间的通信问题 :让pod初始化init进程不为1
高度耦合的容器间的通信问题。什么是高度耦合?举个例子,比如我使用的博客系统typecho就是由nginx+php+mysql组成。如果要容器化部署的话,那就需要3个容器:nginx、php、mysql。这3个容器单独都无法提供博客功能,只有组合到一起时才可以成为一个完整可用的对外系统,这种就是高度耦合的容器。如果你是使用docker去部署这么一个博客系统,那就需要自己去配置这3个容器之间的网络通信。而K8s在设计之初就考虑到了这个问题,提出了Pod的概念。简单理解,一个Pod有点类似于传统的虚机、物理机,不转载 2021-08-05 23:37:59 · 580 阅读 · 0 评论 -
k8s secret token 删掉自动重建
场景:清理rabbitmq 部署的已写secret信息是执行kubectl delete secret 进行删除时,会立即以相似的名称进行重建(即使使用 --force)原因:使用Secret类型是kubernetes.io/service-account-token,用于被serviceaccount引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret,即使删除也会重建。解决:先删除对应的serviceaccout#kubectl get servi原创 2021-07-13 13:59:32 · 2222 阅读 · 0 评论 -
ingress因配置nginx.ingress.kubernetes.io/auth-secret basic-auth参数,导致503无法访问
ingress因配置nginx.ingress.kubernetes.io/auth-secret basic-auth参数,导致503无法访问,去除后可正常检查发现有配置auth参数,其参数未生效,使用basic有个小坑,参考官方文档经过测试,在创建secret之前通过htpasswd工具生成的记录用户名密码的文件的文件名,必须叫auth,不然经过后续的一顿操作,最终访问的结果还是503,这与传统方式配置nginx的basic auth是不同的,可能在源码中将此参数硬编码造成# htpasswd原创 2021-07-12 13:44:19 · 1415 阅读 · 0 评论 -
OpenYurt与边缘计算,随笔备忘录
OpenYurt和边缘计算1. 重磅!阿⾥巴巴开源⾸个边缘计算云原⽣项⽬ OpenYurt2. OpenYurt 开箱测评 | ⼀键让原⽣ K8s 集群具备边缘计算能⼒3. 深度解读 OpenYurt :边缘⾃治能⼒设计解析4. 深度解读 OpenYurt:从边缘⾃治看 YurtHub 的扩展能⼒5. 将原⽣ K8s 下放边缘计算:阿⾥云 OpenYurt 成为 CNCF 沙箱项⽬6. OpenYurt 深度解读:如何构建 Kubernetes 原⽣云边⾼效协同⽹络?7. OpenYurt ⼊转载 2021-07-09 17:19:20 · 178 阅读 · 0 评论 -
k8s集群网络策略(Network Policy)
默认情况下,Kubernetes 集群网络没任何网络限制,Pod 可以与任何其他 Pod 通信,在某些场景下就需要进行网络控制,减少网络攻击面,提高安全性,这就会用到网络策略。网络策略(Network Policy):是一个K8s资源,用于限制Pod出入流量,提供Pod级别和Namespace级别网络访问控制。网络策略的应用场景:• 应用程序间的访问控制,例如项目A不能访问项目B的Pod• 开发环境命名空间不能访问测试环境命名空间Pod• 当Pod暴露到外部时,需要做Pod白名单• 多租户网络环原创 2021-07-04 17:40:13 · 1823 阅读 · 0 评论 -
ingress配置https证书安全通信
HTTPS是安全的HTTP,HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全。最后一个字母 S 指的是 SSL/TLS 协议,它位于HTTP 协议与 TCP/IP 协议中间。HTTPS优势:1、加密隐私数据:防止您访客的隐私信息(账号、地址、手机号等)被劫持或窃取。2、安全身份认证:验证网站的真实性,防止钓鱼网站。3、防止网页篡改:防止数据在传输过程中被篡改,保护用户体验。4、地址栏安全锁:地址栏头部的“锁”型图标,提高用户信任度。5、提高SEO排名:提高原创 2021-07-04 16:02:07 · 1577 阅读 · 1 评论 -
k8s CIS的安全基准与使用
CIS安全介绍互联网安全中心(CIS,Center for Internet Security),是一个非盈利组织,致力为互联网提供免费的安全防御解决方案。官网:https://www.cisecurity.org/Kubernetes CIS基准:https://www.cisecurity.org/benchmark/kubernetes/使用CIS基准测试工具在如上图下载pdf说明后。可参考基本标准对集群配置进行检查,内容较多,一般会会采用相关工具kube-bench来完成这项工作。K原创 2021-07-03 16:42:07 · 1381 阅读 · 2 评论 -
k8s容器安全SecDevOps
SecDevOps:SecDevOps与DevOps相似,是一种哲学,鼓励运维人员、开发人员、测试人员和安全人员进行更高水水平协作,将信息安全被放在事前考虑,将安全性注入自动化流程中,以确保整个产品周期内的信息安全。为了保证集群以及容器应用的安全,Kubernetes 提供了多种安全机制,限制容器的行为,减少容器和集群的攻击面,保证整个系统的安全性。集群安全:TLS证书认证、RBACSecurity Context:限制容器的行为,例如只读文件系统、特权、运行用户等Pod Security Pol原创 2021-07-03 15:20:14 · 642 阅读 · 0 评论 -
kubectl delete 无法删除pod的问题
使用kubectl delete 无法删除pod1.核实是否是删除pod后又被重新拉起,是,需要将pod去除控制器,将版本控制器删除后即可删除2.核实是否是提示权限问题,是,检查rbac权限配置,3.以上无问题且无法删除rbac权限满足,需升级kubelet组件,云上环境升级集群版本...原创 2021-06-21 17:54:26 · 1584 阅读 · 0 评论 -
kubectl 命令补全报错:kubectl ge-bash: _get_comp_words_by_ref: command not found
场景:kubectl 命令补全报错:kubectl ge-bash: _get_comp_words_by_ref: command not found[root@master1 ~]# kubectl ge-bash: _get_comp_words_by_ref: command not found-bash: _get_comp_words_by_ref: command not found-bash: _get_comp_words_by_ref: command not found-ba原创 2021-06-21 17:37:17 · 770 阅读 · 0 评论 -
k8s pod异常与故障排查及问题思路
通常情况下pod发生问题时首先收集一下错误kubectl get pod <pod-name> -o yaml 查看 Pod 的配置是否正确kubectl describe pod <pod-name> 查看 Pod 的事件kubectl logs <pod-name> [-c <container-name>] 查看容器日志Pod Pending 状态如果一个 Pod 处于 Pending 状态,表示 Pod 没有被调度到节点上。通常这是因为某种原创 2021-06-09 21:46:34 · 7299 阅读 · 0 评论 -
容器 pod时区修改
问题:在K8S里启动一个容器,该容器的设置的时区是非预期时区,而造成日志监控等数据混乱。解决:1、挂载服务器的时区[root@k8s-node ~]# cat demo.yaml apiVersion: v1kind: Podmetadata: name: nginx-pod namespace: default labels: app: my-pod spec: containers: - name: my-pod image: nginx原创 2021-05-30 22:37:14 · 1186 阅读 · 0 评论 -
kube-apiserver参数指标说明
Kubernetes API 配置的作用是 验证API 对象的数据, 这些对象包括 pods、services、replicationcontrollers 等。 为集群的共享状态提供前端, 所有其他组件都通过该前端进行交互--add-dir-header如果为 true,则将文件目录添加到日志消息的标题中--admission-control-config-file string包含准入控制配置的文件。--advertise-address ip向集群成员通知 apiserver 消息的 IP翻译 2021-05-27 18:00:49 · 2627 阅读 · 0 评论 -
关已kubectl top 和 进入容器内部top所得结果不一致问题
1.kubectl top 为什么会报错一般情况下 top 报错有以下几种,可以 kubectl top pod -v=10看到具体的调用日志:没有部署 heapster 或者 metric-server,或者 pod 运行异常,可以排查对应 pod 日志要看的 pod 刚刚建出来,还没来得及采集指标,报 not found 错误,默认 1 分钟以上两种都不是,可以检查下 kubelet 的 10255 端口是否开放,默认情况下会使用这个只读端口获取指标,也可以在 heapster 或 metric原创 2021-05-24 17:33:52 · 3521 阅读 · 0 评论 -
容器分层理解
容器正在改变软件开发。作为CI/CD的新基础,容器为你提供了一种快速,灵活的方式来部署应用程序,API和微服务,而数字化成功与否取决于可扩展性和性能。但是,容器和容器编排工具(例如Kubernetes)也是黑客们的热门目标,如果它们没有得到有效的保护,它们可能会使你的整个环境面临风险。在本文中,我们将讨论容器堆栈每一层安全的最佳实践。了解容器安全的含义很重要。作为依赖共享内核的应用程序层构造,容器可以比VM更快地启动。在配置方面,容器也比VM灵活得多,并且可以执行挂载存储卷到禁用安全功能的所有操作。第0翻译 2021-05-19 18:20:18 · 539 阅读 · 0 评论 -
pod发布异常或者出现MinimumReplicasUnavailable导致ReplicaFailure
问题:MinimumReplicasUnavailable导致ReplicaFailure非阿里云参考下如下:参考:https://blog.csdn.net/weixin_43905458/article/details/104060485阿里云,结合如上参考,如有出现创建超时现象需检查节点/集群安全组。...原创 2021-05-18 22:59:13 · 18273 阅读 · 0 评论 -
K8S ingress nginx 如何设置访问白名单
K8S ingress nginx 设置访问白名单前端无代理负载情况:apiVersion: extensions/v1beta1kind: Ingressmetadata: name: ingress-myapp namespace: default annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/whitelist-source-range: '10.16.2.原创 2021-05-17 21:55:59 · 2877 阅读 · 0 评论 -
pod平均调度到node
pod平均调度到不通的node节点将已经部署当前应用的Node 设置为不可调度;获取部署当前应用且包含多个该应用 POD 的POD Name,删除该 POD, k8s 自动重新调度部署该 POD 到可调度的 Node 上;如果还有未平均分布的 Node,多次循环执行以上操作;将所有设置为不可调度的 Node 恢复为可以调度#!/bin/bash## 设置 已经包含应用的Node为不可调度for i in $(kubectl get nodes|grep Ready|awk '{print $1原创 2021-05-06 14:00:47 · 761 阅读 · 0 评论 -
helm或这自建ingress出现报错Internal error occurred: failed calling webhook “validate.nginx.ingress.kuberne
问题描述:helm发布服务出现连接超时现象报错如下:Error: Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post https://ingress-nginx-controller-admission.kube-system.svc:443/networking/v1beta1/ingresses?timeout=10s: context deadline exceede原创 2021-04-30 10:18:00 · 6449 阅读 · 0 评论 -
Kubernetes 组件
一个 Kubernetes 集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点。工作节点托管作为应用负载的组件的 Pod 。控制平面管理集群中的工作节点和 Pod 。 为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。通常来讲kubeenetes去除开头的k和末尾的s 中间八个字母代表其八个所需组件的缩写本文档概述了交付正常运行的 Kubernetes 集群所需的各种组件。这张图表展示了包含所有相互关联组件原创 2021-04-28 00:03:22 · 163 阅读 · 0 评论 -
ingress nginx传递用户真实ip问题
问题背景:业务应用经常有需要用到用户真实ip的场景,比如:异地登录的风险预警、访问用户分布统计等功能等。当有这种需求的时候,在业务上容器过程中,如果用到ingress就要注意配置了。通常,用户ip的传递依靠的是X-Forwarded-*参数。但是默认情况下,ingress是没有开启的。官方给出的ingress的文档还比较详细,这里介绍一下可能用到的这3个参数:方案参数如下:use-forwarded-headers如果Nginx在其他7层代理或负载均衡后面,当期望Nginx将X-Forwarde原创 2021-04-27 23:21:28 · 2957 阅读 · 0 评论 -
Prometheus监控
Prometheus相关文档网上有很多,个人建议还是参考官网文档,Prometheus官网:https://prometheus.io/docs/prometheus/latest/getting_started/原创 2021-04-10 22:10:42 · 71 阅读 · 0 评论 -
使用prometheus全方位监控k8s
使用prometheus全方位监控k8sprometheus是什么Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥 有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会 (CNCF),成为继Kubernetes之后的第二个托管项目。https://prometheus.iohttps://github.com/prometheuspromtheus组成及架构[外链图片转存失原创 2021-04-10 21:28:54 · 1650 阅读 · 0 评论 -
Docker空间使用分析与清理
场景:发现 Docker 宿主机的磁盘空间使用率非常高空间使用分析参考:https://developer.aliyun.com/article/272173原创 2021-03-18 14:44:40 · 158 阅读 · 0 评论 -
k8s集群出现与服务器x.x.x.x:6443的连接被拒绝-您是否指定了正确的主机或端口?
在执行kubectl 命令或者更改主机名或者服务器重启后出现报错The connection to the server x.x.x.x:6443 was refused - did you specify the right host or port?现象集群报错如下# kubectl get pod -n <pod name>The connection to the server x.x.x.x:6443 was refused - did you specify the righ原创 2021-03-12 19:55:44 · 11119 阅读 · 0 评论 -
system:discovery角色在kubernetes中是如何工作的
我想了解system:discovery角色在kubernetes中是如何工作的。我能够在下面看到非资源url是system:discovery角色中包含的特权root@kubemas:~# kubectl describe clusterrole system:discoveryName: system:discoveryLabels: kubernetes.io/bootstrapping=rbac-defaultsAnnotations: rbac.authori原创 2021-01-27 17:07:34 · 208 阅读 · 1 评论 -
kubeconfig的用法
在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式。以kubectl为例介绍kubeconfig的配置。kubectl只是个go编写的可执行程序,只要为kubectl配置合适的kubeconfig,就可以在集群中的任意节点使用。kubectl默认会从$HOME/.kube目录下查找文件名为 config 的文件,也可以通过设置环境变量 KUBECONFIG 或者通过设置 --kubeconfig原创 2021-01-25 17:14:07 · 1610 阅读 · 0 评论 -
pod has unbound immediate PersistentVolumeClaims : statefulset挂载不上pvc的情况
大家都知道当volumeClaimTemplates匹配不上pv时,会出现statefulset挂载不到pv的问题。错误提示如下:error while running “VolumeBinding” filter plugin for pod “ceshi”: pod has unbound immediate PersistentVolumeClaims如果你反复确认了volumeClaimTemplates是正确的,但是始终挂载不上,可以尝试检查以下pvc,看是不是statefulset之前自动创原创 2021-01-25 16:55:00 · 5292 阅读 · 0 评论 -
k8s安全机制
k8s安全机制kubernetes的安全框架访问k8s集群的资源需要过三关:认证、鉴权、准入控制普通用户若要安全访问集群API Server,往往需要证书、token或者用户名+密码;pod访问,需要serviceAccountk8s安全控制框架主要由下面三个阶段警醒控制,每一个阶段都支持插件方式,通过API Server配置来启用插件。AuthenticationAuthenrizationAdmission Control[外链图片转存失败,源站可能有防盗链机制,建议将图片原创 2021-01-22 19:30:30 · 212 阅读 · 1 评论