K8S托管Rancher集群

当RancherUI不可用时,可以通过备份kubeconfig文件,安装kubectl工具来继续对k8s集群进行操作,如部署、更新服务。主要步骤包括备份kubeconfig,配置kubernetes源,安装kubectl,使用kubectl与集群交互,更新或部署服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

Rancher可能会出现某些问题导致UI界面无法访问,就没有办法部署或者更新服务。在这种情况下,我们使用集群的kubeconfig文件,借助k8s托管这个集群,即使UI界面无法访问,我们也能进行部署服务、重启服务等操作。

1、备份集群的kubeconfig文件(重要)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-38enrYmL-1684412304437)(null)]

点击kubeconfig文件,可以复制出来保存。

注:一定要在Rancher UI正常访问的时候备份,不然U崩溃时就无法备份了。

2、安装命令行工具

2.1、kubernetes源配置

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

2.2 安装kubelet、kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet

2.3 将需要操作的集群文件放到指定目录下
2.3.1 创建目录

mkdir -p $HOME/.kube

2.3.2 移动文件

这里的/tmp/admin.conf文件是上面备份的集群的kubeconfig文件

sudo cp -i /tmp/admin.conf $HOME/.kube/config

2.4 登录虚拟机,启动 kubectl,用它与 kubernetes 集群进行交互

使用 --kubeconfig 标记来指定它,如下所示:

kubectl --kubeconfig $HOME/.kube/config get pods

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJkze0OI-1684412304584)(null)]

3、更新服务

3.1 查看当前集群中的Pod的名称空间
查看某个pod名称、名称空间和运行节点

kubectl get pod -A -o yaml |grep '^    n'|grep -v nodeSelector

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACHt6vWz-1684412304491)(null)]

通过Pod对应的Deployment查看名称空间

kubectl get deployment -A

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C1lZASek-1684412304677)(null)]

以上方式二选其一。

3.2 查看一个名称空间下的Deployment

kubectl --kubeconfig $HOME/.kube/config get deployment -n default

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-naU5f5I8-1684412304527)(null)]

3.3 将这个Deploymentyaml文件保存下来

kubectl --kubeconfig $HOME/.kube/config get deployment mysql-5-7-34-binlog  -n default -o yaml >> mysql.yaml

3.4 修改yaml文件,更新服务,比如我们更换服务使用的镜像版本

修改图中所示的内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1hGh0kRA-1684412304606)(null)]

下图所示内容需要删除:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2bHOjGy-1684412304391)(null)]

3.5 执行下面的命令更新服务

kubectl apply -f mysql.yaml

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1m7qRYH-1684412304357)(null)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d3NMZIu6-1684412304508)(null)]

问题:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nfLf2L9i-1684412304660)(null)]

出现这种问题是配置文件是带有时间戳的,需要使用最新的yaml文件重新执行命令。

4、部署服务

4.1 准备部署服务所需的yaml文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NeKRjb7X-1684412304416)(null)]

4.2 执行命令部署服务

kubectl apply -f base.yaml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZ71aWdw-1684412304559)(null)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHR4mRtV-1684412304719)(null)]

5、常用命令

5.1 获取当前集群中所有的Pod

kubectl --kubeconfig $HOME/.kube/config get pods

5.2 查询Pod的名称空间
查看某个pod名称、名称空间和运行节点

kubectl get pod -A -o yaml |grep '^    n'|grep -v nodeSelector

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b3wAHcxR-1684412304637)(null)]

5.3 通过Pod对应的Deployment查看名称空间

kubectl get deployment -A

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2vVLt1X-1684412304461)(null)]

5.4 获取当前集群中所有的Services

kubectl --kubeconfig $HOME/.kube/config get svc

5.5 获取名称空间mysql-clz中所有的Pod

kubectl --kubeconfig $HOME/.kube/config get pods -n mysql-clz

5.6 查看Pod的描述信息

kubectl --kubeconfig $HOME/.kube/config describe pod mysql-clz-78b8cf6-nlwn6 -n mysql-clz

5.6 查看Podyaml文件

kubectl --kubeconfig $HOME/.kube/config get deployment mysql-clz-78b8cf6-nlwn6 -n mysql-clz -o yaml
kubectl --kubeconfig $HOME/.kube/config get  mysql-clz-78b8cf6-nlwn6 -o yaml

5.8 查看名称空间mysql-clz中的Deployment

kubectl --kubeconfig $HOME/.kube/config get deployment -n mysql-clz

5.9 查看Deploymentyaml文件

kubectl --kubeconfig $HOME/.kube/config get deployment mysql-clz -n mysql-clz -o yaml

5.10 使用yaml文件部署服务

kubectl --kubeconfig $HOME/.kube/config apply -f base.yaml
### Rancher 集群授权配置教程 #### 创建 ClusterRoleBinding 为了实现集群级别的权限管理,在 Kubernetes 中可以通过 `ClusterRoleBinding` 来绑定特定的角色到用户或组。通过执行以下命令,可以创建名为 `read-cluster-nodes` 的 ClusterRoleBinding,从而允许指定主体访问集群节点资源[^1]。 ```bash kubectl create clusterrolebinding read-cluster-nodes --clusterrole=system:nodes --group=system:authenticated ``` 上述命令的作用是将 `system:nodes` 这一角色授予给所有经过身份验证的用户群体 (`system:authenticated`),使他们能够读取集群中的节点信息。 #### 授权集群端点的功能限制 值得注意的是,仅当使用 Rancher 部署的 Kubernetes 集群(即 RKE 集群)时,才支持启用 **授权集群端点** 功能。对于其他类型的集群,例如导入的外部集群或者云服务提供商托管集群,则无法利用这一特性[^2]。 因此,在实际操作前需确认目标集群是由 Rancher 使用 RKE 工具部署而成。 #### 下载并启动 Rancher 容器镜像 在本地环境中准备运行 Rancher Server 前提条件之一就是获取官方发布的 Docker 镜像文件。以下是具体的操作步骤: 1. 利用 Docker CLI 获取最新本 (此处以 v2.5.7 本为例) 的 Rancher 应用程序镜像: ```bash docker pull rancher/rancher:v2.5.7 ``` 2. 启动容器实例并将必要的参数传递进去以便正常工作环境搭建完成之后即可对外提供服务接口供客户端连接请求处理业务逻辑等功能模块调用等需求场景下适用[^3]: ```bash docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ --privileged \ rancher/rancher:v2.5.7 ``` #### 构建 Kubernetes 集群 最后一步涉及到了通过 RKE 工具来构建完整的 Kubernetes 生产可用型基础设施架构体系结构设计规划方案实施过程如下所示: 进入预定义好的目录位置 `/opt/rancher/deploy/` 并执行相应的 YAML 文件描述文档内容解析转换动作触发自动化安装流程直至成功结束为止[^4]. ```bash cd /opt/rancher/deploy/ rke up --config ./rancher-cluster.yml ``` 以上便是整个关于如何基于 Rancher 实现对已有 K8S 集成项目之间相互协作关系建立起来的一套标准解决方案概述说明文档记录分享给大家共同学习进步成长! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值