[英]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:
kubectl
kubectl
復制到您的容器kubectl
提供了一個豐富的 cli 來管理你的 kubernetes 集群如果您更喜歡直接與 API 交談,則無需執行任何其他操作。 只需 go 到文檔以了解如何進行調用,並檢查使用 Kubernetes API 訪問集群。
遇到了同樣的問題:無法從外部 docker 容器訪問$(minikube ip)
而從主機訪問很好。
使用--network host
選項運行 docker 容器解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.