k8s 基础环境配置
本文永久链接: https://www.xtplayer.cn/kubernetes/k8s-basic-environment-configuration/
主机基础配置主机名配置因为 K8S 或者 FQDN 的规定,主机名仅支持包含 - 或/和 .(中横线和点)两种特殊符号,并且一个集群中主机名不能重复。
Hosts
Linux 系统安装完成后,在 hosts(/etc/hosts) 中应该有 localhost 指向 127.0.0.1,如果没有则手动添加上。
配置每台主机的 hosts(/etc/hosts),添加 host_ip $hostname 到 /etc/hosts 文件中。
CentOS 关闭 selinuxsudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
关闭防火墙(可选)或者放行相应端口 对于刚刚接触 Rancher 的用户,建议在测试环境关闭防火墙,以避免出现网络通信问题。
关闭防火墙
C ...
阅读全文K8S 弃用 docker?
本文永久链接: https://www.xtplayer.cn/kubernetes/k8s-deprecated-docker/
本文转自 rancher 公众号
Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时。这一消息在云原生领域激起了不小的水花,在 Rancher 技术社区里许多小伙伴也对此进行了激烈的讨论。
Kubernetes 为什么选择弃用 Docker 呢?我们需要先简单了解 Dockershim。它是一个桥接服务,帮助 Kubernetes 与 Docker 进行通信,Kubelet 之前使用 dockershim 实现对 Docker 的 CRI 支持(Docker 本身目前尚未实现 CRI)。但时至今日,维护 Dockershim 已成为运维/开发人员的沉重负担。因此 Kubernetes 社区建议大家考虑使用包含 CRI 完整实现(兼容 v1alpha1 或 v1)的可用容器运行时。从而取消了对 Docker 作为容器运行时的支持。
不过大家不必过分担心,近 ...
阅读全文k8s Service 之 Iptables 流转过程
本文永久链接: https://www.xtplayer.cn/kubernetes/svc/k8s-svc-iptables-flow-process/
Service 介绍K8S 中 Service 通过使用 labels 直接指向 Pods,这种设计的灵活性极高,因为创建 Pods 的方式有很多,而 Service 不需要关心 Pods 通过哪种方式创建。同时也避免了 Pod 重建后 Pod IP 自动更换导致服务崩溃的问题。下文将对 Service ClusterIP 和 NodePort 这两种类型做详述。
ClusterIP:集群内部 IP,用于连接后端 Pod 实例的内部 IP,集群中 Pod 可通过 http://ClusterIP:Port 访问到后端 Pod 的 TargetPort 端口上,能够让集群中的 Pod 通过一个 ServiceName 或者 ClusterIP 达到可用性。
NodePort:NodePort 在集群中的主机节点上为 Service 提供一个代理端口,以允许从主机网络上对 Service 进行访问。
Service 之 Ipt ...
阅读全文导入 k8s 集群更新 CA 证书后 Rancher 端的配置操作
本文永久链接: https://www.xtplayer.cn/rancher/import-k8s-cluster-update-ca/
在早期的 rancher 版本中,如果导入的业务 K8S 集群因为证书到期重新生成了证书(包括 kube-ca 证书),这个时候在 Rancher UI shell 终端中执行命令时会报 x509 错误,UI 的一些操作也会报 x509 相关的错误,即使重启集群所有节点也没有效果。
问题分析根据 rancher 的运行逻辑,在第一次导入 rancher 的时候,cluster agent 和 node agent 会上报导入集群的所有配置信息到 rancher ,比如主机 IP,主机配置资源,kube-ca 证书等。
但是有的资源是只上传一次,比如 kube-ca 证书,上传后会写入 CRD 资源中保存,后期 agent 不管是重启还是重建均不会再上传 kube-ca 证书。所以如果是更新了集群 kube-ca 证书,那需要手动去更新 CRD 资源中的旧 kube-ca 证书。
解决步骤Rancher 相关操作Rancher 单容器部署备份 如 ...
阅读全文cattle-global-data/system-library-rancher-monitoring not found
本文永久链接: https://www.xtplayer.cn/rancher/cattle-global-data-system-library-rancher-monitoring-not-found/
rancher2.x 环境下,可能会出现以下错误信息,尤其是在离线环境下更容易出现。
CatalogTemplate.management.cattle.io "cattle-global-data/system-library-rancher-monitoring" not found。
问题分析
rancher2.x 很多附件功能是以 helm chart 部署,比如 monitoring。在 全局|工具|商店设置 可以看到 system-library 这个 repo,这个 repo 中存放了 system 相关的 helm chart。
rancher 在启动时会去 system-library repo 拉取 helm chart 文件,如果无法拉取 chart 文件,CatalogTemplate control 就会提示:
Catal ...
阅读全文rancher 单容器安装恢复
本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-single-container-restore/
恢复准备以下信息需要提前准备,在备份时替换相应的值。
Placeholder
Example
Description
<RANCHER_CONTAINER_TAG>
v2.0.5
初始安装 Rancher 时使用的 rancher/rancher 镜像版本
<RANCHER_CONTAINER_NAME>
festive_mestorf
Rancher 容器名称
<RANCHER_VERSION>
v2.0.5
创建的 Rancher 数据备份对应的 Rancher 版本
<DATE>
9-27-18
备份创建时间
在终端中输入 docker ps 查询 <RANCHER_CONTAINER_TAG> 和 <RANCHER_CONTAINER_NAME>
集群恢复
停止当前运行的 Rancher 容器.可通 ...
阅读全文rancher 单容器安装备份
本文永久链接: https://www.xtplayer.cn/rancher/backup-restore/rancher-single-container-backups/
在完成 Rancher 的单节点安装后,或在升级 Rancher 到新版本之前,需要对 Rancher 进行数据备份。如果在 Rancher 数据损坏或者丢失,或者升级遇到问题时,可以通过最新的备份进行数据恢复。
备份准备以下信息需要提前准备,在备份时替换相应的值。
Placeholder
Example
Description
<RANCHER_CONTAINER_TAG>
v2.0.5
初始安装 Rancher 时使用的 rancher/rancher 镜像版本
<RANCHER_CONTAINER_NAME>
festive_mestorf
Rancher 容器名称
<RANCHER_VERSION>
v2.0.5
创建的 Rancher 数据备份对应的 Rancher 版本
<DATE>
9-27-18
备份创建时间
在终端中 ...
阅读全文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/ ...
阅读全文