`
猫耳呀
  • 浏览: 168576 次
社区版块
存档分类
最新评论

Kubernetes Ingress 高可靠部署最佳实践

阅读更多
摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。
 
简介
 
在Kubernetes集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力,您可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。
 
高可靠部署架构
 
高可靠性首先要解决的就是单点故障问题,一般常用的是采用多副本部署的方式,我们在Kubernetes集群中部署高可靠Ingress接入层同样采用多节点部署架构,同时由于Ingress作为集群流量接入口,建议采用独占Ingress节点的方式,以避免业务应用与Ingress服务发生资源争抢。
 
如上述部署架构图,由多个独占Ingress实例组成统一接入层承载集群入口流量,同时可依据后端业务流量水平扩缩容Ingress节点。当然如果您前期的集群规模并不大,也可以采用将Ingress服务与业务应用混部的方式,但建议进行资源限制和隔离。
 
在阿里云容器服务集群中部署高可靠Ingress接入层
 
部署说明
  • Ingress SLB:Ingress接入层前端SLB实例
  • Ingress Node:部署Ingress Pod的集群节点
  • Ingress Pod:Ingress服务实例
这三者之间依据标签node-role.kubernetes.io/ingress=true进行关联:
1.Ingress SLB后端只会挂载打标了node-role.kubernetes.io/ingress=true的集群Node;
2.Ingress Pod只会被部署到打标了node-role.kubernetes.io/ingress=true的集群Node;
开始部署
 
1、创建 Kubernetes 集群
 
在创建集群之前,我们需要依据自身具体业务场景来适当规划集群的规模以及集群内各节点角色,比如业务节点数、Ingress节点数等,注意集群默认会初始化3台Master节点来部署集群管控服务。
 
我们通过阿里云容器服务控制台创建一个Kubernetes集群,这里以创建3台Worker节点集群为例。
 
2、打标 Ingress Node
 
由于测试集群规模较小,我们暂采用混部的方式:即3台Worker节点既作为业务节点又作为Ingress节点。我们给3台Worker节点同时打标node-role.kubernetes.io/ingress=true,注意不建议将Ingress Pod部署在集群Master节点上,因为Master节点承载着集群的所有管控服务,以避免集群接入流量过高时对管控服务造成影响。
 
~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdb node-role.kubernetes.io/ingress=true node "cn-hangzhou.i-bp1ecwpuisra0y0bizdb" labeled ~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdc node-role.kubernetes.io/ingress=true node "cn-hangzhou.i-bp1ecwpuisra0y0bizdc" labeled ~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdd node-role.kubernetes.io/ingress=true node "cn-hangzhou.i-bp1ecwpuisra0y0bizdd" labeled ~ kubectl get no NAME STATUS ROLES AGE VERSION cn-hangzhou.i-bp11psgsvkxklfvb8vvj Ready master 1h v1.9.3 cn-hangzhou.i-bp183t1a82uun0s12ddr Ready master 1h v1.9.3 cn-hangzhou.i-bp1ecwpuisra0y0bizdb Ready ingress 56m v1.9.3 cn-hangzhou.i-bp1ecwpuisra0y0bizdc Ready ingress 56m v1.9.3 cn-hangzhou.i-bp1ecwpuisra0y0bizdd Ready ingress 57m v1.9.3 cn-hangzhou.i-bp1gb2498ykvy23k0jsy Ready master 1h v1.9.3
 
3、创建 Ingress 服务
 
集群初始化时默认部署了一个Ingress Controller,具体部署说明请参考。这里我们通过DaemonSet方式将其重新部署到目标Ingress Node上,当然您也可以采用Deployment配合亲和性方式来部署。
 
~ kubectl -n kube-system delete deploy nginx-ingress-controller deployment "nginx-ingress-controller" deleted ~ kubectl create -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-controller-ds.yml daemonset "nginx-ingress-controller" created ~ kubectl -n kube-system get ds | grep nginx-ingress-controller nginx-ingress-controller 3 3 3 3 3 node-role.kubernetes.io/ingress=true 42s ~ kubectl -n kube-system get pod -o wide | grep nginx-ingress-controller nginx-ingress-controller-57j4l 1/1 Running 0 1m 172.16.3.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdd nginx-ingress-controller-d7cxb 1/1 Running 0 1m 172.16.5.7 cn-hangzhou.i-bp1ecwpuisra0y0bizdc nginx-ingress-controller-m9w75 1/1 Running 0 1m 172.16.4.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdb
 
4、更新 Ingress SLB 服务
 
集群初始化时默认部署了一个Ingress LoadBalancer Service,具体部署说明请参考,这里需要更新下Ingress LoadBalancer Service,以自动识别挂载打标的Ingress Node。
~ kubectl apply -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-slb-service.yml service "nginx-ingress-lb" configured
 
5、此时具有3个Ingress实例的高可靠接入层部署完成。
 
快速扩容
 
随着您的业务流量不断增长,集群规模不断扩大,您只需要简单地通过打标的方式来快速扩容Ingress接入层。
 
全方位监控
 
集群Ingress接入层的监控是必不可少的,您可以通过阿里云容器服务监控以及阿里云云监控对Ingress Pod和Ingress Node进行全方位监控。
 
阅读更多干货好文,请关注扫描以下二维码: 
 
分享到:
评论

相关推荐

    Kubernetes日志采集与分析的最佳实践

    本文分享了关于Kubernetes日志管理的最佳实践,由阿里云日志服务技术专家元乙分享。在深入介绍之前,我们首先需要了解日志的基本概念以及在Kubernetes环境中的特殊应用。 日志分为多种形式,包括但不限于文本日志、...

    ingress-nginx-4.0.17

    使用Helm部署ingress-nginx可以简化配置过程,确保最佳实践,并方便地升级或回滚控制器。 在实际操作中,部署ingress-nginx-4.0.17通常包括以下步骤: 1. **准备Helm环境**:确保已安装并配置好Helm,添加ingress-...

    Kubernetes 在网易云的实践

    网易云作为中国领先的云服务提供商之一,其在Kubernetes实践方面的经验对于理解和运用这一容器编排技术极具...同时,网易云还结合自身业务需求和环境特点,对Kubernetes进行了深度定制和优化,形成了独特的最佳实践。

    《Kubernetes 微服务实践》课程PPT.zip

    最后,我们将关注Kubernetes的安全性和最佳实践,包括命名空间(Namespace)来隔离资源,Role-Based Access Control (RBAC)进行权限管理,以及Pod安全策略(Pod Security Policy)防止不安全的配置。 总的来说,通过本...

    Linux 脚本部署 Kubernetes

    它遵循标准的最佳实践,并为用户提供了一种安全、可重复的方式来设置集群。kubeadm的工作流程通常包括初始化、加入节点和配置控制平面等步骤。 1. **初始化集群**: 使用kubeadm init命令,你可以启动一个主节点。...

    Kubernetes指南,中文版

    提供了一些最佳实践,用于确保Kubernetes服务的可靠和高效管理。 6.2 滚动升级 讲解如何在Kubernetes中实施滚动升级,以实现服务的无缝更新。 6.3 Helm Helm是Kubernetes的包管理工具,这部分内容讲解如何...

    Kubernetes.in.Action.en.pdf 实战

    本书旨在帮助读者理解和掌握 Kubernetes 的核心概念、工具和最佳实践。 首先,书中会详细介绍 Kubernetes 的基本架构,包括节点、控制器、服务、副本集和部署等核心组件。读者将了解到如何配置和管理这些组件来构建...

    kubernetes中文文档

    - **最佳配置**: 最佳实践,如安全性和性能优化建议。 ### 附加组件 介绍了 Kubernetes 生态系统中的各种附加组件,包括: - **Dashboard**: Kubernetes 的官方 UI。 - **监控**: 使用 Prometheus、Grafana 等工具...

    Kubernetes-Best-Practices

    总结,Kubernetes最佳实践涵盖了从设计、部署、扩展到维护的全过程,旨在提升效率、稳定性和安全性。掌握这些实践,可以让你的Kubernetes环境更加健壮,更适应不断变化的业务需求。通过深入学习和实践,你将成为驾驭...

    kubernetes手册2018最新版_强烈推荐_书签版

    最佳实践部分提供了一些高阶的部署、管理和优化建议。 4.1 在CentOS上部署kubernetes 1.6集群 介绍了从零开始在CentOS上部署集群的具体步骤,如创建TLS证书、安装kubectl命令行工具、部署master节点和node节点等。 ...

    课程《Kubernetes微服务实践》源码-k8s-msa-in-action.zip

    10. **容器最佳实践**:学习如何编写符合Kubernetes标准的Dockerfile,合理设置资源限制,以及利用健康检查和生命周期钩子等提高应用可靠性。 通过"K8s-MSA-in-Action"源码实践,你可以逐步学习和掌握这些知识点,...

    kubernetes配置

    Kubernetes,简称K8s,是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。...在实际工作中,不断实践和学习Kubernetes的新功能和最佳实践,将有助于提升系统的可靠性和效率。

    Kubernetes : Up and Running: Dive into the Future of Infrastructure

    此外,书中还涵盖了Kubernetes的最佳实践、社区生态和持续集成/持续部署(CI/CD)流程的集成。通过对这本书的学习,读者不仅可以掌握Kubernetes的基本操作,还能了解到如何在实际项目中有效地应用Kubernetes,提升基础...

    Kubernetes.docx

    #### Kubernetes 最佳实践 1. **使用 Helm**:Helm 是 Kubernetes 的包管理工具,可以帮助开发者高效地管理和部署复杂的 Kubernetes 应用。 2. **持续集成/持续部署 (CI/CD)**:集成 Jenkins、GitLab CI 等 CI/CD ...

    Kubernetes.Patterns

    通过学习这些模式和最佳实践,Java开发者可以更好地在Kubernetes环境中构建、部署和维护Java应用,实现灵活、可扩展和可靠的云原生架构。书中可能还会涵盖如何使用Java库和工具(如Spring Boot、Quarkus等)与...

    kubeadm 部署高可用

    **标题与描述解析** 标题“kubeadm 部署高可用”指的是使用kubeadm工具来创建一个 Kubernetes 集群,并确保该集群具有高可用性。...通过遵循最佳实践和详细规划,可以构建出一个强大且可靠的Kubernetes环境。

    kubernetes-zh中文手册

    - **最佳配置**:提供关于如何配置Kubernetes的最佳实践。 - **集群部署**:包括使用`kubeadm`、`kops`等工具部署集群的方法。 - **附加组件**:如Addon-manager、DNS、Dashboard等增强功能。 #### 插件扩展 - **...

    DevOps上玩转Kubernetes共21页.pdf.z

    由于Kubernetes具有复杂性,这份文档很可能涵盖了基础概念、核心组件、工作流程以及最佳实践,帮助读者理解如何将Kubernetes融入到DevOps流程中。 【标签】"DevOps上玩转Kubernetes" 明确了文档的主题,即如何在...

    kubernetes-handbook

    - **Docker最佳实践**:提供关于如何高效使用Docker的建议和技巧。 - **问题记录**:记录在使用过程中遇到的问题及其解决方案。 - **使用技巧**:分享一些实用的操作技巧和经验总结。 综上所述,《Kubernetes ...

Global site tag (gtag.js) - Google Analytics