背景
Rancher可能会出现某些问题导致UI界面无法访问,就没有办法部署或者更新服务。在这种情况下,我们使用集群的kubeconfig文件,借助k8s托管这个集群,即使UI界面无法访问,我们也能进行部署服务、重启服务等操作。
1、备份集群的kubeconfig文件(重要)
点击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
3、更新服务
3.1 查看当前集群中的Pod
的名称空间
查看某个pod
名称、名称空间和运行节点
kubectl get pod -A -o yaml |grep '^ n'|grep -v nodeSelector
通过Pod
对应的Deployment
查看名称空间
kubectl get deployment -A
以上方式二选其一。
3.2 查看一个名称空间下的Deployment
kubectl --kubeconfig $HOME/.kube/config get deployment -n default
3.3 将这个Deployment
的yaml
文件保存下来
kubectl --kubeconfig $HOME/.kube/config get deployment mysql-5-7-34-binlog -n default -o yaml >> mysql.yaml
3.4 修改yaml
文件,更新服务,比如我们更换服务使用的镜像版本
修改图中所示的内容:
下图所示内容需要删除:
3.5 执行下面的命令更新服务
kubectl apply -f mysql.yaml
结果:
问题:
出现这种问题是配置文件是带有时间戳的,需要使用最新的yaml
文件重新执行命令。
4、部署服务
4.1 准备部署服务所需的yaml
文件
4.2 执行命令部署服务
kubectl apply -f base.yaml
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
5.3 通过Pod
对应的Deployment
查看名称空间
kubectl get deployment -A
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 查看Pod
的yaml
文件
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 查看Deployment
的yaml
文件
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