Kubernetes
文章平均质量分 54
K8S技术总结,给你最靠谱的实战经验指南。
catoop
性格开朗外向,积极进取充满热情,为人诚恳做事用心,爱好手工实践和大自然。有较强的自学意识创新意识和进取精神。喜欢分享技术收获,虽然是一个知识的搬运工,但对技术孜孜不倦,什么都想搞什么都想做的劲头小伙,善于灵活的运用技术优雅的解决问题,善于表达乐于沟通,一切只因心中那殿力量努力向上。
展开
-
为 harbor 项目配置独立域名访问(去除 path 路径中的项目名称小尾巴)
为 harbor 项目配置独立域名访问(去除 path 路径中的项目名称小尾巴)原创 2024-08-12 11:33:01 · 766 阅读 · 0 评论 -
Rancher 快照备份至 S3 及备份恢复
AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。原创 2024-07-26 15:00:47 · 372 阅读 · 0 评论 -
HELM 异常:Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress
其中[namespace]处输入对应的命名空间,会显示出当前命名空间下所有的server,输出结果中 NAME 这一列名称记下来,下一步要用到。删除指定服务后,重新使用 helm 安装该服务即可,其实总结就是helm 因为未知原因卡主了,我们删掉卡主的服务重新进行。其中[name]为步骤1获取的name,命令执行完成后历史记录中以 REVISION 列的序号可以用在回滚版本时使用。1、登陆到 k8s 机器命令行,查看所有 helm 服务。2、根据第1步获取的 name 查看对应的历史记录。原创 2024-06-06 14:33:38 · 279 阅读 · 1 评论 -
安装 kubectl
官网资料:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/原创 2023-02-22 10:36:14 · 1744 阅读 · 0 评论 -
Rancher RKE K8s 集群 etcd 恢复
因为是基于 Rancher RKE 的集群,所以在这个问题的情况下可以直接通过其默认备份的快照文件进行 etcd 恢复,如果没有做特别配置,etcd 和集群的快照备份文件在。5、最后启动 etcd 容器,查看日志就发现已经正常了,第二个机器同理操作,如果三个 master 都坏了,只要快照文件在,分别操作后启动容器也是没问题的。这个备份文件中包含两个东西:一个是 etcd 的快照 db 文件,一个是该 k8s 集群的集群配置内容,里面包含 kubeconfig、证书等内容。是下载的 etcdctl 文件,原创 2023-02-15 17:18:53 · 1253 阅读 · 0 评论 -
K8s Pod 驱逐调度时间窗口(按需调整参数使节点故障后可以快速转移Pod)
在 Kubernetes 中,当一个 Pod 所属的宿主机宕机后,这个 Pod 被驱逐并调度到其他节点上是需要一个时间窗口的,它不是立刻进行的(与 Pod 自己挂了不同,这里说的是节点服务器直接宕机的情况)。时长内 Pod 的状态是不发生变更的,本来是 Running 的话,这个期间就一直就是,当超过这个时长后会变成。所以,如果你对一个 Node 进行关机或断电操作,默认需要经过。秒后,这个 Node 上的 Pod 才会被驱逐并更新状态。(DaemonSet) 或。在 Node 状态为。原创 2022-12-16 17:25:07 · 2543 阅读 · 1 评论 -
K3s Load Balancer(Rancher LB)
K8S中访问服务的4种方式中的原生的LB方式是需要依赖公有云LB服务支持的。K3S设计了Service LB Controller,其专门为K3S集群而设计一个控制器。可以通过设置Service的type为LoadBalancer来使用,没有K8S那种对公有云LB服务支持的依赖要求了。K3s - Service LB Controller作用:创建iptables的转发规则对流量进行转发;限制:一个svclb独占一个port;操作:只需要将一个svc的type设置为LB,它就会自动处理相关工作。原创 2022-04-15 09:49:18 · 1527 阅读 · 0 评论 -
Rancher 使用 NFS Storage Classes 进行动态 NFS 存储
在 Rancher 里,默认不支持基于 NFS 的 Storage Classes,本文通过安装应用商店(helm chart 方式)中的 nfs-subdir-external-provisioner 来实现动态提供 nfs 存储。nfs-subdir-external-provisioner 可动态为kubernetes提供pv卷,是Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储。持久卷目录的命名规则为: namespace−{names原创 2022-04-14 16:46:17 · 1555 阅读 · 0 评论 -
国内拉取 gcr.io 镜像(Google Kubernetes 镜像)
常用镜像仓库DockerHub镜像仓库google镜像仓库 https://gcr.io/google-containers/ https://gcr.io/kubernetes-helm/ https://gcr.io/google-containers/pausecoreos镜像仓库elastic镜像仓库RedHat镜像仓库阿里云镜像仓库华为云镜像仓库国内镜像源 部分国外镜像仓库无法访问,但国内有对应镜像源,可以从以下镜像源拉取到本地然转载 2022-04-14 11:27:19 · 17003 阅读 · 0 评论 -
Rancher API 接口
Rancher 是一个可视化管理 K8S 的 dashboard,更多时候我们需要通过脚本或者代码的方式来自动化部署,本文通过示例的方式来演示如何找到对应 API。场景示例说明Rancher 使用 2.6 版本,在其他持续集成平台上(例如Jenkins)需要触发自动 redeploy(重新部署) 操作。面对这个需求,我们需要找到在 rancher 上对一个 deployment 进行重新部署的 API 接口,然后通过 rancher 提供的 API 调用这个接口即可。接口调用方法1、API key原创 2022-02-18 13:58:51 · 4496 阅读 · 0 评论 -
helm 错误 Error: INSTALLATION FAILED: must either provide a name or specify --generate-name
在 Helm 2 中,如果没有指定 release 的名称,则会自动随机生成一个名称。但是在 Helm 3 中,则必须主动指定名称,或者增加 --generate-name 参数让它自动生成一个随机的名称。在 helm v3 中,可以使用:helm install [NAME] [CHART]或者:helm install [CHART] --generate-name例子:helm install rancher rancher-stable/rancherhelm install ra原创 2021-12-27 19:16:11 · 10299 阅读 · 0 评论 -
k3s helm 异常 Error: Kubernetes cluster unreachable: Get “http://localhost:8080/version?timeout=32s“
如题,k3s 下使用 helm 操作时,出现一下错误内容:[root@k3s-rancher1 chart]# helm get values rancher -n cattle-system -o yaml > values.yamlError: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection原创 2021-12-27 15:41:27 · 3710 阅读 · 0 评论 -
k8s kubectl tab 自动补全,Linux 命令自动补全
以下命令,在服务器命令行执行即可:yum install -y bash-completionsource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc然后就可以开心使用了。(END)...原创 2021-12-25 22:31:09 · 1086 阅读 · 0 评论 -
K8s 资源清单拓扑图
Resource NameShort NamesNamespacedResource KindAPI GroupbindingsTRUEBindingcomponentstatusescsFALSEComponentStatusconfigmapscmTRUEConfigMapendpointsepTRUEEndpointslimitrangeslimitsTRUELimitRangenamespacesns...原创 2021-12-23 13:46:10 · 1002 阅读 · 0 评论 -
K8s 中 Service、Endpoints、Pod 之间的关系
概念Kubernetes 中的 Service,它定义了一组Pods的逻辑集合和一个用于访问它们的策略。一个 Service 的目标 Pod 集合通常是由Label Selector 来决定的。Endpoints 是一组实际服务的端点集合。一个 Endpoint 是一个可被访问的服务端点,即一个状态为 running 的 pod 的可访问端点。一般 Pod 都不是一个独立存在,所以一组 Pod 的端点合在一起称为 EndPoints。只有被 Service Selector 匹配选中并且状态为 Run原创 2021-12-22 13:18:10 · 6760 阅读 · 0 评论 -
K8s 更改 nginx-ingress-controller 的 80/443 端口
有些时候某些系统不允许开放提供80端口,亦或者80端口已经被其他服务占用。而我们使用K8S的时候,默认的 ingress-controller 端口是 80 端口。遇到这种情况,可以将 K8S 默认的 80 端口修改为其他端口,例如 80 修改为 8081。操作方法kubectl edit daemonset nginx-ingress-controller -n ingress-nginx其中 -n 参数指定的命名空间对应你自己实际存放 nginx-ingress-controller 的命原创 2021-12-21 17:46:08 · 3766 阅读 · 0 评论 -
K8s hosts 解析 HostAliases
先来通过下图来表达一下现象:通过图片内容可以看出,在 k8s 中,容器内部的 hosts 解析是不会继承宿主机的 host 解析的(与宿主机不相干),常规情况我们在这个应用体系内都有公共的 DNS 服务,DNS 服务是跨主机和容器共享的。只是有时候在没有公共DNS解析服务的情况下,而容器中的程序又需要通过本地域名的方式去请求接口。这就需要我们手工配置 hosts 映射,这个配置如图来看在宿主机上配置是不可行的,那么在 k8s 的应用场景中,它为我们提供了可以为 pod 配置 hosts 解析的方式,如原创 2021-12-21 17:41:21 · 9503 阅读 · 0 评论 -
k8s 之 kube-vip
如题,vip 顾名思义 虚拟 IP,从应用场景上来讲,kube-vip 实现的最终结果就是我们常说的 Keepalived 高可用方案。kube-vip 部署一、参数配置export VIP=192.168.1.213export INTERFACE=loexport KVVERSION=v0.4.0VIP是虚拟IP地址,和主机同一个网段,且未被占用INTERFACE是主机的网络接口名称,例如 lo、ens192、eth0 等KVVERSION是你需要部署的kube-vip的版本号,可原创 2021-12-21 14:47:44 · 4712 阅读 · 0 评论 -
rancher-webhook x509: certificate has expired or is not yet valid
本文一张图陈述了全文内容,可以右键在新窗口打开查看清晰图:(END)原创 2021-12-14 13:15:24 · 1084 阅读 · 1 评论 -
Harbor 启用 helmchart 服务
如果你没用过 harbor 然后你仅仅需要搭建一个 helmchart 仓库服务,那么你不必使用 harbor,如果你的环境中已经有 nexus3 了,你可以直接使用 nexus3 作为 helmchart 仓库,很好用且支持直接代理缓存第三方 helmchart 仓库。如果你已经在用 harbor,刚好你也需要有一个地方可以存储 helmchart,那么你可以为 harbor 开启 helmchart 服务支持,这样就不必额外再安装另外的 helmc原创 2021-12-10 09:19:03 · 4949 阅读 · 0 评论 -
Rancher Cluster is being upgraded
如题,出现这个问题大概率就是在单机版 docker 运行的 rancher 上手贱进行了升级操作后导致的吧(哈哈)官方给的说法中:docker 版的 rancher 是不能升级的,因为之前的版本官方并没有堵死这个操作,所以我们就能干啊。但是实际上操作了就会出错的,所以在后来的版本中 docker 版 rancher 不能做这个操作了。但是问题已经出现了,咋办呢?以下是操作步骤,拷贝自官方的 issue,文后给出官方链接。Go to your local clusterGo to Edit clus原创 2021-12-08 14:28:18 · 482 阅读 · 0 评论 -
Rancher 轮换证书 和 Rancher 自身证书过期处理
概述本文所述 “证书” 分为 “Rancher 自身证书” 和 “Rancher 启动的 Kubernetes 的证书” 两种。默认情况下,Kubernetes 集群所需要的证书由 Rancher 生成,如果出现证书过期,或证书泄露等情况,则需要使用新的证书轮换掉有问题的证书。轮换证书后,Kubernetes 组件将自动重新启动。以下服务支持证书轮换:etcdkubeletkube-apiserverkube-proxykube-schedulerkube-controller-mana原创 2021-12-08 13:47:25 · 2094 阅读 · 0 评论 -
K8S 查看 Pod 日志
如果容器已经崩溃停止,您可以仍然使用 kubectl logs --previous 获取该容器的日志,只不过需要添加参数 --previous。 如果 Pod 中包含多个容器,而您想要看其中某一个容器的日志,那么请在命令的最后增加容器名字作为参数。# 追踪名称空间 nsA 下容器组 pod1 的日志kubectl logs -f pod1 -n nsA# 追踪名称空间 nsA 下容器组 pod1 中容器 container1 的日志kubectl logs -f pod1 -c containe转载 2021-12-08 08:50:05 · 11386 阅读 · 0 评论 -
Failed to reconcile etcd plane: Failed to add etcd member [etcd-server05] to etcd cluster
出现这个错误的原因可能不止一种,本文陈述一个可能会出现这个错误的原因,那就是集群中存在了不存在的节点,然后当你再想新添加一个etcd节点的时候,就会出现这个错误。问题发生在 rancher 扩容 etcd 节点上(我先在界面删除了一个原来的 etcd 节点,然后又重新在一个新服务器上创建 etcd 节点出现的问题)。解决方法:1、docker 查看 etcd 集群的节点列表,确认有一个是我们要删除的节点(物理节点实际上已经在 rancher 中删除)[root@middleware2 ~]# doc原创 2021-12-07 19:43:06 · 1693 阅读 · 0 评论 -
kubectl 多集群环境切换
kubectl 在一个配置文件中配置多个环境信息,然后可以切换操作:先看如下配置文件apiVersion: v1kind: Configclusters:- name: "myk8s" cluster: server: "https://rancher.shanhy.com/k8s/clusters/c-97hgz" certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJpRENDQ\原创 2021-12-07 17:03:43 · 2552 阅读 · 0 评论 -
K8s 污点(Taints)与容忍(Tolerations)
概念先来看一个容忍标记和污点标记的调度关系图:与 亲和性(点击查看) 不同的是:Taints(污点)恰恰相反,它可以 Pod 不被调度到污点 Node,甚至将已经在污点中运行的 Pod 驱逐掉。Taints(污点)是Node的一个属性,设置了 Taints 后,因为有了污点,所以 Kubernetes 是不会将Pod调度到这个Node上的,但是有时候我们还想让系统稍微 “人情化/灵活一些”,于是Kubernetes又给Pod设置了 Tolerations(容忍)这样的属性,只要 Pod 能够原创 2021-12-01 16:26:55 · 1123 阅读 · 0 评论 -
K8s 亲和性和非亲和性(Affinity)
概念关于 K8S 对 Pod 的调度,通常情况下Pod被分配到哪些Node是不需要我们操心的,这个过程会由scheduler自动实现。但有时,我们需要让Pod按照我们的预想运行在Node上(例如某些应用 “必须/或者尽量” 跑在具有SSD存储的节点上,有些应用应该跑在同一个节点上等)。为此,k8s提供了这样的策略,我们可以通过使用 “亲和性/非亲和性” 制定一些规则来实现我们的需求。亲和性调度可以分成软策略和硬策略两种方式:硬策略:可以理解为必须,就是如果没有满足条件的节点的话,就不断重试直到满足条原创 2021-12-01 12:17:25 · 5174 阅读 · 0 评论 -
k8s修改ingress默认80端口为其他端口
其实很多时候客户都不给用80端口,亦或者80端口已经被其他服务占用。而我们使用K8S的时候,默认的 ingress-controller 端口是 80 端口。遇到这种情况,可以将 K8S 默认的 80 端口修改为其他端口,例如 80 修改为 8081。操作方法kubectl edit daemonset nginx-ingress-controller -n ingress-nginx containers: - args: - /nginx-ingress-c原创 2021-11-20 23:03:51 · 7811 阅读 · 0 评论 -
关于 k3s registries.yml 文件的配置注意点(k8s mirrors)
所有的坑都是因为自己学艺不精导致的,本人也不例外,记录本文其实只是一个提醒,是一个注意事项说明。希望在你看到本文之后,你的问题也能得以解决。先来看一下 k3s 部署的配置文件 registries.yml 内容,如下:---mirrors: customreg: endpoint: - "https://ip-to-server:5000"configs: customreg: auth: username: xxxxxx # 镜像仓库用户名原创 2021-11-10 13:34:39 · 2167 阅读 · 1 评论 -
docker、containerd、ctr、crictl 的联系
一、docker 和 containerd1、docker 由 docker-client ,dockerd,containerd,docker-shim,runc组成,所以containerd是docker的基础组件之一2、从k8s的角度看,可以选择 containerd 或 docker 作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。所以k8s后来的版本开始默认使用 containerd 。3、containerd 相比于docker , 多了 nam原创 2021-11-10 09:13:07 · 6752 阅读 · 4 评论 -
k8s v1.22版本中Ingress配置:no matches for kind “Ingress“ in version “networking.k8s.io/v1beta1“
在部署Ingress-nginx过程中(我使用的是1.22版本的k8s),遇到问题 “no matches for kind “Ingress” in version “networking.k8s.io/v1beta1””,查阅资料确定是因为k8s版本过新且已不支持对应的api,所有需要对其进行更改。然后查阅官方文档,,发现1.19版本以后,Ingress 所在的 apiServer 和配置文件参数都有所更改,具体配置相关资料1和资料2。(END)...原创 2021-11-09 13:33:07 · 10305 阅读 · 0 评论 -
基于rancher的k8s集群搭建
声明:本文转自 https://blog.csdn.net/chen978616649/article/details/104067772 ,只对其进行了一定的排版,具体内容可靠性未做验证。生产环境k8s集群方案主要由以下四部分组成1、F5 ,rancher ui及业务服务访问入口,所有域名访问解析到此F52、nginx,k8s集群业务服务访问入口、HA负载3、rancher ui,k8s可视化管理平台4、k8s集群整体架构图:准备:1、所有主机节点开通外网访问权限2、申请ht.转载 2021-11-03 14:17:49 · 953 阅读 · 0 评论 -
非root用户运行容器(K8S SecurityContext)
一、从构建镜像的角度下手将非root用户添加到Dockerfile# RUN命令执行创建用户和用户组(命令创建了一个用户newuser设定ID为5000,并指定了用户登录后使用的主目录和shell)RUN groupadd --gid 5000 newuser \ && useradd --home-dir /home/newuser --create-home --uid 5000 --gid 5000 --shell /bin/sh --skel /dev/null newus原创 2021-08-04 14:24:03 · 4995 阅读 · 0 评论 -
Rancher k8s 节点服务器清理
背景基于 rancher 安装的 k8s 集群,有时候因为配置错误导致K8S Node节点服务器未能正常注册,后反复重试均无法成功。大概率是第一次的时候产生了一些列配置文件,再没有对这些文件进行清理的情况下,后续的反复重试都无法成功。有时候我们需要将正常使用的 Node节点服务器进行清理解决按照如下命令在需要清理的服务器节点上执行,一般来说这个服务器再重新进行注册的时候都会成功docker rm -f $(docker ps -qa)docker volume rm $(docker vo原创 2021-07-27 15:30:18 · 843 阅读 · 0 评论 -
Rancher 2.x 安装配置
动手操作之前,请先将文本阅读完整,理解整体过程后再动手,相关注意事项需要了解清楚。本文为开发环境Rancher单机版安装,如需集群版安装可以详见官方文档。前置条件服务器已经安装docker并已启动docker服务。如果是内网安装,需要依赖docker私服harbor,你需要确保你harbor运行正常。docker服务已配置默认连接到私服harbor,并在服务器上使用 docker login 正常登录私服成功。将域名 harbor.goodcol.com 配置到服务器的 /etc/host原创 2021-07-26 11:45:56 · 468 阅读 · 0 评论 -
rancher resolv.conf 挂载为目录(Linux操作系统无resolv.conf)
常规来说,不管是我们的PC还是Linux服务器,都会正常配置DNS。但有时候你拿到的服务器可能已经被预装操作系统,而我们又不清楚操作系统提供方对操作系统时配置了哪些信息,所以针对DNS这块的配置情况可能会影响到我们的实际程序正常工作,如下:在CentOS和RedHat操作系统中,dns是默认配置在/etc/resolv.conf中的(如果你配置了DNS并启动了DNS相关服务)。如果你的服务器从一开始安装就没有配置过DNS,那么这个文件很可能就不会存在。恰好你的其他程序需要依赖读取这个文件时,就会出现读取不原创 2021-07-26 10:11:12 · 951 阅读 · 0 评论 -
基于Rancher在K8S中部署Nacos集群
比较简单,按照如下截图配置工作负载和负载均衡规则即可下面附完整的 yaml 文件内容:(END)原创 2021-06-28 16:30:29 · 2057 阅读 · 0 评论 -
K8S(Rancher)Ingress 规则 - Nginx 反向代理重定向
1、Rancher 配置截图:2、yaml 配置(只包含关键部分)apiVersion: extensions/v1beta1kind: Ingressmetadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1spec: rules: - host: qxc.xxx.com http: paths: - backend: serviceName原创 2021-06-17 12:48:29 · 2710 阅读 · 0 评论 -
K8S Nginx 413 Request Entity Too Large
使用K8S部署容器项目的时候,如果使用了 nginx-ingress,则所有请求都会通过 nginx-ingress-controller 这个POD。对于需要上传附件或者POST传输很大报文的时候,肯有可能会出现 Nginx 413 Request Entity Too Large 错误。这是因为 nginx 默认对请求 body 的大小限制为 1m(同样像相关 timeout 也都有默认限制)。如果你遇到了这个问题,在K8S中,需要对 ingress 的配置进行修改,如下:apiVersion:原创 2021-06-07 14:26:44 · 1224 阅读 · 0 评论 -
k8s ingress-nginx 使用 snippet 添加自定义配置(ngx_headers_more)
K8S 中使用 ingress-nginx,为我们提供了很大的方便,我们不需要自己手工维护 nginx,只需要配置相应的 ingress 规则,就可以直接生效到 nginx-controller 中。但是凡事都是相对了,简单的另一面就是灵活性降低,我们不再能像维护自己安装的nginx 一样随心所欲的修改配置文件。比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加包体大小限制、添加跨域配置、添加自定义header、处理响应header等等。遇到这些需求的时候,我们开始原创 2021-02-24 11:11:05 · 9390 阅读 · 5 评论