Kubernetes
文章平均质量分 66
网络飞鸥
学无止境
展开
-
k8s 节点压力驱逐(Node Pressure Eviction)
上面的配置只有硬驱逐策略,无软驱逐策略。节点压力驱逐(Node Pressure Eviction)是 Kubernetes 的一种机制,用于帮助集群维持稳定性和可靠性。kubelet 会监控集群节点的内存、 磁盘空间和文件系统的 inode 等资源,当这些资源的使用到达指定阈值(固定值或百分比)的时候,kubelet 将主动终止 Pod 以回收节点上资源。节点压力驱逐是 kubelet 主动终止 Pod 以回收节点上资源的过程。原创 2024-05-21 17:47:21 · 1086 阅读 · 0 评论 -
云计算概念与架构设计介绍
云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算资源共享。在云计算架构中,通常会采用分层的设计思路,将计算资源划分为不同的层次,每个层次负责不同的功能和任务。例如,常见的云计算架构通常包括以下几个层次:物理层虚拟化层平台层应用层在上述云计算架构中,各个层次之间通过API(应用程序接口)进行通信和协作。原创 2024-05-13 10:23:58 · 775 阅读 · 0 评论 -
云原生概念简介
所以"云原生"可以简单的理解为:“一个应用系统借助云计算相关的周边技术进行设计研发,从而使该应用能完美的适配云上环境”。云原生计算基金会总经理Priyanka Sharma对云原生的解释为:“云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性的技术,这样做是为了快速满足客户的需求”。而官网(CNCF)上则将云原生的定义概况为:服务网格、声明式API、不可变基础设施、微服务、容器这五大特征,这也成了很多人对云原生的基础印象。云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。原创 2024-05-11 15:22:42 · 594 阅读 · 0 评论 -
k8s 日常维护命令简介
此命令列出了 kubectl 当前连接的k8s集群中所有可用的 api 资源(不同k8s集群可能由于集群版本不一样或存在用户自定义的api和资源从而会有所差别)。每个api资源代表了集群中的一种对象类型(如Pod、Service、Deployment等),从这里可以查看支持的api资源名称、简写(如果有)、是否是命名空间级别的资源等信息。-c 选项指定要查看的容器名称,--tail 选项指定要输出最后多少行日志(默认从头打印所有日志),-f 选项指定保持一直监听日志输出。可以看查看 pod 中有哪些容器。原创 2024-04-30 13:03:23 · 705 阅读 · 0 评论 -
Longhorn简介
Longhorn将不会停止卷,即使由于环境限制,例如没有足够的磁盘空间、不兼容的磁盘标签等,它不能保留附加卷的本地副本(工作负载)。“默认情况下,Longhorn工作负载的优先级与集群中的其他pods相同,这意味着在节点压力的情况下,例如节点耗尽内存,Longhorn工作负载将与其他pods的优先级相同。请注意,此设置仅设置系统管理组件的优先级。“当降级的卷中至少有一个失败的副本卷时,这个以秒为单位的间隔决定Longhorn为了重用失败副本的现有数据而不是直接为这个卷创建一个新副本最多需要等待多长时间。原创 2024-03-27 11:21:07 · 1088 阅读 · 0 评论 -
关于k8s中 storageclass 的 is-default-sc 默认存储设置
取决于安装模式,你的 Kubernetes 集群可能和一个被标记为默认的已有 StorageClass 一起部署。这个默认的 StorageClass 以后将被用于动态的为没有特定存储类需求的 PersistentVolumeClaims 配置存储。例如,它配置的存储可能太过昂贵。如果它们中有两个或多个被标记为默认,Kubernetes 将忽略这个注解, 也就是它将表现为没有默认 StorageClass。删除默认 StorageClass 可能行不通,因为它可能会被你集群中的扩展管理器自动重建。原创 2024-03-13 10:15:23 · 1234 阅读 · 0 评论 -
在K8S中Longhorn存储
Longhorn 是用于 Kubernetes 的轻量级、可靠且功能强大的分布式块存储系统。Longhorn使用容器(containers)和微服务()实现分布式块存储。Longhorn为每个块设备卷()创建一个专用的存储控制器(), 并跨存储在多个节点上的多个副本同步复制该卷。存储控制器()和副本(replicas)本身是使用 Kubernetes 编排的。原创 2024-02-27 11:05:39 · 1284 阅读 · 1 评论 -
Kubernetes的五大开源存储项目
OpenEBS 是一个开源的容器化存储平台,它是专为 Kubernetes 设计的,旨在提供可靠且易于管理的持久化存储解决方案。LongHorn 是 Kubernetes 的开源、轻量级分布式块存储框架,它将你的块存储分成 LongHorn 卷,并使用微服务和容器实现分布式块存储。Ceph 是一种开源的存储解决方案,提供堆存储、块存储和对象存储。在Kubernetes中,关于数据的持久化管理是一种挑战,对此,社区提供了多种存储的解决方案,这些方案旨在简化和优化容器化应用程序的持久化数据管理。原创 2024-02-26 09:36:46 · 849 阅读 · 0 评论 -
在k8s中,使用DirectPV CSI作为分布式存储的优缺点
利用 DirectPV,你可以将相应的 PV 直接与节点上的物理存储设备(如磁盘)进行绑定,而无需通过网络存储服务(如 NFS 或 Ceph)来提供存储。这种直接访问物理卷的方式,有助于提高性能和降低延迟。综合来看,使用 DirectPV CSI 可以在一定程度上提升性能,简化部署和管理,但也需要权衡其局限性,特别是在动态性和灵活性方面。综上所述,结合 DirectPV 和 Minio 集群需要密切关注数据可靠性和系统可用性,设计和实施相应的容错和恢复策略可以帮助你更好地应对硬盘和节点故障。原创 2024-02-18 15:33:18 · 741 阅读 · 0 评论 -
convert docker run command to kubectl for one time execution 将docker run命令转换为kubectl一次执行
当Pod中的容器运行某些已完成的进程时,就会出现此问题。当其容器退出时,Pod完成。在Pod中连续运行容器是更常见的。shell 会被强制退出,关于如何保持 shell 打开的任何想法?或如何在死之前将bash命令传递给它?执行一个任务,该环境是我正在使用Kubernetes处理的环境。同样,我可以在K8S群集中运行busybox镜像。尝试运行一个docker镜像一次,以使用流行的。无法使该mc客户端以与上一个示例相同的方式工作。解决此完整问题的方法是保持容器运行。原创 2024-02-07 14:07:52 · 198 阅读 · 0 评论 -
在k8s中,CronJob 和 Job 的 Pod 退出保留时间
在k8s中job中停留的时间参数原创 2023-04-25 16:38:21 · 1253 阅读 · 1 评论 -
Containerd 配置 Proxy
containerd proxy原创 2023-03-13 14:53:35 · 851 阅读 · 0 评论 -
在containerd,将 ‘ctr image‘ 转换成 ‘crictl image‘
在containerd,将 'ctr image' 转换成 'crictl image'原创 2022-09-20 09:43:34 · 3233 阅读 · 0 评论 -
Docker、containerd的小结
Docker、containerd的小结原创 2022-07-11 10:07:24 · 2535 阅读 · 0 评论 -
Minikube入门
什么是Minikube? Minikube是一种轻量化的Kubernetes集群,是Kubernetes社区为了帮助开发者和学习者能够更好学习和体验k8s功能而推出的,借助个人PC的虚拟化环境就可以实现Kubernetes的快速构建启动。目前已支持在macOS、Linux、Windows平台上利用各类本地虚拟化环境作为驱动运行。官方文档:minikube start | minikubeGithub地址:https://github.com/kubernetes/minikube M...原创 2022-05-01 21:33:44 · 2182 阅读 · 0 评论 -
在Jenkins上配置kubernetes环境
一、安装Kubernetes插件二、根据k8s配置文件config生成认证文件(1)找到config文件,默认是在/root/.kube/config(2)获取/root/.kube/config中对应内容并转化成base64 encoded文件# grep certificate-authority-data /root/.kube/config |cut -d" " -f 6 | base64 -d > ca.crt# grep client-certificate-d原创 2022-04-18 10:52:31 · 1195 阅读 · 0 评论 -
Kubernetes中查看用户的token并验证
kube-dns查看token#查看所有账号kubectl -n kube-system get sa取得secretskubectl -n kube-system get sa kube-dns -o yaml 取得secrets#secrets值为kube-dns-token-rst6j取得tokenkubectl get secrets kube-dns-token-rst6j -n kube-system -o yaml取得token值kubectl get secret k原创 2022-04-15 20:56:12 · 2138 阅读 · 0 评论 -
k8s用ServiceAccount Token的方式访问apiserver
在kubernetes集群,可以登陆到master集群,可以使用私钥证书的方式访问。证书路径:master的/etc/kubernetes/pki/(ca.crt / apiserver.crt / apiserver.key) 下面。# server是apiserver公网访问地址curl --cacert ca.crt --cert apiserver.crt --key apiserver.key https://$server/api这里再介绍一下使用ServiceAccount T原创 2022-04-15 20:05:18 · 2801 阅读 · 0 评论 -
通过kubeconfig文件生成证书,用curl访问Kubernetes API server
Kubernetes是一个完全基于API的系统。使用curl或Postman等简单工具,在构建应用程序之前获取API信息更方便。1、从查看 kubectl 的配置文件开始,需要:三个证书和 API server 的地址# cat /root/.kube/config 2、我们将会把证书设为环境变量,在设置时候请检查每一个参数。我们从 client-certificate-data 开始。export clientcert=$(grep client-cert ~/.kube/confi原创 2022-04-15 16:47:26 · 2171 阅读 · 1 评论 -
K8S 证书过期解决办法
问题现象K8S集群证书过期后,会导无法创建Pod,通过kubectl get nodes也无法获取信息,甚至dashboard也无法访问。查看K8S的日志:Part of the existing bootstrap client certificate is expired: 2021-06-10 06:29:04 +0000 UT这是说明k8s使用的证书过期了,k8s自带证书是一年的有效期。所以我们解决问题的办法就是更换证书。一、确认K8S证书过期时间查看k8s某一证书过期时间:原创 2022-04-14 15:03:57 · 14370 阅读 · 6 评论 -
kubectl plugin
#kubectl pluginhttps://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins#krewhttps://github.com/kubernetes-sigs/krewKrew是管理Kubectl插件的必备工具,这是K8s用户必须拥有的。介绍超过180个可用插件的细节。#install:https://krew.sigs.k8s.io/docs/user-guide/setup/install/https:/原创 2022-03-01 19:40:08 · 248 阅读 · 0 评论 -
12个Kubernetes命令用于调试Kubernetes工作负载
不管你是遭遇可怕的CrashLoopBack还是其他失败,这些命令将帮助你缩小工作负载问题的范围,以便修复它们。在任何集群中都可以使用的命令(无论在何处运行它),也没有假设在安装指标服务器之外有集中的指标或日志记录。大多数命令将使用kubectl命令或插件,你可以通过krew安装这些命令或插件。如果你不想使用这些插件,通常可以从kubectl获得相同的信息,但这些插件将格式化数据,使调试更容易。假设代码正常工作,并且知道哪个应用程序被破坏,以及它在哪里运行。Kubernetes无法修复损坏的代码。但翻译 2021-12-15 15:12:35 · 394 阅读 · 0 评论 -
用8个命令调试Kubernetes集群
如果使用任何系统的时间足够长,那么你肯定必须对其进行调试,Kubernetes也不例外。它是一个分布式系统,有许多运动部件。我们将介绍8个可以运行以调试任何Kubernetes集群的命令。它将帮助你了解集群,并确保核心功能,运行pods可用。假设你有集群的管理员权限,收到一个kubeconfig文件可以访问集群,并且你被告知集群已损坏。我们可以从下面8个命令调试Kubernetes。1.kubectl version -short通过这个命令,我们可以查看API服务器正在运行的版本。这为原创 2021-12-15 11:25:59 · 1405 阅读 · 0 评论 -
K8S中 Pod Yaml 文件参数详细说明
基础的必选参数# pod的最基础的yaml文件最少需要以下的几个参数apiVersion: v1 # API版本号,注意:具有多个,不同的对象可能会使用不同APIkind: Pod # 对象类型,podmetadata: # 元数据 name: string # POD名称 namespace: string # 所属的命名空间spec: # specification of the resource content(资源内容的规范) containers: # 容器列表..原创 2021-12-10 15:24:17 · 5947 阅读 · 0 评论 -
K8S无法删除namespace的问题,一直提示 Terminating
方法一:找到如下字段:kubectl edit namespaces Name通过命令编辑,删除所标记字段既可,保存退出。其他资源有此状况,可以找下是否有此字段,如果不行使用第二种方法二:以namespace为 haiouc 演示# 获取namespace相关信息kubectl get ns haiouc-o json >tmp.json# 开启内网api代理kubectl proxy编辑 tmp.json 去除spec里中间的3行信息,保存退出"spec": {".原创 2021-09-26 10:09:05 · 1895 阅读 · 0 评论 -
管理多个k8s集群的技巧
######################################################把每个k8s集群的json配置文件放到/root/.kube/目录下,改为不同名字,通过–kubeconfig实现不同集群操作kubectl --kubeconfig=/root/.kube/myconfig get pods#####################################################kubecmhttps://github.com/s原创 2021-08-12 10:17:25 · 780 阅读 · 0 评论 -
k8s.argo
https://argoproj.github.io/projects/argohttps://github.com/argoproj/argohttps://github.com/argoproj/argo/tree/master/examples # examples=======================================在工作中遇到需要串联 n 个容器任务的情况,选择了 Argo 进行工作流程的控制。Argo 是一个开源项目,为 Kubernetes 提供容.原创 2020-12-17 09:08:08 · 384 阅读 · 0 评论 -
k8s job 的使用
官方介绍:http://kubernetes.io/docs/user-guide/jobs/https://kubernetes.io/zh/docs/concepts/workloads/controllers/job/1. 运行一次性容器容器按照持续运行的时间可分为两类:服务类容器服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。工作类容器工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。Kuberne.原创 2020-10-26 15:33:41 · 980 阅读 · 0 评论 -
K8S多集群切换方法
前言随着公司的k8s迁移,会发现集群越来越多,尤其是有混合云的公司,开发,测试,预生产,多个生产环境等等,管理k8s集群会越来越麻烦,下面我来介绍下k8s管理多集群的俩种方法。1) 通过多种kubeconfig文件管理因为我的一台机器,网络打通了多个生产环境,测试,开发环境,故我拿这一台机器举个简单的例子。#切换到生产集群kubectl get pod --kubeconfig=/root/.kube/aliyun_prod-config#切换到生产idc集群kubectl get po.原创 2020-10-16 16:19:55 · 1966 阅读 · 0 评论 -
kubernetes 拉取私有镜像 imagepullsecrets
1. kubernetes 拉取私有镜像的测试创建secret(创建方式有两钟,一种使用命令,第二种使用文件)下面我的私有仓库如下:reg.k8s.test.com ureg.k8s.test.coma. 修改docker的/etc/docker/daemon.json文件在所有的node节点中修改docker的/etc/docker/daemon.json文件修改insecure-registries参数。必须包含上面上面私有仓库的地址:{"registry-mirrors":原创 2020-10-14 16:23:06 · 704 阅读 · 0 评论 -
k8s镜像拉取策略 - imagePullPolicy
镜像拉取方式选择k8s-imagePullPolicy containers: - name: uses-private-image image: $PRIVATE_IMAGE_NAME imagePullPolicy: Always command: [ "echo", "SUCCESS" ]k8s的配置文件中经常看到有imagePullPolicy属性,这个属性是描述镜像的拉取策略Always 总是拉取镜像 IfNotPresent 本地有则...原创 2020-10-14 13:37:34 · 33779 阅读 · 0 评论 -
解决Kubernetes集群没有启动成功 1
登录Kubernetes测试集群时发现集群好像没有启动成功。运行kubectl cluster-info 查看集群信息时报错:The connection to the server 172.26.8.11:6443 was refused - did you specify the right host or port?第一反应Kubernetes API server没有启动。...原创 2020-04-08 15:10:09 · 760 阅读 · 0 评论 -
k8s命令对node调度 cordon,drain,delete 区别
此三个命令都会使node停止被调度,后期创建的pod不会继续被调度到该节点上,但操作的暴力程度不一cordon 停止调度影响最小,只会将node调为SchedulingDisabled之后再发创建pod,不会被调度到该节点旧有的pod不会受到影响,仍正常对外提供服务恢复调度kubectl uncordon node_name============================...原创 2020-03-20 11:24:13 · 36310 阅读 · 1 评论 -
kubespray 增加 删除 Node
在新增结点上执行如下操作:systemctl stop firewalldsystemctl disable firewalldrm /etc/yum.repos.d/*.repo -fecho "nameserver 114.114.118.110" > /etc/resolv.confwget -O /etc/yum.repos.d/CentOS-Base.repo htt...原创 2020-03-07 16:35:19 · 755 阅读 · 1 评论 -
Pod 状态一直 Terminating,Need to kill Pod
偶然查看服务时发现有个单副本的 pod 一直处于Terminating状态,已达 8 天之久,且手动删除删除不掉[appuser@lyj 2019-09-20 14:35:36 ~]$ kubectl get pods -n sit |grep loan-after-query-service-sitloan-after-query-service-sit-868758d5c8-7sfcr ...原创 2020-02-22 14:56:57 · 4203 阅读 · 0 评论 -
k8s--pod的状态为evicted
使用kubectl get pods, 发现很多pod的状态为evicted。原因eviction,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。多见于资源不足时导致的驱赶。解决方案排查资源和异常原因,防止新的驱赶产生。使用如下命令删除旧驱赶的遗留kubectl get pods | grep Evicted | awk ‘{print...原创 2020-02-20 21:55:21 · 7883 阅读 · 4 评论 -
Kubernetes的如何进入pod进行操作
首先类似于Docker容器,Kubernetes 使用kubectl 进行命令行操作进入docker容器 :docker exec -ti your-container-name /bin/sh进入Kubernetes的pod:kubectl exec -ti your-pod-name -n your-namespace – /bin/shOverview of kubect...原创 2020-02-14 17:25:18 · 8510 阅读 · 0 评论 -
Kubernetes Node的 隔离与恢复
worker-1 Ready,SchedulingDisabled node 1d v1.10.6worker-2 Ready,SchedulingDisabled node 1d v1.10.6在硬件升级、硬件维护等情况下,我们需要将某些Node进行隔离,脱离Kubernetes集群的调度范围。Kubernetes...原创 2020-02-13 15:15:49 · 2412 阅读 · 0 评论 -
kubernetes的namespaces总是Terminating
#kubectl delete ns jenkinsError from server (Conflict): Operation cannot be fulfilled on namespaces “jenkins”: The system is ensuring all content is removed from this namespace. Upon completion, thi...原创 2020-02-11 14:19:53 · 1778 阅读 · 1 评论 -
kubernetes之添加删除node(kubeadm)
使用 kubeadm 安装时,添加删除node…添加node1、master生成token[root@node-01 ~]# kubeadm token create --print-join-commandkubeadm join 172.19.8.250:8443 --token 83glhm.30nf8cih0q8960nu --discovery-token-ca-cert...原创 2020-01-29 22:12:51 · 3403 阅读 · 0 评论