k8s高可用集群多个主节点_DevOps研习社:PaaS平台集成解决方案——F5实现K8S管理平面的高可用和安全...
互联网时代Development应运而生用户高并发Operations 因势而动用户终体验Dev + Operations = DevOps茫茫IT大江湖创新钻研的人总会相遇接头暗号:敏捷、持续、稳定、交付探讨DevOps趋势了解DevOps技术学习DevOps工具分享DevOps实践……这就是DevOps研习社本期看点关于PaaS平台集成解决方案,作者侧重F5与PaaS(K...
互联网时代
Development应运而生
用户高并发
Operations 因势而动
用户终体验
Dev + Operations = DevOps
茫茫IT大江湖
创新钻研的人总会相遇
接头暗号:敏捷、持续、稳定、交付
探讨DevOps趋势
了解DevOps技术
学习DevOps工具
分享DevOps实践
……
这就是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节点的高可用和安全防护。
环境介绍:(由于测试PC内存不足,无法安装多个master节点,实验以单个master节点来演示,多节点环境下只需增加pool member即可)
K8S集群:
master node:10.1.1.174
worker node: 10.1.1.175
F5 BIG-IP:
VS地址: 10.1.1.100
配置过程介绍:0 1安装并部署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'.
▲可上下(手指贴近右侧黑边边缘处)、左右滑动查看全部内容
0 2 配置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
}
}
monitor gateway_icmp
}
▲可上下(手指贴近右侧黑边边缘处)、左右滑动查看全部内容
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 { }
}
pool k8s-master
profiles {
api_ddos { }
clientssl {
context clientside
}
http { }
k8s_api_protect.app/ASM_k8s_api_protect { }
serverssl {
context serverside
}
tcp { }
websecurity { }
}
security-log-profiles {
local-dos
}
source 0.0.0.0/0
source-address-translation {
type automap
}
translate-address enabled
translate-port enabled
vs-index 11
}
▲可上下(手指贴近右侧黑边边缘处)、左右滑动查看全部内容
测试过程:
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 125d v1.13.1
▲可左右滑动查看全部内容
2kube-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 Rejectedtitle>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的稳定持续交付。
·END·
前期回顾&下期精彩内容 品质决定成败——漫谈非功能性需求 PaaS平台集成解决方案 F5与CI/CD的集成 融合开源:F5加固Haproxy的应用安全 融合开源:F5加固Nginx的应用安全 替换Haproxy操作手册 分布式服务框架与F5 F5与IaC PaaS的深度集成与模板化应用发布 灰度发布 精彩活动预告你还不能错过:
F5收购NginX
F5宣布推出首个SaaS产品
F5银行业案例集锦
F5部署红宝书(3部)
实录: F5多云环境应用的智能编排与运维
7层DDoS攻击实例
应用服务自动化
更多产品和方案:
SSL | SSL Orchestrator
F5 Advanced WAF(API安全-新一代WAF)
BIG-IP VE | BIG-IQ VE
Openshift-F5集成
F5大数据引擎
F5双活数据中心方案
IOT
F5 & SAP | F5 & AWS
F5 & Ansible
F5 & Kubernetes
F5解决k8s,openshift等PaaS平台对外暴露
如果你喜欢本文
戳戳这里吧
更多推荐
所有评论(0)