如何从Docker容器访问minikube

时间:2020-05-08 19:27:57

标签: docker jenkins minikube

我正在尝试使用jenkins和minikube在本地构建ci / cd。 我使用docker驱动程序在机器(主机)上运行minikube,并在容器中也运行jenkins。

两者都在同一个docker网络上。

要在詹金斯管道中运行kubectl命令,我需要 从运行jenkins的容器访问minikube。

我尝试使用容器名称作为主机,但是没有用。

我没有尝试的想法,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

从pod(容器)运行kubectl命令是可能的,并且很容易实现。虽然更实用,建议改用Kubernetes API。

对于他们两个人,都需要为其pod授予正确的权限,以便他们可以进行身份​​验证以进行k8s API调用(kubectl只是通过API与您的集群通信的应用程序)。

mster是一个很好的例子:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: k8s-101
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: k8s-101
    spec:
      serviceAccountName: k8s-101-role
      containers:
      - name: k8s-101
        imagePullPolicy: Always
        image: yourrepo/yourcontainer
        ports:
        - name: app
          containerPort: 3000
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: k8s-101-role
subjects:
- kind: ServiceAccount
  name: k8s-101-role
  namespace: default
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: k8s-101-role

在这里,我们为Deployment Pod授予了群集角色的权限,并认为这是一个不好的例子,因为它很危险,会暴露您的群集。

接下来,您必须准备容器以内置kubectl:

  1. 在容器内部下载并构建kubectl
  2. 构建您的应用程序,将kubectl复制到您的容器中
  3. Voila! kubectl为管理您的kubernetes集群提供了丰富的条件。

如果您希望直接与API通讯,则无需执行其他任何操作。只需转到documentation了解如何拨打电话,然后检查Access Clusters Using the Kubernetes API

答案 1 :(得分:0)

遇到了同样的问题:无法从外部 docker 容器访问 $(minikube ip),而从主机访问是可以的。
使用 --network host 选项运行 docker 容器解决了该问题。

相关问题