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

时间:2019-11-12 14:53:31

标签: kubernetes

作为一名开发人员,我希望能够为我们的开发Kubernetes集群创建一个“沙盒”版本,该集群可以在我的机器上运行,这样我就可以进行更改和测试,而不必担心会关闭微型计算机的风险。从其代码调用我的微服务的其他开发人员的服务。缺少在我的机器上安装我们的远程集群的“基本必需品”的方法,有没有更方便的方法?是否有什么可以让我们定义一个“基础集群”,该集群可以轻松地分发给多个开发人员(从概念上来说,就像一个正在运行的集群的Docker映像或VM)?

2 个答案:

答案 0 :(得分:0)

我认为您和您的一些同事可以使用相同的k8s集群。 你们每个人都只会在单个命名空间中使用资源(pods,svc等)。 为此,您可以将RBAC用于RoleRoleBinding 以下是k8如何管理集群资源的示例。

  • 角色:
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/

希望这对您有帮助!

答案 1 :(得分:0)

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

使用kubeadm tool设置 K8s集群有点复杂,但是与从头开始构建它相比(通常称为“艰辛的方式” >)。当它设置多节点群集(您需要设置至少一个主节点和一个工作节点)时,它需要的资源比 Minikube 多。您仍可以使用已在其上设置和配置的K8s群集并在上面部署了一些工作负载的情况制作此类vm的快照。您可以轻松分发此类磁盘映像。它可以是VDI,VMDK或可以在管理程序上使用的任何对象。

这是我想到的准备和分发这种环境的副本的最简单方法,但是还有多种选择,例如编写 ansible剧本,以自动执行群集设置并将其与类似< strong> Vagrant ,但我认为这绝对是比较乏味的任务。

如果您想考虑克隆现有的 Kubernetes集群,则也可以采用许多不同的方式来实现。一切都取决于您的环境和您的特定需求。

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

相关问题