Linux下K8S傻瓜式安装,图形化管理及两者之间比较(KubeSphere和Rancher)

 之前我们一直都是使用命令行来管理K8S的,这种做法虽然对程序员来说看起来很炫酷,但有时候用起来还是挺麻烦的。

今天我们来介绍2个K8S可视化管理工具KubeSphere和Rancher,使用它可以大大减少我们管理K8S的工作量,希望对大家有所帮助!

kubesphere功能说明

kubernetes资源管理

        对底层 Kubernetes 中的多种类型的资源提供可视化的展示与监控数据,以向导式 UI 实现工作负载管理、镜像管理、服务与应用路由管理 (服务发现)、密钥配置管理等,并提供弹性伸缩 (HPA) 和容器健康检查支持,支持数万规模的容器资源调度,保证业务在高峰并发情况下的高可用性。

微服务治理

        灵活的微服务框架:基于 Istio 微服务框架提供可视化的微服务治理功能,将 Kubernetes 的服务进行更细粒度的拆分

        完善的治理功能:支持熔断、灰度发布、流量管控、限流、链路追踪、智能路由等完善的微服务治理功能,同时,支持代码无侵入的微服务治理

多租户管理

多租户:提供基于角色的细粒度多租户统一认证与三层级权限管理

统一认证:支持与企业基于 LDAP / AD 协议的集中认证系统对接,支持单点登录 (SSO),以实现租户身份的统一认证

权限管理:权限等级由高至低分为集群、企业空间与项目三个管理层级,保障多层级不同角色间资源共享且互相隔离,充分保障资源安全性

DevOps

        开箱即用的 DevOps:基于 Jenkins 的可视化 CI / CD 流水线编辑,无需对 Jenkins 进行配置,同时内置丰富的 CI/CD 流水线插件

        CI/CD 图形化流水线提供邮件通知功能,新增多个执行条件为流水线、s2i、b2i 提供代码依赖缓存支持

        端到端的流水线设置:支持从仓库 (Git/ SVN / BitBucket)、代码编译、镜像制作、镜像安全、推送仓库、版本发布、到定时构建的端到端流水线设置

        安全管理:支持代码静态分析扫描以对 DevOps 工程中代码质量进行安全管理

        日志:日志完整记录 CI / CD 流水线运行全过程

快速构建与发布

        提供对代码(Source-to-Image)或者制品(Binary-to-Image)进行快速容器化的工具,无需编写 dockerfile,仅需要通过简单的设置即可将制品和代码构建成服务。

        支持从已有的代码仓库中获取代码,或通过上传制品的方式,自动构建镜像和完成部署,并将镜像推送至目标仓库,每次构建镜像和服务的过程将以任务 (Job) 的方式去完成。

多维度监控

        KubeSphere 全监控运维功能可通过可视化界面操作,同时,开放标准接口,易于对接企业运维系统,以统一运维入口实现集中化运维

        立体化秒级监控:秒级频率、双重维度、十六项指标立体化监控

        在集群资源维度,提供 CPU 利用率、内存利用率、CPU 平均负载、磁盘使用量、inode 使用率、磁盘吞吐量、IOPS、网卡速率、容器组运行状态、ETCD 监控、API Server 监控等多项指标

        在应用资源维度,提供针对应用的 CPU 用量、内存用量、容器组数量、网络流出速率、网络流入速率等五项监控指标。并支持按用量排序和自定义时间范围查询,快速定位异常

        提供按节点、企业空间、项目等资源用量排行

        提供服务组件监控,快速定位组件故障

自研多租户告警系统

        支持基于多租户、多维度的监控指标告警,目前告警策略支持集群管理员对节点级别和租户对工作负载级别等两个层级

         灵活的告警策略:可自定义包含多个告警规则的告警策略,并且可以指定通知规则和重复告警的规则

        丰富的监控告警指标:提供节点级别和工作负载级别的监控告警指标,包括容器组、CPU、内存、磁盘、网络等多个监控告警指标

        灵活的告警规则:可自定义某监控指标的检测周期长度、持续周期次数、告警等级等

        灵活的通知发送规则:可自定义发送通知时间段及通知列表,目前支持邮件通知

        自定义重复告警规则:支持设置重复告警周期、最大重复次数并和告警级别挂钩

日志查询与收集

        提供多租户日志管理,在 KubeSphere 的日志查询系统中,不同的租户只能看到属于自己的日志信息,支持中文日志检索,支持日志导出

        多级别的日志查询 (项目/工作负载/容器组/容器以及关键字)、灵活方便的日志收集配置选项等

        支持多种日志收集平台,如 Elasticsearch、Kafka、Fluentd

        对于将日志以文件形式保存在 Pod 挂盘上的应用,支持开启落盘日志收集功能

应用商店

        基于开源的 OpenPitrix 提供应用商店和应用仓库服务

        支持应用上传、应用审核、应用上架与分类、应用部署,为用户提供应用全生命周期管理功能

        用户基于应用模板可以快速便捷地部署一个完整应用的所有服务

基础设施管理

        提供存储类型管理、主机管理和监控、资源配额管理,并且支持镜像仓库管理、权限管理、镜像安全扫描。内置 Harbor 镜像仓库,支持添加 Docker 或私有的 Harbor 镜像仓库。

多存储类型支持

        支持 GlusterFS、CephRBD、NFS 等开源存储方案,支持有状态存储

        NeonSAN CSI 插件对接 QingStor NeonSAN,以更低时延、更加弹性、更高性能的存储,满足核心业务需求

        QingCloud CSI 插件对接 QingCloud 云平台各种性能的块存储服务

多网络方案支持

        支持 Calico、Flannel 等开源网络方案

        开发了适用于物理机部署 Kubernetes 的 负载均衡器插件 Porter

 

CentOS7下离线安装KubeSphere3.0集群

步骤1:准备条件

准备三台CentOS7.9的Linux主机

主机 IP        主机名称   角色

192.168.78.10 master masteretcd

192.168.78.12 node1   worker

192.168.78.13 node2   worker

要求

  1. 1、硬盘分区要求根分区至少100G
  2. 2、建议关闭firewalld防火墙

KubeKey 使用 /var/lib/docker 作为默认路径来存储所有 Docker 相关文件(包括镜像)

因此建议添加附加存储卷,分别给 /var/lib/docker 和 /mnt/registry 挂载至少 100G

  1. 3、 提前下载KubeSphere v3.0.0 all-in-one的离线包

wget   https://kubesphere-installer.pek3b.qingstor.com/offline/v3.0.0/kubesphere-all-v3.0.0-offline-linux-amd64.tar.gz

SSH 免密

# 无交互初始化key

# ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

# cat ~/.ssh/id_rsa.pub 将所有节点的公共key收集后集中写入authorized_keys文件

# vi ~/.ssh/authorized_keys

# ssh -o stricthostkeychecking=no xxx # 首次登录免输入yes

#云端一般采用key登录,而且不会提供root密码,以下方式需要输入root密码,一般不适用,需要另外通过工具(比如saltstack)做authorized_keys文件的分发

# ssh-copy-id -i ~/.ssh/id_rsa.pub [root@xxx.xxx.xxx.xxx](mailto:root@xxx.xxx.xxx.xxx)

 

在离线环境中,可以使用私有包、RPM 包(适用于 CentOS)来安装这些依赖项

3)、三台主机配置主机名解析(此步骤可以忽略)

cat >> /etc/hosts << EOF

192.168.78.10 master

192.168.78.12 node12

192.168.78.13 node13

EOF

关闭防火墙

systemctl disable firewalld  systemctl stop firewalld sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0

安装了这些依赖项

yum install socat conntrack ebtables ipset -y

步骤3:主节点上传并解压KubeSphere离线安装包

tar -zxvf kubesphere-all-v3.0.0-offline-linux-amd64.tar.gz

cd kubesphere-all-v3.0.0-offline-linux-amd64

步骤4、创建并修改集群配置文件

创建集群配置文件

./kk create config --with-kubernetes v1.18.6 --with-kubesphere v3.0.0

修改集群配置文件

vi config-sample.yaml

privateRegistry: dockerhub.kubekey.local

其他的配置默认false最小化安装  因为后面需要可以自行开启

需要在配置文件中添加节点信息及私有仓库地址privateRegistry 

为了方便起见,我这里使用kubekey创建私有仓库,则该参数privateRegistry设置为:dockerhub.kubekey.local

由于我已经本地编辑好了config-sample.yaml,直接覆盖 

#请根据自己实际的环境修改config-sample.yaml

cp -rf /root/config-sample.yaml  ./

执行如下命令会对配置文件中所有节点安装依赖,并使用kk创建自签名镜像仓库

./kk init os -f config-sample.yaml  -s ./dependencies/ --add-images-repo

这时可以使用docker images命令查看是否创建了私有仓库

docker images

步骤5、镜像导入

push-images.sh将镜像导入之前准备的dockerhub.kubekey.local私有仓库

cd kubesphere-images-v3.0.0/

./push-images.sh dockerhub.kubekey.local

KubeSphere v3.0.0 镜像清单

##k8s-images
kubesphere/kube-apiserver:v1.17.9          
kubesphere/kube-scheduler:v1.17.9          
kubesphere/kube-proxy:v1.17.9              
kubesphere/kube-controller-manager:v1.17.9 
kubesphere/kube-apiserver:v1.18.6          
kubesphere/kube-scheduler:v1.18.6          
kubesphere/kube-proxy:v1.18.6              
kubesphere/kube-controller-manager:v1.18.6 
kubesphere/kube-apiserver:v1.16.13         
kubesphere/kube-scheduler:v1.16.13         
kubesphere/kube-proxy:v1.16.13             
kubesphere/kube-controller-manager:v1.16.13
kubesphere/kube-apiserver:v1.15.12         
kubesphere/kube-scheduler:v1.15.12         
kubesphere/kube-proxy:v1.15.12             
kubesphere/kube-controller-manager:v1.15.12
kubesphere/pause:3.1                       
kubesphere/pause:3.2                       
kubesphere/etcd:v3.3.12                    
calico/kube-controllers:v3.15.1            
calico/node:v3.15.1                        
calico/cni:v3.15.1                         
calico/pod2daemon-flexvol:v3.15.1          
coredns/coredns:1.6.9                      
kubesphere/k8s-dns-node-cache:1.15.12      
kubesphere/node-disk-manager:0.5.0         
kubesphere/node-disk-operator:0.5.0        
kubesphere/provisioner-localpv:1.10.0      
kubesphere/linux-utils:1.10.0
kubesphere/nfs-client-provisioner:v3.1.0-k8s1.11

##ks-core-images
kubesphere/ks-apiserver:v3.0.0                  
kubesphere/ks-console:v3.0.0                    
kubesphere/ks-controller-manager:v3.0.0         
kubesphere/ks-installer:v3.0.0                  
kubesphere/etcd:v3.2.18                         
kubesphere/kubectl:v1.0.0
kubesphere/ks-upgrade:v3.0.0
kubesphere/ks-devops:flyway-v3.0.0                       
redis:5.0.5-alpine                              
alpine:3.10.4                                   
haproxy:2.0.4                                   
mysql:8.0.11                                    
nginx:1.14-alpine                               
minio/minio:RELEASE.2019-08-07T01-59-21Z        
minio/mc:RELEASE.2019-08-07T23-14-43Z           
mirrorgooglecontainers/defaultbackend-amd64:1.4 
kubesphere/nginx-ingress-controller:0.24.1      
osixia/openldap:1.3.0                           
csiplugin/snapshot-controller:v2.0.1            
kubesphere/kubefed:v0.3.0                       
kubesphere/tower:v0.1.0                         
kubesphere/prometheus-config-reloader:v0.38.3   
kubesphere/prometheus-operator:v0.38.3          
prom/alertmanager:v0.21.0                       
prom/prometheus:v2.20.1                         
kubesphere/node-exporter:ks-v0.18.1             
jimmidyson/configmap-reload:v0.3.0              
kubesphere/notification-manager-operator:v0.1.0 
kubesphere/notification-manager:v0.1.0          
kubesphere/metrics-server:v0.3.7                
kubesphere/kube-rbac-proxy:v0.4.1               
kubesphere/kube-state-metrics:v1.9.6

##ks-logging-images                 
kubesphere/elasticsearch-oss:6.7.0-1      
kubesphere/elasticsearch-curator:v5.7.6 
kubesphere/fluentbit-operator:v0.2.0       
kubesphere/fluentbit-operator:migrator     
kubesphere/fluent-bit:v1.4.6             
elastic/filebeat:6.7.0  
kubesphere/kube-auditing-operator:v0.1.0   
kubesphere/kube-auditing-webhook:v0.1.0    
kubesphere/kube-events-exporter:v0.1.0     
kubesphere/kube-events-operator:v0.1.0     
kubesphere/kube-events-ruler:v0.1.0        
kubesphere/log-sidecar-injector:1.1
docker:19.03

##istio-images
istio/citadel:1.4.8                         
istio/galley:1.4.8                          
istio/kubectl:1.4.8                         
istio/mixer:1.4.8                           
istio/pilot:1.4.8                           
istio/proxyv2:1.4.8                         
istio/sidecar_injector:1.4.8                
jaegertracing/jaeger-agent:1.17             
jaegertracing/jaeger-collector:1.17         
jaegertracing/jaeger-operator:1.17.1        
jaegertracing/jaeger-query:1.17
jaegertracing/jaeger-es-index-cleaner:1.17.1

##ks-devops-images
jenkins/jenkins:2.176.2                     
jenkins/jnlp-slave:3.27-1                   
kubesphere/jenkins-uc:v3.0.0                
kubesphere/s2ioperator:v2.1.1               
kubesphere/s2irun:v2.1.1                    
kubesphere/builder-base:v2.1.0              
kubesphere/builder-nodejs:v2.1.0            
kubesphere/builder-maven:v2.1.0             
kubesphere/builder-go:v2.1.0                
kubesphere/s2i-binary:v2.1.0                
kubesphere/tomcat85-java11-centos7:v2.1.0   
kubesphere/tomcat85-java11-runtime:v2.1.0   
kubesphere/tomcat85-java8-centos7:v2.1.0    
kubesphere/tomcat85-java8-runtime:v2.1.0    
kubesphere/java-11-centos7:v2.1.0           
kubesphere/java-8-centos7:v2.1.0            
kubesphere/java-8-runtime:v2.1.0            
kubesphere/java-11-runtime:v2.1.0           
kubesphere/nodejs-8-centos7:v2.1.0          
kubesphere/nodejs-6-centos7:v2.1.0          
kubesphere/nodejs-4-centos7:v2.1.0          
kubesphere/python-36-centos7:v2.1.0         
kubesphere/python-35-centos7:v2.1.0         
kubesphere/python-34-centos7:v2.1.0         
kubesphere/python-27-centos7:v2.1.0
kubesphere/notification:flyway_v2.1.2       
kubesphere/notification:v2.1.2              
kubesphere/alert-adapter:v3.0.0             
kubesphere/alerting-dbinit:v3.0.0           
kubesphere/alerting:v2.1.2

##openpitrix-images
openpitrix/generate-kubeconfig:v0.5.0       
openpitrix/openpitrix:flyway-v0.5.0         
openpitrix/openpitrix:v0.5.0                
openpitrix/release-app:v0.5.0

##example-images
kubesphere/examples-bookinfo-productpage-v1:1.13.0
kubesphere/examples-bookinfo-reviews-v1:1.13.0
kubesphere/examples-bookinfo-reviews-v2:1.13.0
kubesphere/examples-bookinfo-reviews-v3:1.13.0
kubesphere/examples-bookinfo-details-v1:1.13.0
kubesphere/examples-bookinfo-ratings-v1:1.13.0
busybox:1.31.1
joosthofman/wget:1.0
kubesphere/netshoot:v1.0
nginxdemos/hello:plain-text
wordpress:4.8-apache
mirrorgooglecontainers/hpa-example:latest
java:openjdk-8-jre-alpine
fluent/fluentd:v1.4.2-2.0
perl:latest

##csi-images
csiplugin/csi-neonsan:v1.2.0 
csiplugin/csi-neonsan-ubuntu:v1.2.0
csiplugin/csi-neonsan-centos:v1.2.0
csiplugin/csi-provisioner:v1.5.0
csiplugin/csi-attacher:v2.1.1
csiplugin/csi-resizer:v0.4.0
csiplugin/csi-snapshotter:v2.0.1
csiplugin/csi-node-driver-registrar:v1.2.0
csiplugin/csi-qingcloud:v1.2.0

步骤6、创建并安装集群

cd /root/kubesphere-all-v3.0.0-offline-linux-amd64

./kk create cluster -f config-sample.yaml 

可以查看安装日志

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

#查看k8s集群和kubesphere-system状态

查看kube-system POD状态

步骤7、web界面登录及体验kubesphere集群

根据集群安装成功的提示进行登录

Console: http://ip:30880

Account: admin

Password: P@88w0rd

 

步骤8、Rancher简介

Rancher是为使用容器的公司打造的容器管理平台。Rancher简化了使用K8S的流程,开发者可以随处运行K8S,满足IT需求规范,赋能DevOps团队。

步骤9、Docker安装

#安装docker-ce

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum makecache fast

yum install -y docker-ce

#配置docker使用http连接私有仓库,不使用私有仓库时可不配置

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://1nj0zren.mirror.aliyuncs.com",

"https://docker.mirrors.ustc.edu.cn",

"http://f1361db2.m.daocloud.io",

"https://registry.docker-cn.com",

"https://dockerhub.azk8s.cn",

"https://reg-mirror.qiniu.com",

"https://mirror.ccs.tencentyun.com"],

"insecure-registries":["xxxxx:5000"]

}

EOF

tee /etc/containers <<-'EOF'

[registries.search]

registries = ['xxxxx:5000']

[registries.insecure]

registries = ['xxxxx:5000']

EOF

systemctl daemon-reload

systemctl start docker

systemctl enable docker

systemctl stop docker

#数据放到/data数据盘

mkdir -p /data/lib

mv /var/lib/docker /data/lib/docker

#建立软链接:

ln -s /data/lib/docker /var/lib/docker

systemctl start docker

步骤10、Rancher安装

安装完Docker之后,我们就可以开始安装Rancher了。Rancher已经内置K8S,无需再额外安装。就像我们安装好Minikube一样,K8S直接就内置了。

  1. 首先下载Rancher镜像;

docker pull rancher/rancher:v2.5-head

  1. 下载完成后运行Rancher容器,Rancher运行起来有点慢需要等待几分钟:

docker run -p 80:80 -p 443:443 --name rancher \

--privileged \

--restart=unless-stopped \

-v /data/docker/rancher:/var/lib/rancher/ \

-v /root/var/log/auditlog:/var/log/auditlog \

-e AUDIT_LEVEL=3 \

-d rancher/rancher:v2.5-head

  1. 运行完成后就可以访问Rancher的主页了,第一次需要设置管理员账号密码,访问地址:https://192.168.1.46

  1. 设置下Rancher的Server URL,一个其他Node都可以访问到的地址,如果我们要安装其他Node的话需要用到它;

步骤11、Rancher使用

我们首先来简单使用下Rancher。

  1. 在首页我们可以直接查看所有集群,当前我们只有安装了Rancher的集群;

步骤12、总结

使用Rancher可视化管理K8S还真是简单,大大降低了K8S的部署和管理难度。一个Docker命令即可完成部署,可视化界面可以查看应用运行的各种状态。K8S脚本轻松执行,不会写脚本的图形化界面设置下也能搞定。总结一句:真香!

参考资料

Rancher官方文档:https://docs.rancher.cn/rancher2/

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-fabric

 

 

步骤13、k8s集群管理平台:Kubesphere与Rancher对比

个人感觉:

1. Rancher更侧重于底层k8s集群的维护,相关的k8s周边生态没有Kubesphere整合的好。当然,这样的话可选择性也更多了。

2.Rancher(rke)对底层k8s封装限制得比较死,只能通过Rancher的API调用。

3. Kubesphere相对于刚上手的人来说,比较傻瓜化,而且包括一些CI、CD的东西都做了整合。

4. 两种方案都是很不错的,结合用起来可能更好吧。可以根据需要来进行权衡。

参考文档:

https://kubesphere.com.cn/docs/installing-on-linux/introduction/air-gapped-installation/

https://blog.csdn.net/yaodunlin/article/details/107574185

https://my.oschina.net/u/4113630/blog/4967445

https://www.zhihu.com/question/348609092

 

 

 

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值