你填了吗?

10人将获赠CNCF商店$100美元礼券!

来参与2020年CNCF中国云原生调查

问卷链接(https://www.wjx.cn/jq/97146486.aspx)


客座文章作者:Nimal Kunnath,Nutanix系统可靠性工程师

大量报告不断表明,今天的企业将混合和多云作为其首选的IT基础设施部署模式。根据IDG的一项调查,超过一半(55%)的组织目前使用多个公有云,21%的组织说他们使用三个或更多的公有云。

随着开发人员逐渐适应构建和发布容器,Kubernetes显然已成为容器编排的首选。组织为什么要跨多个云供应商部署Kubernetes有很多原因:

云爆发

在多云基础设施中,“爆发(bursting)”涉及使用一个云的资源来补充另一个云的资源。当使用私有云的组织达到100%的资源容量时,溢出的流量会被转移到公有云,避免业务中断。

灾难恢复与备份

在实践中,你不希望一个云提供商成为单点故障。通过在云上分散恢复资源,你可以获得比单一云基础设施更大的弹性和可用性。

在所有这些基础设施就绪之后,IT运营团队管理多个集群非常具有挑战性。出现了以下挑战:

  • 要访问集群,需要维护大量的kubectl和kubeconfig文件。对于不同的集群/项目,必须在它们之间进行上下文切换,而且跨云提供商访问方法的不同增加了复杂性,这可能会很麻烦。

  • 虽然开发人员通常专注于编写代码,但现在他们学习应用程序的操作方面也并不罕见。虽然Kubernetes旨在帮助他们更快地发布和更新应用程序,但它本身就很复杂。他们希望能够加快概念的学习速度,加快学习曲线,这样他们就可以专注于最重要的东西:应用程序代码。

  • 在Kubernetes中进行故障排除并不是一项简单的任务。在调试过程中,管理员必须从pod日志和事件、pod状态等中识别错误。新管理员很容易花费大量宝贵的时间来找出正确的命令和日志,以检查对业务的不利影响。

Kubernetes暴露了一个标准的仪表板,它提供了在集群上运行的应用程序的概览,但这是在单个集群级别上完成的。希望有一个统一的管理解决方案来解决上述挑战。今天我们将聚焦于开源解决方案Lens。

Lens是一个独立的应用程序,可以在MacOS、Windows和Linux上使用,这意味着你不需要在Kubernetes节点本身安装任何包。通过导入kubeconfig文件,单个IDE可以用于管理任何平台上的所有集群。让我们一起来看看。

安装Lens

浏览Lens网页,在你喜欢的操作系统下载并安装。打开应用程序后,立即点击“+”按钮添加集群。你可以导入kubeconfig文件或粘贴它,瞧!让魔法开始吧。

我已经部署了两个集群,一个使用Karbon(Nutanix的Kubernetes管理解决方案)在Nutanix私有云上,另一个使用Azure Kubernetes服务。为AKS集群导入kubeconfig文件如下所示。

在集群概览中,你可以通过单个窗格玻璃看到所有可用的集群资源。你可以查看所有工作负载、它们的当前状态、任何相关事件,甚至可以通过命名空间对它们进行过滤。点击任何资源都会拉出它的所有细节-基本上,就像你从以下输出中看到的一样:

kubectl get <daemonset|pod|deployment> -n -o yaml

部署应用程序

在这里,我添加了Karbon集群,以及Lens。让我们继续并将Cassandra StatefulSet部署到这个集群上。

下面是我使用的YAML:

apiVersion: v1
kind: Service
metadata:labels:app: cassandraname: cassandra
spec:clusterIP: Noneports:- port: 9042selector:app: cassandra
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: cassandralabels:app: cassandra
spec:serviceName: cassandrareplicas: 3selector:matchLabels:app: cassandratemplate:metadata:labels:app: cassandraspec:terminationGracePeriodSeconds: 1800containers:- name: cassandraimage: gcr.io/google-samples/cassandra:v13imagePullPolicy: Alwaysports:- containerPort: 7000name: intra-node- containerPort: 7001name: tls-intra-node- containerPort: 7199name: jmx- containerPort: 9042name: cqlresources:limits:cpu: "500m"memory: 1Girequests:cpu: "500m"memory: 1GisecurityContext:capabilities:add:- IPC_LOCKlifecycle:preStop:exec:command:- /bin/sh- -c- nodetool drainenv:- name: MAX_HEAP_SIZEvalue: 512M- name: HEAP_NEWSIZEvalue: 100M- name: CASSANDRA_SEEDSvalue: "cassandra-0.cassandra.default.svc.cluster.local"- name: CASSANDRA_CLUSTER_NAMEvalue: "K8Demo"- name: CASSANDRA_DCvalue: "DC1-K8Demo"- name: CASSANDRA_RACKvalue: "Rack1-K8Demo"- name: POD_IPvalueFrom:fieldRef:fieldPath: status.podIPreadinessProbe:exec:command:- /bin/bash- -c- /ready-probe.shinitialDelaySeconds: 15timeoutSeconds: 5volumeMounts:- name: cassandra-datamountPath: /cassandra_datavolumeClaimTemplates:- metadata:name: cassandra-dataspec:accessModes: [ "ReadWriteOnce" ]storageClassName: default-storageclassresources:requests:storage: 1Gi

在应用之后,你可以看到通过Lens创建的StatefulSet、服务、pod和其他资源。

你可以查看正在为Pod更新的实时日志,这对于故障排除非常宝贵。所有的事件也记录在同一页上,这是你看到以下的输出:

kubectl describe pod cassandra-0

这些绝对是很好的工具,可以在部署期间为你节省很多麻烦和时间。

此外,你还可以在同一个页面上从pod进入shell。我们验证Cassandra集群的所有三个节点都在运行,如下面的截图所示。

如果你还是不满意,Lens还提供了创建、更新和删除资源的选项,可以直接从GUI和内置终端中创建、更新和删除资源,内置终端会自动切换到正确的上下文。

让我们继续部署一个ReplicaSet来启动三个nginx pod。这将部署在“nginx”命名空间,它也是从Lens创建的。

RBAC授权

支持Kubernetes RBAC,这意味着通过Lens连接到Kubernetes集群的个人用户只能与他们被允许的资源进行交互。

在下面的图片中,你可以看到域用户nimal@emea.nutanix.com已经导入了他的kubeconfig文件,但是他没有权限列出任何pod。

集群管理员部署以下YAML文件,为该用户nimal@emea.nutanix.com创建角色sre-role和RoleBinding sre-role-binding。

apiVersion: v1
kind: Namespace
metadata:name: sre
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: srename: sre-role
rules:
- apiGroups: ["", "apps", "batch", "extensions"]resources: ["services", "endpoints", "pods", "deployments"]verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:namespace: srename: sre-role-binding
subjects:
- kind: Username: nimal@emea.nutanix.comapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: sre-role apiGroup: rbac.authorization.k8s.io

接下来,我们看到用户被授权执行如下所示的相同操作。

总结

Kubernetes是一个具有快速扩展功能集的复杂平台。能够在整个生命周期中简化Kubernetes管理的工具和技术能够最好地服务于用户。Lens具有丰富的功能和仪表板,为Kubernetes管理提供了简化多云管理的有效方法。它只需要很少的学习,在多个Kubernetes集群之间提供简单的上下文切换、实时集群状态可视化,甚至使用标准Kubernetes API强制执行RBAC安全性。Lens可以显著提高生产率,并且是在多云配置中管理Kubernetes集群的最佳选择!

关于作者

Nimal Kunnath是Nutanix的系统可靠性工程师。他拥有超过6年的数据中心产品经验,目前从事企业云服务,包括虚拟化、数据存储、网络、容器化和分布式系统。

点击阅读网站原文。


CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。扫描二维码关注CNCF微信公众号。

使用Lens管理多云Kubernetes相关推荐

  1. Google发布Anthos:Google背书,宣告多集群多云Kubernetes时代已来

    2019独角兽企业重金招聘Python工程师标准>>> 今天, Google Cloud NEXT 2019大会召开,在这场规模三万人的盛会上,Google宣布推出Anthos作为多 ...

  2. 有效可靠地管理大规模 Kubernetes 集群

    作者 | 蚂蚁金服高级技术工程师 沧漠 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹.越来越多的公司开始在生产环境部署实践 Kubernetes,在阿里巴巴和 ...

  3. Docker集群管理之Kubernetes

    一.概念简介 Kubernetes是Google开源的容器集群管理系统.它构建Ddocker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的 ...

  4. Docker集群管理工具-Kubernetes部署记录

    Kubernetes介绍 Kubernetes是Google开源的容器集群管理系统,是基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件. Kubernet ...

  5. Kubernets集群管理-升级 kubernetes 集群版本到v1.21.14

    Kubernets集群管理-kubernets集群升级 文章目录 Kubernets集群管理-kubernets集群升级 前言 一.检查kubernets各组件当前版本 二.升级控制节点平面kuber ...

  6. 开源Docker管理工具kubernetes的简易安装和使用

    前提:记得翻墙 一.配置镜像源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes b ...

  7. 【Kubernetes】 多云管理策略解析

    文章目录 Kubernetes 多云的实现 1. 前言 1.1 Kubernetes 多云的现实需求 2. Kubernetes 多云的架构设计 2.1 跨云 Kubernetes 的挑战 2.1.1 ...

  8. 【Kubernetes 企业项目实战】09、Rancher 2.6 管理 k8s-v1.23 及以上版本高可用集群

    目录 一.Rancher 介绍 1.1Rancher简介 1.2 Rancher 和 k8s 的区别 1.3 Rancher 企业使用案例 二.安装 Rancher 2.1 初始化环境 2.2 安装 ...

  9. 管理数百个Kubernetes集群需要什么?

    运行和管理数百个Kubernetes集群需要什么?这就是本文分享的内容.下面,我们一起来看. 要点: 部署一个具备生产就绪所需所有依赖关系的Kubernetes集群需要数天时间. 如果不自动化这个过程 ...

  10. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

最新文章

  1. 这个一夜暴富的秘诀你还不知道?
  2. teledb兼容mysql5.7_maridb安装
  3. 力扣——整数反转(Java)
  4. 使用jstree创建无限分级的树(ajax动态创建子节点)
  5. 3到6年的.NETer应该掌握哪些知识
  6. 扫地机器人测评云鲸_云鲸科技,J1测评
  7. vc++6.0常用插件和界面库
  8. 科比退役原因-数据分析
  9. TM1620中显存地址是偶数
  10. excel教程自学网_收藏!这37个自学网站,一年让你省下十几万
  11. 平方数之和【leetcode 633】
  12. 百度自动驾驶平台生态部负责人张亮:Apollo开放平台,连接技术场景 赋能人才生态
  13. 开发时几种常见的建模工具
  14. 实验吧--天网管理系统
  15. 深入理解JAVA中的跨包继承
  16. Arcgis连接sql server发布地图服务详解
  17. MySQL分组查询最新的一条记录
  18. 2009年IT行业竞争力指数排名公布,中国位居全球第39位
  19. PyQt5 QLabel标签
  20. 字节跳动蚂蚁金服百度SRE社招面经

热门文章

  1. 外贸工具WhatsApp
  2. 微信再次成师父 Facebook开始卖电影票
  3. PandoraBox Openwrt 上面设置DNS
  4. Web安全之常见面试题总结
  5. 校招生的中场战事:意向书,offer选择与三方
  6. 想撩产品小姐姐?你必须学会的这篇产品经理必读文章,如何构建电商产品认知体系?
  7. 李开复:李飞飞是人工智能的“良心”
  8. python Flask之JinJa2
  9. vue 富文本编辑器提取纯文字
  10. 大道至简:软件工程实践者的思想(读后感想)