簡體   English   中英

如何從 docker 容器訪問 minikube

[英]how to access the minikube from a docker container

我正在嘗試使用 jenkins 和 minikube 在本地構建 ci/cd。 我使用 docker 驅動程序在我的機器(主機)上運行 minikube,並在容器中運行 jenkins。

兩者都在同一個 docker 網絡上。

要在 jenkins 管道中運行kubectl命令,我需要從運行 jenkins 的容器中訪問 minikube。

我嘗試將容器名稱用作主機,但沒有成功。

我沒有嘗試的想法有人可以幫助我嗎?

從 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. 瞧! kubectl提供了一個豐富的 cli 來管理你的 kubernetes 集群

如果您更喜歡直接與 API 交談,則無需執行任何其他操作。 只需 go 到文檔以了解如何進行調用,並檢查使用 Kubernetes API 訪問集群

遇到了同樣的問題:無法從外部 docker 容器訪問$(minikube ip)而從主機訪問很好。
使用--network host選項運行 docker 容器解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM