Rancher是一个开源的容器管理平台,它提供了全方位的解决方案来简化在生产环境中部署和管理容器化应用程序的过程。Rancher让使用者能够轻松地在任何基础设施上(包括物理机、虚拟机、公有云或私有云)创建和管理Kubernetes集群。
Rancher的核心特性包括:
-
Kubernetes管理:Rancher可以部署和管理多个Kubernetes集群,无论是本地部署还是云上的集群,都能通过统一的界面进行集中管理和操作。
-
多集群管理:用户可以在单个Rancher界面中同时管理多个Kubernetes集群,实现资源和策略的统一配置与监控。
-
应用商店(App Catalog):Rancher集成了应用商店,用户可以从预置的模板快速部署常用的应用程序和服务,简化了应用部署流程。
-
网络与存储插件:支持多种网络和存储解决方案,如Calico、Flannel、Longhorn等,以满足不同场景下的需求。
-
访问控制与安全:提供了细致的访问控制和安全策略管理功能,支持角色-Based Access Control (RBAC),确保集群和应用的安全性。
-
CI/CD集成:与Jenkins、GitLab CI/CD等工具集成,支持持续集成和持续部署流程,加速软件交付过程。
-
监控与日志:内置对集群和应用程序的监控与日志收集功能,可以帮助运维人员快速定位问题。
总的来说,Rancher降低了采用容器技术和Kubernetes的门槛,使得企业能够更加高效、便捷地运行和维护容器化应用。
rancher在线部署:
1、部署cert-manager.crds
kubectl apply -f github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.crds.yaml
2、在线部署cert-manager
helm repo add jetstack charts.jetstack.io
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.14.5
3、在线部署rancher
helm repo add rancher-stable releases.rancher.com/server-charts/stable
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.example.com --version 2.8.3 --set bootstrapPassword=xxxxxx
rancher注册已有集群:
1、rancher部署后默认会部署ingress资源,通过ingress-nginx转发rancher对外访问。
[root@master ~]# kubectl get ingress -A
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
cattle-system rancher nginx rancher.example.com 10.233.55.178 80, 443 13d
编辑ingress资源添加ingressClassName: nginx
kubectl edit ingress -n cattle-system rancher -o yaml
spec:
ingressClassName: nginx
rules:
- host: rancher.example.com
http:
paths:
- backend:
service:
name: rancher
port:
number: 80
path: /
pathType: ImplementationSpecific
tls:
- hosts:
- rancher.example.com
secretName: tls-rancher-ingress
注意,部署rancher时合理设置host域名rancher.example.com
2、保证域名rancher.example.com+ingress-nginx的nodeport可以正常访问rancher
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.233.55.178 <none> 80:32438/TCP,443:30828/TCP 13d
则访问rancher使用:rancher.example.com:30828/dashboard/home
3、导入已有集群
集群管理->导入已有集群
点击通用
输入集群名称->创建
4、获取rancher import模板,保存到目标集群节点上
rancher.example.com:30828/v3/import/szv5dnsw2ztcd52lf8bslqxjpmlj5pk9bk597mzxss9mh7xk97q84h_c-m-fltmf9mc.yaml
如rancher-import.yaml
修改上述模板中错误字段:beta.kubernetes.io/os -> kubernetes.io/os
5、修改目标集群中coredns 的configmap资源,添加自定义域名
kubectl edit cm -n kube-system coredns -o yaml
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
hosts {
192.168.10.101 rancher.example.com
fallthrough
}
prometheus :9153
forward . /etc/resolv.conf {
max_concurrent 1000
prefer_udp
}
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
6、执行kubectl apply -f rancher-import.yaml部署rancher agent
7、观察rancher中目标集群状态变为Active则接入成功(正常3分钟左右)