容器云平台落地过程中高可用性、备份恢复、监控告警、应用对外暴露如何实现?

容器云对大多数工程师还是一个比较新的技术,如何实现容器云的高可用、备份恢复、监控告警、应用对外暴露是运维工程师日常运营过程中经常遇到的问题。

2回答

wanshaoyuanwanshaoyuan  it技术咨询顾问 , 招商银行
zhuhaiqiang赞同了此回答
你好,关于您的问题回复如下:首先高可用: 回复:对于Kubernetes来说主要关注master节点上几个核心组件的高可用如api-server、Controller-manager、etcd、kube-scheduler 1、Etcd通过本身的集群机制,组成etcd集群保证集群高可用; 2、controller-manager、scheduler本身有leader选...显示全部

你好,关于您的问题回复如下:
首先
高可用:

回复:对于Kubernetes来说主要关注master节点上几个核心组件的高可用如api-server、Controller-manager、etcd、kube-scheduler

1、Etcd通过本身的集群机制,组成etcd集群保证集群高可用;

2、controller-manager、scheduler本身有leader选举机制保证高可用;

3、api-server为组件访问etcd和外部访问集群的统一入口,本身为无状态的,所以通常情况下HA的做法是通过外部LB做为统一入口进行HA

ps:通过Rancher建自定义集群只需要选择3个master节点角色会自动进行高可用配置

备份恢复:

因为在Kubernetes集群中集群内定义的所有资源对象都是存储在etcd中,所以针对集群的备份和恢复本质上是对etcd的备份。原生的Kubernetes可以直接通过etcdctl进行备份和恢复,通过rancher管理的集群UI上有手动备份恢复和自动备份功能,帮助用户定期自动备份集群,保证集群可靠性。

监控告警:

容器云平台监控和容器应用监控主要使用Prometheus,告警可以通过Altermanager webhook方式对接自己外部的统一告警系统,rancher已经内置了Prometheus监控包含多个层面监控包括:集群层面资源使用监控和组件性能监控、节点资源监控、容器应用资源监控。对于一些需要针对业务的监控可以使用自定义监控方式实现对业务指标监控。

应用对外暴露:

可以通过NodePort和Ingress若有F5硬件负载均衡器可以直接通过容器云平台与F5集成实现F5直接转发流量请求到POD中,这几种方式的对比优缺点如下:

通过NodePort进行暴露

1、通过Nodeport四层暴露方式,需要在内网开防火墙

2、端口随机且无法进行统一权限管理

3、iptables模式规则过多,容易造成转发性能瓶颈

4、四层转发,配置模式单一
通过Ingress进行暴露

1、L7负载均衡器通过域名或路径区别转发到服务,统一转发到Ingress-controller转发到后端服务中

2、防火墙只需要开通节点80和443端口

3、需要配置DNS服务器进行域名解析

4、可配置非常丰富规则

通过F5与集群对接实现应用对外暴露,通过Kubernetes策略自动生成F5规则

方式一:NodePort模式

转发路径:

Internet --> F5 --> Worker Nodes/Ports --> Pod IP

此种模式有如下缺点:

服务必须使用NodePort方式暴露

某些高级应用交付功能不可用,例如L7的会话保持

额外的网络延迟

BIG-IP控制器对Pod的健康程度等可见有限

通过F5与集群对接实现应用对外暴露

方式一:cluster模式

转发路径:

Internet --> F5 --> Pod IP

这是一种更优雅的方式,优点如下:

可以使用任何类型的Kubernetes service。

完整的应用交付能力,包括L7持久性。

BIG-IP控制器可以完全了解Pod的运行状况。

ps:如果需要进一步了解可以加我们同事微信:x968807

问题3 容器环境的微服务如何进行链路可视化,通过APM工具的话哪些比较适合容器环境使用?

回答:

目前容器环境下的微服务监控方案也比较成熟,可选择性也比较多,像商业的Dynatrace就能够很好的的实现从底层到应用层的全景监控,开源的方案目前比较主流的有Pinpoint、Skywalking、Istio等,其中Pinpoint和Skywalking主要采用Java语言开发,对Java生态有着非常好的支持,启动时通过Java agent的方式就可以快速集成,对于其他语言社区也提供了一些集成方案,Istio这种就是目前主流的服务网格的方案,与语言无关,通过sidecar的方式集成,也可以实现微服务链路可视化。

ps:rancher已经集群istio,可以直接在UI上查看应用关系调用。

收起
 2020-12-04
浏览268
acbogehacbogeh  系统工程师 , 富国基金
容器的高可用大部分可以用k8s本身特性满足监控段promethus可以满足对外暴露的话也是k8s自身的nodeport/service就能满足显示全部

容器的高可用大部分可以用k8s本身特性满足
监控段promethus可以满足
对外暴露的话也是k8s自身的nodeport/service就能满足

收起
 2020-12-02
浏览269

提问者

aoe888系统分析师, 国联证券股份股份有限公司

容器云管理平台选型优先顺序调查

发表您的选型观点,参与即得50金币。

问题状态

  • 发布时间:2020-11-26
  • 关注会员:3 人
  • 问题浏览:670
  • 最近回答:2020-12-04