如何制作 Kubernetes 集群的本地(开发人员)副本



作为一名开发人员,我希望能够创建一个"沙盒"版本的开发Kubernetes集群,我可以在我的机器上运行它,这样我就可以进行更改和测试,而不会冒着关闭其他开发人员的微服务的风险,这些开发人员从他们的代码中调用我的微服务。在我的机器上手动安装远程集群的"基本必需品",有更方便的方法吗?有没有什么东西可以让我们定义一个可以轻松分发给多个开发人员的"基本集群"(在概念上有点像正在运行的集群的Docker映像或VM(?

这取决于"基本集群">的实际含义。我想你希望它是预先配置的,可能已经包含了一些运行在上面的工作负载。有不同的解决方案,最简单的是Minikube。它非常简单,可以让您在本地计算机上设置简单的一个节点,但功能齐全Kubernetes Cluster。它不需要太多的资源,所以每个开发人员都可以在他的笔记本电脑上设置这样的测试环境。默认情况下,它会在虚拟机上设置一个Kubernetes集群(但也可以在您的主机系统上设置它(,是的,您可以制作这样的虚拟机的快照,并很容易地在您的团队中分发它。

使用kubeadm工具设置K8s集群有点复杂,但与从头开始构建相比仍然相当容易(通常称为"艰难的方式">(。当它设置多节点集群时(您需要至少设置一个主节点和一个工作节点(,它需要比Minikube更多的资源。您仍然可以在K8s集群已经建立和配置的情况下,在部署了一些工作负载的情况下为这些vm制作快照。您可以轻松地分发这样的磁盘映像。它可以是VDI、VMDK或您可以在系统管理程序上使用的任何东西。

这是我想到的准备和分发此类环境副本的最简单方法,但也有各种选择,如编写易理解的剧本自动化集群设置,并将其与Vagrant等工具一起使用,但我认为这肯定是一项更乏味的任务。

如果您想克隆现有的Kubernetes集群,您也可以用许多不同的方法来实现。这一切都取决于你的环境和你的特殊需求。

如果您主要关心复制生产k8s集群(其工作负载(内容的能力,那么有一个非常简单的解决方案,即etcd快照。你可以在这里阅读更多关于它们的信息。它使您能够快速备份整个k8s集群工作负载,并稍后在不同的k8s实例上还原它。当您使用内部部署k8s安装时,这是理想的解决方案。不幸的是,像GCP GKE或AWS EKS这样的托管云解决方案不会给您带来这样的可能性,因为您无法直接访问主节点文件系统。

我认为您和您的一些同事可以使用相同的k8s集群。你们每个人将只在一个命名空间中使用资源(pod、svc…(。为此,可以对RoleRoleBinding使用RBAC下面是k8s如何管理集群资源的示例。

  • 角色:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
  • 角色绑定:
apiVersion: rbac.authorization.k8s.io/v1
# This role binding allows "jane" to read pods in the "default" namespace.
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane # Name is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role #this must be Role or ClusterRole
name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io

https://kubernetes.io/docs/reference/access-authn-authz/rbac/

我希望这能对你有所帮助!

最新更新