注:通过RBAC对集群进行加固 CVM CDN https://cloud.tencent.com/act?from=10680 https://cloud.tencent.com/act/seaso
认证与授权对任何安全系统来说都至关重要,Kubernetes 也不例外。即使我们不是安全工作人员,也需要了解我们的 Kubernetes 集群是否具有足够的访问控制权限。Kubernetes 社区也越来越关注容器的安全评估(包括渗透测试,配置审计,模拟攻击),如果你是应用安全工程师,或者是安全感知的 DevOps 工程师,最好了解一下 Kubernetes 的授权模型。
在前面,我们学习到了一些 Kubernetes 知识,现在列出 kubectl 的所有命令以及其缩写形式,供翻阅查询。
https://docs.bitnami.com/tutorials/simplify-kubernetes-resource-access-rbac-impersonation/
如果您的基础架构由相互交互的多个应用程序组成,则您可能会遇到保护服务之间的通信安全以防止未经身份验证的请求的问题。
在上一篇文章中我们讲了RBAC授权,传送门:K8s API访问控制 。并且绝大多数版本的K8s都默认使用RBAC作为其默认的授权方式。那么RBAC授权在我们进行K8s集群横向移动的时候有哪些可利用点呢?本篇文章我们介绍在K8s集群横向移动时如何滥用RBAC权限,并通过滥用的RBAC权限横向获得集群的cluster-admin权限接管整个K8s集群。
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
这是本系列文章的第二篇,在上篇文章中我们介绍了Kubernetes访问控制。在本文中,我们将通过上手实践的方式来进一步理解身份认证的概念。
在Kubernetes中排查故障是一个常见但有时复杂的任务,因为它涉及到多个层次的组件和服务。以下是常用的方式和方法,可以帮排查Kubernetes中的故障:
只有能做到“尽人事而听天命”,一个人才能永远保持心情的平衡。----- 《季羡林谈人生》
RBAC (Role-Based Access Control) 是 Kubernetes 中用于授权的一种机制。其基本思想是将一系列的操作权限与角色(Role)关联,然后再将特定的角色与用户或用户组关联。
在《K8S 实用工具之一 - 如何合并多个 kubeconfig?》一文中,我们介绍了 kubectl 的插件管理工具 krew。接下来就顺势介绍几个实用的 kubectl 插件。
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。kubectl安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件。kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。
如果直接部署单 master 或者多 master k8s 环境,可以参考这篇文章:Kubernetes(k8s)最新版最完整版环境部署+master 高可用实现
背景 本文翻译整理自rhino安全实验室:近些年针对kubernetes的攻击呈现愈演愈烈之势,一旦攻击者在kubernetes集群中站稳脚跟就会尝试渗透集群涉及的所有容器,尤其是针对访问控制和隔离做的不够好的集群受到的损害也会越大。例如由unit 42研究人员检测到的TeamTNT组织的恶意软件Siloscape就是利用了泄露的AWS凭证或错误配置从而获得了kubelet初始访问权限后批量部署挖矿木马或窃取关键信息如用户名和密码,组织机密和内部文件,甚至控制集群中托管的整个数据库从而发起勒索攻击。根据微
-参考:https://github.com/jenkinsci/kubernetes
Flink作为新一代的大数据处理引擎,不仅是业内公认的最好的流处理引擎,而且具备机器学习等多种强大计算功能,用户只需根据业务逻辑开发一套代码,无论是全量数据还是增量数据,亦或者实时处理,一套方案即可全部解决。K8S是业内最流行的容器编排工具,与docker容器技术结合,可以提供比Yarn与Mesos更强大的集群资源管理功能,成为容器云的主要解决方案之一。如果能将两者结合,无疑是双剑合璧,对生产效能有着巨大的提升。本文将介绍目前为止,Flink On K8S的最前沿实现方案。
客座文章最初由DoiT International高级云架构师Mike Sparr在DoiT博客上发布
kube.config 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
当配置一个生产级别的Istio时,需要解决一些问题:如网格是单集群使用,还是跨集群使用?所有的服务会放到一个完全可达的网络中,还是需要网关来连接跨网络的服务?使用一个控制面(可能会跨集群共享一个控制面),还是使用多个控制面来实现高可用(HA)?所有的集群都连接到一个多集群服务网格,还是联合成一个多网格形态。
资源使用指标,例如容器 CPU 和内存使用率,可通过 Metrics API 在 Kubernetes 中获得。这些指标可以直接被用户访问,比如使用 kubectl top 命令行,或者被集群中的控制器 (例如 Horizontal Pod Autoscalers) 使用来做决策。
(https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/bootstrap-tokens/)
到 https://github.com/coreos/etcd/releases 页面下载最新版本的发布包:
Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP和HTTPS。
k8s高可用架构解析,高可用Kubernetes集群规划,设置静态ip,请参考上一篇文章
两台master节点的配置均相同,配置中声明了后端代理的两个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口
Kubernetes Service定义了这样一种抽象:一个Pod的逻辑分组,一种可以访问它们的策略-通常称为微服务。这一组Pod能够被Service访问到,通常是通过Label selector
可以使用kubectl、客户端库方式对REST API的访问,Kubernetes的普通账户和Service帐户都可以实现授权访问API。API的请求会经过多个阶段的访问控制才会被接受处理,其中包含认证、授权以及准入控制(Admission Control)等。如下图所示:
最近准备阅读一下k8s的源码,为了辅助理解代码运行逻辑,顺手搭一个k8s的开发调试环境,后面就可以结合断点调试掌握代码的运行脉络。
可参考:https://kubernetes.io/zh-cn/docs/concepts/overview/kubernetes-api/
声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除
可以在http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/ 找到各版本kernel安装包
使用这些命令时,请记住将<namespace>, <pod-name>, <service-name>, <deployment-name>, <statefulset-name>, <configmap-name>, <secret-name>, <namespace-name>, <pv-name>, <pvc-name>, <node-name>, <network-policy-name>, <resource-quota-name>, <custom-resource-name>, 和替换为你的特定值。
仪表板是基于 Web 的 Kubernetes 用户界面。您可以使用仪表板将容器化应用程序部署到 Kubernetes 集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个 Kubernetes 资源。
现在Kubernetes中的监控系统层出不穷,比如现在非常流行的Prometheus、Grafana、Elastic Stack (ELK)、 Kubernetes Metrics Server等等,它们不仅仅用来监控系统,还用于追踪集群的健康状况、性能和资源利用率。
简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。 二进制
本文是介绍 kubernetes-operator 开发的第三篇,前几篇已经提到过 kubernetes-operator 的主要目标是实现以下三种场景中的集群管理:
Kubernetes的高可用主要指的是控制平面的高可用,即指多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。
背景:默认安装完k8s集群和Dashboard之后都是使用token登录的,这样使用起来不是很方便,每次登录还要找到token才能登录。
我们已经了解了 Ingress 资源对象只是一个路由请求描述配置文件,要让其真正生效还需要对应的 Ingress 控制器才行,Ingress 控制器有很多,这里我们先介绍使用最多的 ingress-nginx,它是基于 Nginx 的 Ingress 控制器。
前面我们学习了在 Kubernetes 集群内部使用 kube-dns 实现服务发现的功能,那么我们部署在 Kubernetes 集群中的应用如何暴露给外部的用户使用呢?我们知道可以使用 NodePort 和 LoadBlancer 类型的 Service 可以把应用暴露给外部用户使用,除此之外,Kubernetes 还为我们提供了一个非常重要的资源对象可以用来暴露服务给外部用户,那就是 Ingress。对于小规模的应用我们使用 NodePort 或许能够满足我们的需求,但是当你的应用越来越多的时候,你就会发现对于 NodePort 的管理就非常麻烦了,这个时候使用 Ingress 就非常方便了,可以避免管理大量的端口。
● 本次搭建的环境需要五台CentOS服务器(三主二从),然后在每台服务器中分别安装Docker、kubeadm和kubectl以及kubelet。
本章讲解通过服务发现的功能进行实现 , 由 Ingress controller 来提供路由信息的刷新, Ingress controller可以理解为一个监视器不断监听 kube-apiserver 实时感知service、Pod的变化
CSR是Certificate Signing Request的英文缩写,即证书签名请求文件
在测试环境使用kubeadm部署的集群,在运行了一年之后今天,出现k8s api无法调取的现象,使用kubectl命令获取资源均返回如下报错:
领取专属 10元无门槛券
手把手带您无忧上云