K8S集群管理工具
只能管理单个K8S集群
- kubectl命令行管理工具
- dashboard(K8S官方的UI界面图形化管理工具)
(管理多集群很麻烦,切换不同集群每次需要更改kube-config文件[kubectl配置文件],如果kubeadm部署每次都需要更改admin.conf[kubectl配置文件])
同时管理多个K8S集群
- rancher
- kubesphere
- k9s
Rancher 简介
Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。
官网:https://docs.rancher.cn/
Rancher 和 k8s 的区别Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。
Rancher 安装及配置
实验环境
控制节点/master01 192.168.80.101
工作节点/node01 192.168.80.102
工作节点/node02 192.168.80.103
Rancher节点/rancher 192.168.80.104 (只要安装docker的主机都能作为Rancher节点)
systemctl stop firewalld
setenforce 0
1、安装 rancher
在 所有 node 节点下载 rancher-agent 镜像
docker pull rancher/rancher-agent:v2.5.7
在 rancher 节点下载 rancher 镜像并docker run启动(注意主机上不要有80 443端口冲突)
yum install -y docker systemctl start docker docker pull rancher/rancher:v2.5.7 docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7 #--restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 docker ps -a|grep rancher 1326da432b17 rancher/rancher:v2.5.7 "entrypoint.sh" 13 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp rancher
2、登录 Rancher 平台
需要先等一会儿,再浏览器访问 http://192.168.80.104 ,由于未使用授信证书,会有报警,忽略即可
登录后如是英文页面,可点击右下角语言选项选择中文
3、Rancher 管理已存在的 k8s 集群
选择【添加集群】,点击【导入】
【集群名称】设置为 k8s-cluster,点击【创建】
选择复制第三条命令绕过证书检查导入 k8s 集群
在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可
curl --insecure -sfL https://192.168.80.104/v3/import/dsrhm4vpzmf5xjkmc5dsvfmv5vw52crlws6cqfwq9nswwlrzt6bzsc_c-jxsdv.yaml | kubectl apply -f -
查看创建了哪些命名空间以及pod
kubectl get ns NAME STATUS AGE cattle-system Active 3m24s #创建了这个命名空间 default Active 27d fleet-system Active 2m14s #创建了这个命名空间 kube-node-lease Active 27d kube-public Active 27d kube-system Active 27d kubectl get pods -n cattle-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES cattle-cluster-agent-78647b4ff8-fbqdp 1/1 Running 0 2m1s 10.244.1.4 node01 <none> <none> kubectl get pods -n fleet-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES fleet-agent-55bfc495bd-m9qjt 1/1 Running 0 6m8s 10.244.1.3 node01 <none> <none>
若迟迟未创建 cattle-system命名空间内pod,或是迟迟未创建fleet-system,重启几遍集群。发现是虚拟机出了一些很奇怪的问题。重启时设置卡在启动界面。多次重启解决问题。
4、Rancher 部署监控系统(Rancher会自动安装Prometheus)
点击【启用监控以查看实时监控】
【监控组件版本】选择 0.2.1,其他的默认即可
点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右
安装完成后,点击集群监控,查看监控信息。
Rancher界面
Grafana界面
5、使用 Rancher 仪表盘管理 k8s 集群
以创建 nginx 服务为例
点击【仪表盘】进入 k8s 集群仪表盘界面
创建名称空间 namespace
点击左侧菜单【Namespaces】,再点击右侧【Create】
【Name】输入 dev,【Description】选填可自定义
点击右下角【Create】
创建 Deployment 资源
点击左侧菜单【Deployments】,再点击右侧【Create】
【Namespace】下拉选择 dev,【Name】输入 nginx-dev,【Replicas】输入 3
点击中间选项【Container】,【Container Image】输入 nginx:1.14,【Pull Policy】选择 IfNotPresent
在【Pod Labels】下点击【Add Lable】,【Key】输入 app,【Value】输入 nginx (设置pod标签)
点击中间选项【Labels and Annotations】,点击【Add Label】,【Key】输入 app,【Value】输入 nginx(设置deployment标签)
点击右下角【Create】
创建 service
点击左侧菜单【Services】,再点击右侧【Create】
点击【Node Port】
【Namespace】下拉选择 dev,【Name】输入 nginx-dev-service
【Port Name】输入 nginx,【Listening Port】输入 80(service端口号),【Target Port】输入 80(容器内端口号),【Node Port】输入 34567(nodeip端口号)
点击中间选项【Selectors】(标签选择器),【Key】输入 app,【Value】输入 nginx
点击右下角【Create】
点击【nginx-dev-service】查看 service 是否已关联上 Pod
点击 service 资源的节点端口 30080/TCP,可以访问内部的 nginx 页面了
创建 ingress
点击左侧菜单【ingress】,再点击右侧【Create】
点击【Node Port】
【Namespace】下拉选择 dev,【Name】输入 nginx-dev-ingress
【Request Host】输入 www.xue666.com,【Path】选择 Prefix(前缀匹配)填入 / ,【Target Service】选择 nginx-dev-service,【Port】选择 80(刚刚创建的service的端口号)
点击右下角Edit as YAML,73行 修改 ingressClassName: nginx(指定ingressClass控制器)
点击右下角【Create】
点击【nginx-dev-ingress】查看 service 是否已关联上 Pod
编辑C:\Windows\System32\drivers\etc\hosts
192.168.80.101 www.xue666.com #ip写安装了nginx-ingress-controller的主机
访问测试:域名+nodeport