DevOps研习社:PaaS平台集成解决方案——F5实现K8S管理平面的高可用和安全-程序员宅基地

技术标签: 网络  运维  devops  

  关于PaaS平台集成解决方案,作者侧重F5与PaaS(K8S为例)集成的方案,将从管理平面的高可用安全、应用自动发布、蓝绿发布、可视化4点论述。本文详细阐述了观点之一,即管理平面的高可用安全。

 

  晏顺
  F5解决方案顾问

  拥有十多年运营商和金融行业从业经验,2012年加入F5。 熟悉运营商核心网和金融信息系统架构,专注于客户整体架构设计和应用的快速灵捷的交付。主要研究方向为云计算,容器及DevOps。涵盖多云环境下资源的弹性扩展,应用交付的自动化部署,运维自动化;以及云环境中安全高可用架构的实现。具有丰富的数据中心架构设计以及自动化平台对接经验,完成了多家互联网金融企业自动化运维平台的对接上线。

  K8S多个主节点部署旨在以一种没有单一故障点的方式设置Kubernetes及其支持组件。单个master节点的群集很容易产生故障,而多master节点群集使用多个主节点,每个主节点都可以访问相同的工作节点。在单个主集群中,API服务器,控制器管理器等重要组件仅位于单个主节点上,如果失败,则无法创建更多服务,pod等。但是,在多master节点环境中,这些重要组件在多个节点上运行,通常生产环境中建议使用三个master节点。如果任何master节点失效,其他master节点仍能保证群集正常运行。
  多主机的优点:
  在单个master设置中,主节点管理etcd数据库,API服务器,控制器管理器和调度程序以及工作节点。但是,如果该单个master节点发生故障,则所有工作节点也会发生故障,整个群集将失效。
  相比之下,在多主设置中,多主设备可为单个群集提供高可用性并提高网络性能。
  多主机设置可防止各种故障模式,从单个工作节点丢失到主节点的etcd服务故障。通过提供冗余,多主集群为最终用户提供高可用性系统。

  下面讲介绍通过F5的LTM和AWAF模块实现k8s集群master节点的高可用和安全防护。
  

  01、安装并部署k8s。配置和部署过程不再赘述,大家可参考kubernetes官网步骤。配置完成后通过kubectl cluster-info查看集群状态。

  k8s@k8s-node1:~$ kubectl cluster-info
  Kubernetes master is running at https://10.1.1.174:6443
  KubeDNS is running at https://10.1.1.174:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

  To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

  02、配置F5 BIG-IP。该过程包括配置Vlan, self ip以及pool和VS。
  网络部分配置:
  [root@k8s:Active:Standalone] dosl7 # tmsh list net vlan management
  net vlan management {
      fwd-mode l3
      if-index 176
      interfaces {
          1.1 { }
      }
      tag 4094
  }
  [root@k8s:Active:Standalone] dosl7 # tmsh list net self management-ip
  net self management-ip {
      address 10.1.1.176/24
      allow-service {
          default
  }
      traffic-group traffic-group-local-only
      vlan management}

  Pool和VS部分配置:
  在Pool中增加了k8s master节点的地址,并增加了健康检查实时检测master节点的健康状况。下面例子中使用了简单的ping探测,在实际生产环境中可以通过定制化健康检查模拟发送API请求,确保master节点从服务角度的可用性。增加新的master节点只需对应增加pool member。

  [root@k8s:Active:Standalone] dosl7 # tmsh list ltm pool k8s-master
  ltm pool k8s-master {
      members {
          10.1.1.174:sun-sr-https {
              address 10.1.1.174
              session monitor-enabled
              state up
          }

  VS层面除了配置了基本的负载功能外还基于安全特性增加了AWAF针对API的防护策略以及针对master集群的DDos保护。

  [root@k8s:Active:Standalone] dosl7 # tmsh list ltm virtual
  ltm virtual k8s-master-vs {
      destination 10.1.1.100:sun-sr-https
      ip-protocol tcp
      mask 255.255.255.255
      policies {
          asm_auto_l7_policy__k8s-master-vs { }
      }

  测试过程:
  1
  基本负载功能

  通过F5发布的VS实现k8s master节点的访问。使用kubectl命令通过F5 VS查询集群状态,以下命令显示查询成功。
  k8s@k8s-node1:~$ kubectl -s https://10.1.1.100:6443 get node --insecure-skip-tls-verify=true
  NAME        STATUS     ROLES    AGE    VERSION
  k8s-node1   Ready      master   125d   v1.13.1
  k8s-node2   NotReady   <none>   125d   v1.13.1
  2
  kube-hunter安全扫描
  kube-hunber是aqua发布的开源工具,可以发现Kubernetes集群中的安全问题。
  通过kube-hunber对集群进行扫描:
  Choose one of the options below:
  1. Remote scanning      (scans one or more specific IPs or DNS names)
  2. Subnet scanning      (scans subnets on all local network interfaces)
  3. IP range scanning    (scans a given IP range)
  Your choice: 1
  Remotes (separated by a ','): 10.1.1.174
  ~ Started
  ~ Discovering Open Kubernetes Services...

  Report will be available at:
  +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | https://kube-hunter.aquasec.com/report.html?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0aW1lIjoxNTU2NTAzMjg3Ljc0MjM5OCwiZW1haWwiOiJqLnlhbkBmNS5jb20iLCJyIjoiZTJkYzUyNTkifQ.ezrzL-G57mOr1IqMO1YII0o7Duvzx-H9aGnEq9uwc6Y |
  +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

  |
  | Etcd:
  |   type: open service
  |   service: Etcd
  |_  host: 10.1.1.174:2379
  |
  | Kubelet API:
  |   type: open service
  |   service: Kubelet API
  |_  host: 10.1.1.174:10250
  |
  | API Server:
  |   type: open service
  |   service: API Server
  |_  host: 10.1.1.174:6443

  ----------

  Nodes
  +-------------+------------+
  | TYPE        | LOCATION   |
  +-------------+------------+
  | Node/Master | 10.1.1.174 |
  +-------------+------------+

  Detected Services
  +-------------+------------------+----------------------+
  | SERVICE     | LOCATION         | DESCRIPTION          |
  +-------------+------------------+----------------------+
  | Kubelet API | 10.1.1.174:10250 | The Kubelet is the   |
  |             |                  | main component in    |
  |             |                  | every Node, all pod  |
  |             |                  | operations goes      |
  |             |                  | through the kubelet  |
  +-------------+------------------+----------------------+
  | Etcd        | 10.1.1.174:2379  | Etcd is a DB that    |
  |             |                  | stores cluster's     |
  |             |                  | data, it contains    |
  |             |                  | configuration and    |
  |             |                  | current state        |
  |             |                  | information, and     |
  |             |                  | might contain        |
  |             |                  | secrets              |
  +-------------+------------------+----------------------+
  | API Server  | 10.1.1.174:6443  | The API server is in |
  |             |                  | charge of all        |
  |             |                  | operations on the    |
  |             |                  | cluster.             |
  +-------------+------------------+----------------------+

  No vulnerabilities were found

  1.13.1版本的master没有发现安全漏洞。对1.10.2版本进行扫描可发现安全漏洞。
  

  经过F5 VS访问则可以屏蔽高风险CVE,告警仅针对与自签发证书。
 

  3
  针对master节点发起SQL注入测试,经过F5 AWAF防护后,请求被拦截
  k8s@k8s-node1:~$ curl -k https://10.1.1.100:6443/api/v1/namespaces/default/services?limit=500' or 1=1 --'
  <html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 2542351585300712947<br><br><a href='javascript:history.back();'>[Go Back]</a></body></html>

 BIG-IP图形界面中可以看到相应的拦截日志:
 
  4
  通过ab客户端模拟向api server发起DDoS攻击,通过F5 VS上开启的应用层DDoS防护,可以对攻击进行拦截。
  ab -n 1000 -c 10 https://10.1.1.100:6443/api/v1/namespaces/default/services?limit=500

  Concurrency Level:      10
  Time taken for tests:   30.531 seconds
  Complete requests:      1000
  Failed requests:        806

  总之,通过BIG-IP可以实现k8s集群高可用,同时可以从安全防护角度确保k8s的稳定持续交付。

转载于:https://my.oschina.net/u/4027671/blog/3068466

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chuzhanwa5229/article/details/100907608

智能推荐

couple Maillot Cyclisme 2013 de couleurs-程序员宅基地

文章浏览阅读97次。Le 1er style. est généralement un fourre-tout, qui est créé par le vrai cuir de haute qualité avec meublée notamme...

计算机网络参考模型-程序员宅基地

文章浏览阅读1.7k次。在计算机的网络中,有两个十分重要的参考模型,所有网络通信设备都是以参考模型为标准来研发的。因此熟知参考模型在学习网络知识的过程中是十分重要的。下面就简单的介绍一下两个参考模型。一、OSI参考模型 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在198...

分布式搜索引擎ElasticSearch之IK分词器(三)_搜索姓名使用ik_smart-程序员宅基地

文章浏览阅读265次。继上篇文章https://blog.csdn.net/qq_39772439/article/details/1213707733.IK分词器 4.1什么是IK分词器 我们在浏览器地址栏输入http://127.0.0.1:9200/_analyze?analyzer=chinese&pretty=true&text=我是程序员,浏览器显示效果如下 默认的中文分词是将每个字看成一个词,这显然是不符合要求的,所以我们需要安装中 文分词器来解决这个问题。 IK分词是一款._搜索姓名使用ik_smart

GNS3的安装过程_gns3下载教程-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏11次。GNS3的安装过程一:为什么要安装GNS3GNS3是一款可以运行在多平台的网络虚拟软件,可以通过它来完成相关的实验模拟操作或者检验真实的路由器上实施的相关操作。二:安装环境1、系统版本:windows 10(其他系统也行)2、客户端版本:GNS3-1.3.10-all-one三:安装步骤这里我把安装包的链接放在这,大家可自行下载链接: https://pan.baidu.com/s..._gns3下载教程

Unity 与 NDK开发_unity ndk-程序员宅基地

文章浏览阅读2k次。文章目录Unity 与 C++NDK开发动态链接库NDKUnity 与 C++C#是Unity的官方推荐的开发语言。如果某些逻辑需要C++支持以提供高性能特性,或者需要C++去跟底层硬件或者操作系统级别的接口交互,那么就需要用C#去调用C++的接口。这往往依赖动态链接。即用C++开发动态链接库,然后C#调用动态链接库里暴露的接口。而在Android上开发动态链接库(.so文件)的方法,就是NDK开发。NDK开发动态链接库NDKNDK 全称原生开发工具包(Native Development K_unity ndk

从图灵奖看计算机科学技术发展史的缩影 _图灵奖获得者精神品质-程序员宅基地

文章浏览阅读1.9k次。从1966年颁发图灵奖至今,已有近40个年头,共计有40多名科学家获此殊荣,其中美国学者最多,此外还有英国、瑞士、荷兰、以色列、挪威等国少数学者,也包含一名美籍华人。图灵奖颁发的历史,实际上是计算机科学技术发展史的缩影,而且从图灵奖获得者身上,我们会受到很多有益的启迪。 一。.图灵和图灵奖:1. 图灵是计算机科学技术的奠基人 阿伦 ·图灵(Alan Mathison Turi_图灵奖获得者精神品质

随便推点

深入Redis持久化_命令追加的格式是redis命令请求的协议格式-程序员宅基地

文章浏览阅读256次。一、Redis高可用概述在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999% 等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失..._命令追加的格式是redis命令请求的协议格式

文字小游戏-程序员宅基地

文章浏览阅读331次。练习一1、定义主函数main()  实现输入名字,通过format格式化字符串2、运行main()# -*- coding: UTF-8 -*-def main(): name = input('请输入名字:') other_name = input('请再输入名字:') print('{}去买车,需要10万元,可{}只带了现金99998元,就差..._微信小游戏文字类

java多层map初始化_多重map初始化-程序员宅基地

文章浏览阅读1.8k次。因为聚合需求,一开始构造了一个四层map,由于放入实例前需要先判断前面的map存不存在,如果不存在则要new新的map,并把数据放进去,一开始直接if else写写了两百多行。cr之后觉得很丑陋,就寻找简单的方法去重写。首先将map结构重新规划,将一些固定的值从map中去除,将中间两层的键用连接符合并,在输出时再做拆分,这样四层的map就简化成了两层。针对实例化的问题,使用如下代码:Map&..._多重map初始化

80x86 汇编语言编程:排序与显示_8086编程完成将10个数(自设定)按从大到小顺序排序。-程序员宅基地

文章浏览阅读1.1k次。编写完整的汇编语言源程序。对任意给定的十个无符号数按由大到小排序,并把排序结果在显示器上显示。要求用简化的段定义结构,采用子程序设计方法。谢谢 急求 !!!题目链接:http://zhidao.baidu.com/question/583620100做而论道编程如下:   2013-08-22 10:53 .MODEL SMALL.STACK 200H.DATA NUM1 DW _8086编程完成将10个数(自设定)按从大到小顺序排序。

Python微调文本顺序对抗朴素贝叶斯算法垃圾邮件分类机制-程序员宅基地

文章浏览阅读293次。封面图片:《Python可以这样学》,ISBN:9787302456469,董付国,清华大学出版社图书详情(京东):=================关于朴素贝叶斯算法中文垃圾邮件分类,可..._python任调整文本顺序,对抗垃圾邮件检测

PCI MSI parse in ACPI_irq_find_matching_fwnode-程序员宅基地

文章浏览阅读712次。This document analyzes how to parse ITS configuration in Linux kernel, focus on ACPI code_irq_find_matching_fwnode

推荐文章

热门文章

相关标签