rancher rke 集群恢复
如果 rancher 是 HA 架构部署,在 HA 架构下,rancher 的数据是保存在 rke local K8S 集群中。所以在 rancher HA 架构下只需要通过 RKE 恢复 local 集群数据,即可同时恢复 rancher 的数据。
重要提示 此方法直接使用 RKE 进行集群恢复,它适用于 RKE 创建并导入的集群或者 RKE 部署的 local 集群
恢复准备
提示
需要在进行操作的主机上提前安装 RKE、RKE 下载和安装 kubectl。
在开始还原之前,请确保已停止旧集群节点上的所有 kubernetes 服务。
建议创建三个全新节点作为集群恢复的目标节点。有关节点需求,请参阅HA 安装。您也可以使用现有节点,清除 Kubernetes 和 Rancher 配置,这将破坏这些节点上的数据请做好备份,点击了解节点初始化。
准备恢复节点并复制最新快照假设集群中一个或者多个 etcd 节点发生故障,或者整个集群数据丢失,则需要进行 etcd 集群恢复。
添加恢复节点并复制最新快照:
恢复节点可以是全新的节点,或者是之前集群中经过初始化的某个节点;
...
阅读全文rancher 自定义集群恢复
本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-custom-cluster-restore/
根据 etcd 集群的容错机制,可以从机器重启这样的临时故障中自动恢复。对于永久性故障(比如由于硬件故障导致成员节点无法再连接到集群),它支持最多 (N-1)/2 个成员节点永久断开连接。 如果超过(N-1)/2 个成员节点断开连接,则 etcd 集群因为无法进行仲裁而无法继续正常运行,这个时候所有的 etcd 实例都将变成只读状态。
注意: 以下两种恢复方法要求 K8S 集群没有从 Rancher UI 中删除。
在有自动备份情况下恢复集群(UI 上集群未删除)
提示: 此方法适用于 Rancher v2.2.0 及以后版本创建的自定义 k8s 集群,并且 k8s 集群未从 Rancher UI 删除。注意: 如果有在 Rancher v2.2.0 之前版本创建的 k8s 集群,在升级 Rancher 之后,您必须编辑并更新集群,以便启用自动备份功能。即使在 Rancher v2.2.0 之前创建了备份,也 ...
阅读全文rancher rke 集群备份
本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-rke-cluster-backups/
如果 rancher 是 HA 架构部署,在 HA 架构下,rancher 的数据是保存在 rke local K8S 集群中。所以在 rancher HA 架构下只需要通过 RKE 备份 local 集群数据,即可同时备份 rancher 的数据。
重要提示 此方法直接使用 RKE 进行集群备份,它适用于 RKE 创建并导入的业务集群或者 RKE 部署的 local 集群
本节介绍在 Rancher HA 下如何备份数据。
Rancher Kubernetes Engine v0.1.7 或更高版本
RKE v0.1.7 以及更高版本才支持 etcd 快照功能
rancher-cluster.yml
需要使用到安装 Rancher 的 RKE 配置文件 rancher-cluster.yml,将此文件需放在与 RKE 二进制文件同级目录中
创建 ETCD 数据快照有两种方案创建 etcd 快照: 定时 ...
阅读全文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 ...
阅读全文