rancher 自定义集群备份
本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-custom-cluster-backups/ 自 v2.2.0 起可用,仅支持自定义集群 在 Rancher UI 中,可以很容易对自定义集群做 etcd 备份和恢复。备份 etcd 数据并将其保存到 etcd 节点的 /opt/rke/etcd-snapshots/ 目录下或上传到 S3 存储。 提示: Rancher 建议为所有生产集群配置 etcd 自动备份。 注意: 如果您有通过 Rancher v2.2.0 之前版本创建的自定义 Kubernetes 集群,则在升级 Rancher 之后,必须编辑该集群并保存它,以便启用自动备份功能。即使您已经使用 Rancher v2.2.0 之前版本创建了备份,也必须执行此步骤。因为早期的自动备份无法用于通过 UI 备份和还原 etcd。 自动备份默认情况下,Rancher 启动的 Kubernetes 集群将启动自动备份(默认保存在本地磁盘 /opt/rke/etcd-snapshots/ 目录下)。为了 ...
阅读全文rancher 离线安装镜像同步
本文永久链接: https://www.xtplayer.cn/rancher/install/rancher-install-offline-images/ 准备文件 使用可以访问 Internet 的主机,访问我们的版本 发布页面,找到需要安装的 Rancher 2.x.x 版本。不要下载 rc 或者 Pre-release 版本,因为它们不适用于稳定的生产环境。 从发行版本的 Assets 部分,下载 rancher-images.txt,此文件包含安装 Rancher 所需的所有镜像的列表。 通过 RKE 生成镜像清单 rke config --system-images -all >> ./rancher-images.txt 对镜像列表进行排序和去重,以去除重复的镜像。 sort -u rancher-images.txt -o rancher-images.txt 复制以下脚本保存为 rancher-save-images.sh,与 rancher-images.txt 放在同一目录层级; #!/bin/bash# 定义日志workdir=`pwd` ...
阅读全文rancher k8s 对接 ceph 存储
本文永久链接: https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/ 本文编写的前提是已有正常工作的 ceph 存储服务,并且 Rancher 集群能正常访问 ceph 存储服务,另外这里我们对接的是 Rancher 持久化存储的存储类。\ 随着 UI 翻译的更新,可能有些参数名称与实际名称不相同。 配置 ceph secretRancher 连接 ceph 集群需要 ceph secret,在 ceph 服务器中执行以下命令生成 ceph secret: ceph auth get-key client.admin |base64 创建 secret 对象将 key 替换为实际 ceph 的 secret,然后 import yaml 到 rancher 集群。 apiVersion: v1kind: Secretmetadata:type: "kubernetes.io/rbd"data: key: QVFEMDJ1VmE0L1pxSEJBQUtTUnFwS3JFVjErR ...
阅读全文k8s 中的 pvc pv sc
本文永久链接: https://www.xtplayer.cn/kubernetes/storage/k8s-pvc-pv-sc/ 概述 Persistent Volume Claims( PVC) :应用 Pod 从集群请求存储资源的对象,可以理解为应用 Pod 可以访问和使用多少存储空间的凭证。 通过 PVC,可以指定存储服务器类型(SC),可以指定需要多大的存储空间(PV),可以配置卷的访问模式(单主机读写、多主机只读、多主机读写)。 Persistent Volume(PV):在 Storage 上划分的一块用于存储数据的空间。 Storage Class(SC):对接后端存储服务器(Storage)的驱动(插件),配置 Storage Class 对象时,需要提供对接存储的相关信息,比如存储地址、认证用户名和密码等。 Storage:真实存储数据的服务器,包含服务器地址和认证等信息。
阅读全文Rancher2 keycloak 认证
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-keycloak-authentication/ 版本支持: Rancher v2.1.0+ 注意 在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。 Keycloak 配置 新建一个 Clients 参数配置: Client ID:https///v1-saml/keycloak/saml/metadata Client Protocol:saml 配置 clients 基本配置 参数配置: Client ID:https//<rancher_server_url>/v1-saml/keycloak/saml/metadata Name:clientName Enabled:on Sign Documents:on Sign Assertions:on Valid Redirect URIs:https://<rancher_server_url> ...
阅读全文Rancher2.x 对接外部认证系统
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-authentication/ Rancher 为 Kubernetes 增强的一个关键功能是集中用户身份验证,此功能允许您的用户使用一组凭据对所有 Kubernetes 集群进行身份验证。 此集中式用户身份验证是使用 Rancher 身份验证代理完成的,该代理与 Rancher 一起安装。此代理会对您的用户进行身份验证,并使用服务帐户将其请求转发给您的 Kubernetes 集群。 外部认证与本地认证Rancher 提供本地身份验证,也可以与外部身份验证服务集成: Auth Service 可用版本 Microsoft Active Directory v2.0.0 GitHub v2.0.0 Microsoft Azure AD v2.0.3 FreeIPA v2.0.5 OpenLDAP v2.0.5 Microsoft AD FS v2.0.7 PingIdentity v2.0.7 Keycloak v2.1 ...
阅读全文Rancher2 AD 域认证
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-ad-authentication/ 如果您的组织使用 Microsoft Active Directory 作为统一用户管理系统,则 Rancher 可以集成 Active Directory 服务以进行统一身份验证。Rancher 根据 Active Directory 管理的用户和组来控制对集群和项目的访问,同时允许最终用户在登录 Rancher UI 时使用其 AD 凭据进行身份验证。 Rancher 使用 LDAP 与 Active Directory 服务通信。因此,Active Directory 的身份验证流程与 OpenLDAP身份验证集成方法相同。 注意 在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。 先决条件您需要通过 AD 管理员创建或获取新的 AD 用户,以用作 Rancher 的服务帐户。此用户必须具有足够的权限才能执行 LDAP 搜索并读取 AD 域下的用户和组的属性。 通常应该使用域用户帐户(非管理员)来实现此目 ...
阅读全文POD 中容器异常重启原因定位
本文永久链接: https://www.xtplayer.cn/kubernetes/pod-container-restart-reason-check/ 在 K8S 的使用过程中,POD 中容器重启应该是很容易遇到,如下图可以明确的看到 POD 中容器重启的次数。 当遇到容器异常重启,应该进一步的找到容器重启的原因,避免下次再出现相同的问题。下面我将分享定位容器异常重启的几个步骤。 检查 POD 事件 对于 POD 层面的原因造成的容器重启,比如健康检查等,一般在 POD 事件中会有相应的事件信息。这个时候点击 POD 名称进入 POD 详情页面,然后点击事件则可以看到具体的 POD 事件。 POD 事件非持久性的,默认只保留 1 个小时。所以如果等的时间过长,事件中则没有事件显示。 检查容器退出原因(reason)和状态码有时候如果容器做了资源限制,比如内存限制了 1G。当容器使用的内存资源超过 1G 时,就会触发 Linux 系统的 OOM(Out Of Memory Killer)机制。当触发 OOM 后,容器进程将会被 KILL 掉,因此容器会停止。 但是在 K ...
阅读全文博客同步至 OSCHINA
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:洪晓露,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply
阅读全文rancher nginx ingress 实现灰度发布
本文永久链接: https://www.xtplayer.cn/rancher/rancher-nginx-ingress-canary/ 简介Nginx-ingress 是一个以 Nginx 为核心组件的 K8S 负载均衡工具,支持通过配置 Ingress 规则的 Annotations 来实现不同场景下的灰度发布和测试。 Ingress Annotations 支持以下 4 种 Canary 规则: nginx.ingress.kubernetes.io/canary-by-header:基于 Request Header 的流量切分,适用于灰度发布以及 A/B 测试。当 Request Header 设置为 always 时,请求将会被一直发送到 Canary 版本;当 Request Header 设置为 never 时,请求不会被发送到 Canary 入口;对于任何其他 Header 值,将忽略 Header,并通过优先级将请求与其他金丝雀规则进行优先级的比较。 nginx.ingress.kubernetes.io/canary-by-header-valu ...
阅读全文K8S 自动部署工具
本文永久链接: https://www.xtplayer.cn/kubernetes/automatic-k8s-deployment-tool/ 你或者你的团队是否正在寻找下一代架构?或者你已经拥有了这样的架构,但是仍然在探索自动化和管理的最佳方式。在本文中,我们将借助 env0 的能力来部署 Rancher 环境。 Rancher:开源 Kubernetes 管理平台 对于采用容器的团队来说,Rancher 是一个完整的软件堆栈。它解决了多 Kubernetes 集群管理的运维和安全挑战,同时为 DevOps 团队提供了运行容器化工作负载的集成工具。在本次 demo 中我们将使用 Rancher,您可以访问以下链接查看如何快速运行 Rancher:https://github.com/rancher/quickstart env0:基础架构自动化平台 env0 是一个基础架构自动化平台,它可以将 Terraform 及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。你可以通过下方链接登录并免费使用该产品:https://app.env0.com/ ...
阅读全文rancher16 通过 webhook 自动升级服务
本文永久链接: https://www.xtplayer.cn/rancher/rancher16-webhook-auto-update/ 概述前面的文章我们有讲述了如何通过 Rancher-webhook 实现 Service/Host 的弹性伸缩。今天我们再来演示一下如何通过 Rancher-webhook 对接三方的 CI 系统,实现微服务镜像的自动构建与服务的自动升级。 PS: CI 即持续集成,包括但不限于自动编译、发布和测试、自动构建,我们这里说的 CI 系统仅限于自动构建这一步。 前面已经对 webhook 做了介绍,这里不再讲解。本文主要基于阿里云的容器镜像服务,整个流程大致如下图所示: 基础准备 安装支持的 docker (http://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions); 安装 Rancher v1.6.11 (https://hub.docker.com/u/rancher); 因为是对接云端 CI,所以 Rancher server 需要能被公网访 ...
阅读全文K8S 节点初始化
本文永久链接: https://www.xtplayer.cn/rancher/node-init/ 自动清理节点将节点添加到集群时后,会创建容器、虚拟网络接口等资源和证书、配置文件。从集群中正常删除节点时(如果处于 Active 状态),将自动清除这些资源,并且只需重新启动节点即可。当节点无法访问且无法使用自动清理,或者异常导致节点脱离集群后,如果需要再次将节点加入集群,那么需要手动进行节点初始化操作。 手动清理节点 警告: 以下操作将删除节点中的数据,在执行命令之前,请确保已进行数据备份。 #!/bin/bashKUBE_SVC='kubeletkube-schedulerkube-proxykube-controller-managerkube-apiserver'for kube_svc in ${KUBE_SVC};do # 停止服务 if [[ `systemctl is-active ${kube_svc}` == 'active' ]]; then systemctl stop ...
阅读全文rancher k8s 使用 iscsi 存储
本文永久链接: https://www.xtplayer.cn/rancher/rancher-k8s-use-iscsi-storage/ iSCSI 命名约定iSCSI 使用一种特殊、唯一的名称来标识 iSCSI 节点(目标或启动器)。此名称类似于与光纤通道设备相关联的全球名称 (WWN),可作为一种通用的节点识别方式使用。iSCSI 名称通过两种不同方式格式化。最常见的是 IQN 格式。有关 iSCSI 命名要求和字符串配置文件的更多详细信息,请参见 IETF 网站上的 RFC 3721 和 RFC 3722。 iSCSI 限定名 (IQN) 格式IQN 格式采用 iqn.yyyy-mm.naming-authority:unique name 的形式,其中: yyyy-mm 是命名机构成立的年份和月份。 naming-authority 通常是命名机构的 Internet 域名的反向语法。例如,iscsi.vmware.com 命名机构的 iSCSI 限定名形式可能是 iqn.1998-01.com.vmware.iscsi。此名称表示 vmware.com 域名于 19 ...
阅读全文关于 eBPF
原文:https://docs.projectcalico.org/about/about-ebpf eBPF 是一种 Linux 内核功能,允许将快速而安全的微型程序加载到内核中以自定义其操作。 通过本文档,您将了解: eBPF 的一般背景。 eBPF 的各种用途。 Calico 如何在 eBPF 数据平面中使用 eBPF。 什么是 eBPF?eBPF 是嵌入在 Linux 内核中的 “虚拟机”。它允许将微型程序加载到内核中,并附加到钩子上,而钩子会在发生某些事件时触发。这样可以自定义内核的行为(有时是很严格的)。尽管每种钩子的 eBPF 虚拟机都相同,但是钩子的功能有很大差异。虽然将程序加载到内核中可能很危险,但内核通过非常严格的静态验证器运行所有程序。验证程序会将程序沙盒化,以确保它只能访问允许的内存部分,并确保它必须快速终止。 为什么称为 eBPF?eBPF 是 “扩展 Berkeley 包过滤器” 的缩写。Berkeley 包过滤器是一种更早,更专业的虚拟机,专门用于过滤数据包。诸如tcpdump此类使用此“经典” BPF VM 来选择应发送到用户空间进行分析的数据包 ...
阅读全文Gogs 安装,升级
本文永久链接: https://www.xtplayer.cn/git/gogs-install-update/ Gogs 是一款极易搭建的轻量级自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。 功能特性 支持活动时间线 支持 SSH 以及 HTTP/HTTPS 协议 支持 SMTP、LDAP 和反向代理的用户认证 支持反向代理子路径 支持用户、组织和仓库管理系统 支持添加和删除仓库协作者 支持仓库和组织级别 Web 钩子(包括 Slack 集成) 支持仓库 Git 钩子和部署密钥 支持仓库工单(Issue)、合并请求(Pull Request)、Wiki 以及保护分支 支持迁移和镜像仓库以及它的 Wiki 支持在线编辑仓库文件和 Wiki 支持自定义源的 Gravatar 和 Federated Avatar 支持 Jupyter Notebook 支 ...
阅读全文Api Server 和 ETCD 健康状态检查
本文永久链接: https://www.xtplayer.cn/kubernetes/api-server-and-etcd-health-state-check/ kube-apiserver 健康状态检查rancher 自定义集群或者 rke 集群,kube-scheduler 和 kube-controller-manager 以及 kube-apiserver 同时运行在一个主机上,并且都是以 host 网络默认运行。 当 kube-scheduler 和 kube-controller-manager 去连接 127.0.0.1:6443 时,其实就是在连接 kube-apiserver。有时如果提示 kube-scheduler 和 kube-controller-manager 连接 127.0.0.1:6443 失败,那么需要检查一下看是否是 kube-apiserver 本身运行异常,或者因为网络问题连接不上 kube-apiserver。 因为 rancher 自定义集群或者 rke 集群中,所有组件都开启了 ssl 认证,并且 kube-apiserver 和 ...
阅读全文k3s containerd 配置 mirror 和 insecure
containerd 使用了类似 k8s 中 svc 与 endpoint 的概念。svc 可以理解为访问 url,这个 url 会解析到对应的 endpoint 上。也可以理解 mirror 配置就是一个反向代理,它把客户端的请求代理到 endpoint 配置的后端镜像仓库。mirror 名称可以随意填写,但是必须符合 IP 或域名 的定义规则。并且可以配置多个 endpoint,默认解析到第一个 endpoint,如果第一个 endpoint 没有返回数据,则自动切换到第二个 endpoint,以此类推。 比如以下配置示例: mirrors: "*": endpoint: - "http://192.168.50.119" "192.168.50.119": endpoint: - "http://192.168.50.119" "reg.test.com": endpoint: - "http://192.168.50 ...
阅读全文golang pprof etcd 性能分析
本文永久链接: https://www.xtplayer.cn/etcd/etcd-pprof-performance-analysis/ pprof 是什么?pprof 是用于可视化的性能分析工具,可以捕捉到多维度的运行状态的数据。 pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)。 profile.proto 是一个 Protocol Buffer v3 的描述文件,它描述了一组 callstack 和 symbolization 信息, 作用是表示统计分析的一组采样的调用栈,是很常见的 stacktrace 配置文件格式。 支持什么模式 Report generation:报告生成 Interactive terminal use:交互式终端使用 Web interface:Web 界面 可以做什么 CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置 Memory Profiling:内存分析,在 ...
阅读全文复用 Released 状态的 pv
本文永久链接: https://www.xtplayer.cn/kubernetes/reuse-released-pv/ PV 回收策略当用户不再使用其存储卷时,他们可以从 API 中将 PVC 对象删除,从而允许 该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群,当其被 从申领中释放时如何处理该数据卷。 目前,数据卷可以被 Retained(保留)、Recycled(回收,Recycle 已被废弃)或 Deleted(删除)。 保留(Retain)回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象 被删除时,PersistentVolume 卷仍然存在,对应的数据卷被视为”已释放(released)”。 由于卷上仍然存在这前一申领人的数据,该卷还不能用于其他申领。 管理员可以通过下面的步骤来手动回收该卷: 删除 PersistentVolume 对象。与之相关的、位于外部基础设施中的存储资产 (例如 AWS EBS、GCE PD、Azure Disk 或 Cinder 卷)在 PV 删除之后仍然存在 ...
阅读全文Rancher 不显示全局功能的解决方案
本文永久链接: https://www.xtplayer.cn/rancher/rancher-not-display-global-monitoring/ 有时候在 rancher ui 全局界面无法查看一些功能,比如全局监控,或者企业版无法在镜像仓库菜单中查看 harbor 配置等。这是一个历史遗留的 BUG,访问 server_url/v3/users?me=true 时可以看到多个用户具有 me: true 字段。 解决方法在 local 集群或者 rancher server 容器中执行以下脚本: 注意:操作前先对 local 集群或者 rancher server 容器做数据备份。 for user in `kubectl get users.management.cattle.io|awk '{print $1}'|grep -v NAME`;do if [ "$( kubectl get user ${user} -oyaml|grep -w 'me: true' ...
阅读全文