背景
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
更新缓存:
yum clean all
yum -y makecache
mv /etc/yum.repos.d/CentOS6-Base.repo /etc/yum.repos.d/CentOS6-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
遇到更新失败问题解决 “Couldn’t resolve host ‘apt.sw.be’” 错误 ,禁用无法访问的仓库。 可参考:https://blog.csdn.net/feiz3020/article/details/79812798?utm_source=blogxgwz9
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
5.11 查看指定服务下的日志
kubectl --kubeconfig kubeconfig-53-luckyun-ide logs -n shiyq069 deployment/test-python
5.12 kubectl其它操作
##查看指定namespace下的pods:
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide get pods -n shiyq069
NAME READY STATUS RESTARTS AGE
test-python-656fb8f688-dg8j6 1/1 Running 0 6h26m
tomcat-old-7ccdc66876-w4bnk 1/1 Running 0 36d
tomcat-test-c77fd768b-6g46v 1/1 Running 0 36d
web-demo-7849c695b8-vvswp 1/1 Running 0 6d23h
##将指定namespace下的Deployment 服务设置为0
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide scale deployment web-demo --replicas=0 -n shiyq069
deployment.apps/web-demo scaled
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide get pods -n shiyq069
NAME READY STATUS RESTARTS AGE
test-python-656fb8f688-dg8j6 1/1 Running 0 6h29m
tomcat-old-7ccdc66876-w4bnk 1/1 Running 0 36d
tomcat-test-c77fd768b-6g46v 1/1 Running 0 36d
web-demo-7849c695b8-vvswp 1/1 Terminating 0 6d23h
##将指定namespace下的Deployment 服务 启动多个pods
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide scale deployment web-demo --replicas=3 -n shiyq069
deployment.apps/web-demo scaled
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide get pods -n shiyq069
NAME READY STATUS RESTARTS AGE
test-python-656fb8f688-dg8j6 1/1 Running 0 6h34m
tomcat-old-7ccdc66876-w4bnk 1/1 Running 0 36d
tomcat-test-c77fd768b-6g46v 1/1 Running 0 36d
web-demo-7849c695b8-7zxx6 0/1 ErrImagePull 0 38s
web-demo-7849c695b8-8g5sl 0/1 ContainerCreating 0 33s
web-demo-7849c695b8-prdgb 0/1 ContainerCreating 0 33s
更新服务镜像版本:
[root@localhost shiyq069]# kubectl --kubeconfig kubeconfig-53-luckyun-ide set image deployment/test-python test-python=10.10.10.52:4000/shiyq069-python-nginx:1.0.0 -n shiyq069
deployment.apps/test-python image updated