提交 3b5eab6e 编写于 作者: S Sharif Elgamal

Merge branch 'master' of github.com:kubernetes/minikube into docker-fix

---
# linted with yamllint
os: linux
language: go
go:
- 1.15.2
env:
global:
- GOPROXY=https://proxy.golang.org
matrix:
include:
- language: go
name: Code Lint
go: 1.15.2
env:
- TESTSUITE=lintall
before_install:
- sudo apt-get install -y libvirt-dev
script: make test
- language: go
name: Unit Test
go: 1.15.2
env:
- TESTSUITE=unittest
before_install:
- sudo apt-get install -y libvirt-dev
script: make test
- language: go
name: Build
go: 1.15.2
script: make
after_success:
- bash <(curl -s https://codecov.io/bash)
notifications:
webhooks:
urls:
- https://www.travisbuddy.com?only=failed,errored
on_success: never # don't comment on successful builds.
on_failure: always
on_cancel: always
on_error: always
# minikube
[![BuildStatus Widget]][BuildStatus Result]
[![Actions Status](https://github.com/kubernetes/minikube/workflows/Master/badge.svg)](https://github.com/kubernetes/minikube/actions)
[![GoReport Widget]][GoReport Status]
[![Github All Releases](https://img.shields.io/github/downloads/kubernetes/minikube/total.svg)](https://github.com/kubernetes/minikube/releases/latest)
[![Latest Release](https://img.shields.io/github/v/release/kubernetes/minikube?include_prereleases)](https://github.com/kubernetes/minikube/releases/latest)
[BuildStatus Result]: https://travis-ci.org/kubernetes/minikube
[BuildStatus Widget]: https://travis-ci.org/kubernetes/minikube.svg?branch=master
[GoReport Status]: https://goreportcard.com/report/github.com/kubernetes/minikube
[GoReport Widget]: https://goreportcard.com/badge/github.com/kubernetes/minikube
......
......@@ -44,6 +44,7 @@ import (
"k8s.io/minikube/pkg/minikube/machine"
"k8s.io/minikube/pkg/minikube/mustload"
"k8s.io/minikube/pkg/minikube/node"
"k8s.io/minikube/pkg/minikube/out"
"k8s.io/minikube/pkg/minikube/out/register"
"k8s.io/minikube/pkg/minikube/reason"
"k8s.io/minikube/pkg/version"
......@@ -196,10 +197,13 @@ var statusCmd = &cobra.Command{
Exit status contains the status of minikube's VM, cluster and Kubernetes encoded on it's bits in this order from right to left.
Eg: 7 meaning: 1 (for minikube NOK) + 2 (for cluster NOK) + 4 (for Kubernetes NOK)`,
Run: func(cmd *cobra.Command, args []string) {
output = strings.ToLower(output)
if output != "text" && statusFormat != defaultStatusFormat {
exit.Message(reason.Usage, "Cannot use both --output and --format options")
}
out.SetJSON(output == "json")
cname := ClusterFlagValue()
api, cc := mustload.Partial(cname)
......@@ -233,7 +237,7 @@ var statusCmd = &cobra.Command{
}
}
switch strings.ToLower(output) {
switch output {
case "text":
for _, st := range statuses {
if err := statusText(st, os.Stdout); err != nil {
......@@ -544,7 +548,7 @@ func clusterState(sts []*Status) ClusterState {
}
exitCode, err := strconv.Atoi(data["exitcode"])
if err != nil {
klog.Errorf("unable to convert exit code to int: %v", err)
klog.Errorf("exit code not found: %v", err)
continue
}
if val, ok := exitCodeToHTTPCode[exitCode]; ok {
......
......@@ -17,6 +17,7 @@ limitations under the License.
package cmd
import (
"os"
"time"
"github.com/docker/machine/libmachine"
......@@ -65,9 +66,13 @@ func init() {
// runStop handles the executes the flow of "minikube stop"
func runStop(cmd *cobra.Command, args []string) {
out.SetJSON(outputFormat == "json")
register.SetEventLogPath(localpath.EventLog(ClusterFlagValue()))
register.Reg.SetStep(register.Stopping)
// check if profile path exists, if no PathError log file exists for valid profile
if _, err := os.Stat(localpath.Profile(ClusterFlagValue())); err == nil {
register.SetEventLogPath(localpath.EventLog(ClusterFlagValue()))
}
// new code
var profilesToStop []string
if stopAll {
......
......@@ -36,7 +36,7 @@ spec:
spec:
containers:
- name: dashboard-metrics-scraper
image: kubernetesui/metrics-scraper:v1.0.4
image: {{default "kubernetesui" .ImageRepository}}/metrics-scraper:v1.0.4
ports:
- containerPort: 8000
protocol: TCP
......@@ -91,7 +91,7 @@ spec:
containers:
- name: kubernetes-dashboard
# WARNING: This must match pkg/minikube/bootstrapper/images/images.go
image: kubernetesui/dashboard:v2.0.3
image: {{default "kubernetesui" .ImageRepository}}/dashboard:v2.0.3
ports:
- containerPort: 9090
protocol: TCP
......
......@@ -62,7 +62,7 @@ spec:
- name: ES_JAVA_OPTS
value: "-Xms1024m -Xmx1024m"
initContainers:
- image: registry.hub.docker.com/library/alpine:3.6
- image: {{default "registry.hub.docker.com/library" .ImageRepository}}/alpine:3.6
command: ["/sbin/sysctl", "-w", "vm.max_map_count=262144"]
name: elasticsearch-logging-init
securityContext:
......
......@@ -34,7 +34,7 @@ spec:
spec:
containers:
- name: kibana-logging
image: docker.elastic.co/kibana/kibana:5.6.2
image: {{default "docker.elastic.co/kibana" .ImageRepository}}/kibana:5.6.2
resources:
limits:
cpu: 500m
......
......@@ -54,7 +54,7 @@ spec:
serviceAccountName: minikube-gcp-auth-certs
containers:
- name: create
image: jettech/kube-webhook-certgen:v1.3.0
image: {{default "jettech" .ImageRepository}}/kube-webhook-certgen:v1.3.0
imagePullPolicy: IfNotPresent
args:
- create
......@@ -80,7 +80,7 @@ spec:
spec:
containers:
- name: gcp-auth
image: gcr.io/k8s-minikube/gcp-auth-webhook:v0.0.3
image: {{default "gcr.io/k8s-minikube" .ImageRepository}}/gcp-auth-webhook:v0.0.3
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8443
......@@ -113,7 +113,7 @@ spec:
serviceAccountName: minikube-gcp-auth-certs
containers:
- name: patch
image: jettech/kube-webhook-certgen:v1.3.0
image: {{default "jettech" .ImageRepository}}/kube-webhook-certgen:v1.3.0
imagePullPolicy: IfNotPresent
args:
- patch
......
......@@ -50,7 +50,7 @@ spec:
hostPath:
path: /
initContainers:
- image: {{default "k8s.gcr.io" .ImageRepository}}/minikube-nvidia-driver-installer@sha256:492d46f2bc768d6610ec5940b6c3c33c75e03e201cc8786e04cc488659fd6342
- image: {{default "k8s.gcr.io" .ImageRepository}}/minikube-nvidia-driver-installer
name: nvidia-driver-installer
resources:
requests:
......
......@@ -43,7 +43,7 @@ spec:
hostPath:
path: /var/lib/kubelet/device-plugins
containers:
- image: "nvidia/k8s-device-plugin:1.0.0-beta4"
- image: {{default "nvidia" .ImageRepository}}/k8s-device-plugin:1.0.0-beta4
command: ["/usr/bin/nvidia-device-plugin", "-logtostderr"]
name: nvidia-gpu-device-plugin
resources:
......
......@@ -46,7 +46,7 @@ spec:
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
image: gcr.io/kubernetes-helm/tiller:v2.16.12
image: {{default "gcr.io/kubernetes-helm" .ImageRepository}}/tiller:v2.16.12
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
......
......@@ -80,7 +80,7 @@ spec:
hostNetwork: true
containers:
- name: minikube-ingress-dns
image: "cryptexlabs/minikube-ingress-dns:0.3.0"
image: {{default "cryptexlabs" .ImageRepository}}/minikube-ingress-dns:0.3.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 53
......
......@@ -49,7 +49,7 @@ spec:
serviceAccountName: ingress-nginx
containers:
- name: controller
image: k8s.gcr.io/ingress-nginx/controller:v0.40.2@sha256:46ba23c3fbaafd9e5bd01ea85b2f921d9f2217be082580edc22e6c704a83f02f
image: {{default "us.gcr.io/k8s-artifacts-prod/ingress-nginx" .ImageRepository}}/controller:v0.40.2
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
......@@ -217,7 +217,7 @@ spec:
spec:
containers:
- name: create
image: jettech/kube-webhook-certgen:v1.2.2
image: {{default "jettech" .ImageRepository}}/kube-webhook-certgen:v1.2.2
imagePullPolicy: IfNotPresent
args:
- create
......@@ -252,7 +252,7 @@ spec:
spec:
containers:
- name: patch
image: docker.io/jettech/kube-webhook-certgen:v1.3.0
image: {{default "jettech" .ImageRepository}}/kube-webhook-certgen:v1.3.0
imagePullPolicy:
args:
- patch
......
......@@ -42,7 +42,7 @@ spec:
containers:
- name: logviewer
imagePullPolicy: Always
image: docker.io/ivans3/minikube-log-viewer:latest
image: {{default "docker.io/ivans3" .ImageRepository}}/minikube-log-viewer:latest
volumeMounts:
- name: logs
mountPath: /var/log/containers/
......
......@@ -212,7 +212,7 @@ spec:
valueFrom:
fieldRef:
fieldPath: status.hostIP
image: metallb/speaker:v0.8.2
image: {{default "metallb" .ImageRepository}}/speaker:v0.8.2
imagePullPolicy: IfNotPresent
name: speaker
ports:
......@@ -268,7 +268,7 @@ spec:
- args:
- --port=7472
- --config=config
image: metallb/controller:v0.8.2
image: {{default "metallb" .ImageRepository}}/controller:v0.8.2
imagePullPolicy: IfNotPresent
name: controller
ports:
......
......@@ -17,7 +17,7 @@ spec:
spec:
initContainers:
- name: update
image: alpine:3.11
image: {{default "registry.hub.docker.com/library" .ImageRepository}}/alpine:3.11
volumeMounts:
- name: etchosts
mountPath: /host-etc/hosts
......@@ -43,7 +43,7 @@ spec:
echo "Done."
containers:
- name: pause-for-update
image: gcr.io/google_containers/pause-amd64:3.1
image: {{default "gcr.io/google_containers" .ImageRepository}}/pause-amd64:3.1
terminationGracePeriodSeconds: 30
volumes:
- name: etchosts
......
......@@ -15,7 +15,7 @@ spec:
path: /var/lib/minikube/binaries
containers:
- name: core-dns-patcher
image: quay.io/rhdevelopers/core-dns-patcher
image: {{default "quay.io/rhdevelopers" .ImageRepository}}/core-dns-patcher
imagePullPolicy: IfNotPresent
# using the kubectl from the minikube instance
volumeMounts:
......
......@@ -13,6 +13,7 @@ data:
example.com
test.com
test.org
registry.minikube
# default registry address in minikube when enabled via minikube addons enable registry
registrySvc: registry.kube-system.svc.cluster.local
......@@ -18,7 +18,7 @@ spec:
addonmanager.kubernetes.io/mode: Reconcile
spec:
containers:
- image: upmcenterprises/registry-creds:1.10
- image: {{default "upmcenterprises" .ImageRepository}}/registry-creds:1.10
name: registry-creds
imagePullPolicy: Always
env:
......
......@@ -19,7 +19,7 @@ spec:
addonmanager.kubernetes.io/mode: Reconcile
spec:
containers:
- image: gcr.io/google_containers/kube-registry-proxy:0.4
- image: {{default "gcr.io/google_containers" .ImageRepository}}/kube-registry-proxy:0.4
imagePullPolicy: IfNotPresent
name: registry-proxy
ports:
......
......@@ -18,7 +18,7 @@ spec:
addonmanager.kubernetes.io/mode: Reconcile
spec:
containers:
- image: registry.hub.docker.com/library/registry:2.7.1
- image: {{default "registry.hub.docker.com/library" .ImageRepository}}/registry:2.7.1
imagePullPolicy: IfNotPresent
name: registry
ports:
......
......@@ -31,7 +31,7 @@ spec:
# kubernetes.io/hostname: minikube
hostNetwork: true
containers:
- image: quay.io/nixpanic/glusterfs-server:pr_fake-disk
- image: {{default "quay.io/nixpanic" .ImageRepository}}/glusterfs-server:pr_fake-disk
imagePullPolicy: IfNotPresent
name: glusterfs
env:
......
......@@ -116,7 +116,7 @@ spec:
spec:
serviceAccountName: heketi-service-account
containers:
- image: heketi/heketi:latest
- image: {{default "heketi" .ImageRepository}}/heketi:latest
imagePullPolicy: IfNotPresent
name: heketi
env:
......
......@@ -23,7 +23,7 @@ spec:
containers:
- name: volume-snapshot-controller
# TODO(xyang): Replace with an official image when it is released
image: gcr.io/k8s-staging-csi/snapshot-controller:v2.0.0-rc2
image: {{default "gcr.io/k8s-staging-csi" .ImageRepository}}/snapshot-controller:v2.0.0-rc2
args:
- "--v=5"
imagePullPolicy: Always
......@@ -17,3 +17,4 @@ sha256 865ded95aceb3a33a391b252522682de6b37b39498704c490b3a321dbefaafcb v1.18.0.
sha256 794ddc36c2a20fde91fc6cc2c6f02ebdaea85c69b51b67f3994090dbbdbc2a50 v1.18.1.tar.gz
sha256 25dc558fbabc987bd58c7eab5230121b258a7b0eb34a49dc6595f1c6f3969116 v1.18.2.tar.gz
sha256 d5c6442e3990938badc966cdd1eb9ebe2fc11345452c233aa0d87ca38fbeed81 v1.18.3.tar.gz
sha256 74a4e916acddc6cf47ab5752bdebb6732ce2c028505ef57b7edc21d2da9039b6 v1.18.4.tar.gz
......@@ -4,8 +4,8 @@
#
################################################################################
CRIO_BIN_VERSION = v1.18.3
CRIO_BIN_COMMIT = 61de18161fb4ccda720768c001713592b5a04e46
CRIO_BIN_VERSION = v1.18.4
CRIO_BIN_COMMIT = aba91e59ec78e3299e443a7364e2cf8909af4606
CRIO_BIN_SITE = https://github.com/cri-o/cri-o/archive
CRIO_BIN_SOURCE = $(CRIO_BIN_VERSION).tar.gz
CRIO_BIN_DEPENDENCIES = host-go libgpgme
......
......@@ -55,6 +55,7 @@ import (
"time"
"k8s.io/klog/v2"
"k8s.io/minikube/hack/update"
)
......@@ -75,13 +76,13 @@ var (
},
}
// pull request data
// PR data
prBranchPrefix = "update-kicbase-version_" // will be appended with first 7 characters of the PR commit SHA
prTitle = `update-kicbase-version: {"{{.StableVersion}}"}`
prTitle = `update-kicbase-version: {stable: "{{.StableVersion}}"}`
prIssue = 9420
)
// Data holds current and stable KIC Base image versions
// Data holds current and stable KIC base image versions
type Data struct {
CurrentVersion string `json:"CurrentVersion"`
StableVersion string `json:"StableVersion"`
......@@ -92,33 +93,33 @@ func main() {
ctx, cancel := context.WithTimeout(context.Background(), cxTimeout)
defer cancel()
// determine current and stable kic base image versions
// determine current and stable KIC base image versions
current, stable, err := KICVersions()
if err != nil {
klog.Fatalf("failed getting kic base image versions: %v", err)
klog.Fatalf("Unable to get KIC base image versions: %v", err)
}
if len(current) == 0 || len(stable) == 0 {
klog.Fatalf("cannot determine kic base image versions")
klog.Fatalf("Unable to determine KIC base image versions")
}
data := Data{CurrentVersion: current, StableVersion: stable}
klog.Infof("kic base image versions: 'current' is %s and 'stable' would be %s", data.CurrentVersion, data.StableVersion)
klog.Infof("KIC base image versions: 'current' is %s and 'stable' would be %s", data.CurrentVersion, data.StableVersion)
// prepare local kic base image
// prepare local KIC base image
image, err := prepareImage(ctx, data)
if err != nil {
klog.Fatalf("failed preparing local kic base reference image: %v", err)
klog.Fatalf("Unable to prepare local KIC base reference image: %v", err)
}
klog.Infof("local kic base reference image: %s", image)
klog.Infof("Local KIC base reference image: %s", image)
// update registries
if updated := update.CRUpdateAll(ctx, image, data.StableVersion); !updated {
klog.Fatalf("failed updating all registries")
klog.Fatalf("Unable to update any registry")
}
update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue)
}
// KICVersions returns current and stable kic base image versions and any error
// KICVersions returns current and stable KIC base image versions and any error occurred.
func KICVersions() (current, stable string, err error) {
blob, err := ioutil.ReadFile(filepath.Join(update.FSRoot, kicFile))
if err != nil {
......@@ -134,8 +135,8 @@ func KICVersions() (current, stable string, err error) {
return current, stable, nil
}
// prepareImage checks if current image exists locally, tries to pull it if not,
// tags it with release version, returns reference image url and any error
// prepareImage checks if current image exists locally, tries to pull it if not, tags it with release version.
// Returns reference image url and any error occurred.
func prepareImage(ctx context.Context, data Data) (image string, err error) {
image, err = update.PullImage(ctx, data.CurrentVersion, data.StableVersion)
if err != nil {
......
......@@ -24,9 +24,9 @@ import (
const (
// Version is the current version of kic
Version = "v0.0.14-snapshot"
Version = "v0.0.14-snapshot2"
// SHA of the kic base image
baseImageSHA = "1e303d96e9d72371235cb28ed77f9b3ba67fb4966085202238e635f1d80181f8"
baseImageSHA = "2bd97b482faf5b6a403ac39dd5e7c6fe2006425c6663a12f94f64f5f81a7787e"
)
var (
......
......@@ -110,6 +110,8 @@ func (d *Driver) PreCommandCheck() error {
if err != nil {
return errors.Wrap(err, "error connecting to libvirt socket. Have you added yourself to the libvirtd group?")
}
defer conn.Close()
libVersion, err := conn.GetLibVersion()
if err != nil {
return errors.Wrap(err, "getting libvirt version")
......@@ -240,14 +242,6 @@ func (d *Driver) Restart() error {
// Start a host
func (d *Driver) Start() (err error) {
// if somebody/something deleted the network in the meantime,
// we might need to recreate it. It's (nearly) a noop if the network exists.
log.Info("Creating network...")
err = d.createNetwork()
if err != nil {
return errors.Wrap(err, "creating network")
}
// this call ensures that all networks are active
log.Info("Ensuring networks are active...")
err = d.ensureNetwork()
......@@ -490,3 +484,14 @@ func (d *Driver) undefineDomain(conn *libvirt.Connect, dom *libvirt.Domain) erro
return dom.Undefine()
}
// lvErr will return libvirt Error struct containing specific libvirt error code, domain, message and level
func lvErr(err error) libvirt.Error {
if err != nil {
if lverr, ok := err.(libvirt.Error); ok {
return lverr
}
return libvirt.Error{Code: libvirt.ERR_INTERNAL_ERROR, Message: "internal error"}
}
return libvirt.Error{Code: libvirt.ERR_OK, Message: ""}
}
......@@ -26,10 +26,12 @@ import (
"io/ioutil"
"strings"
"text/template"
"time"
"github.com/docker/machine/libmachine/log"
libvirt "github.com/libvirt/libvirt-go"
"github.com/pkg/errors"
"k8s.io/minikube/pkg/util/retry"
)
// Replace with hardcoded range with CIDR
......@@ -53,6 +55,7 @@ func setupNetwork(conn *libvirt.Connect, name string) error {
if err != nil {
return errors.Wrapf(err, "checking network %s", name)
}
defer func() { _ = n.Free() }()
// always ensure autostart is set on the network
autostart, err := n.GetAutostart()
......@@ -75,7 +78,6 @@ func setupNetwork(conn *libvirt.Connect, name string) error {
return errors.Wrapf(err, "starting network %s", name)
}
}
return nil
}
......@@ -99,8 +101,21 @@ func (d *Driver) ensureNetwork() error {
// Start the private network
log.Infof("Ensuring network %s is active", d.PrivateNetwork)
// retry once to recreate the network, but only if is not used by another minikube instance
if err := setupNetwork(conn, d.PrivateNetwork); err != nil {
return err
log.Debugf("Network %s is inoperable, will try to recreate it: %v", d.PrivateNetwork, err)
if err := d.deleteNetwork(); err != nil {
return errors.Wrapf(err, "deleting inoperable network %s", d.PrivateNetwork)
}
log.Debugf("Successfully deleted %s network", d.PrivateNetwork)
if err := d.createNetwork(); err != nil {
return errors.Wrapf(err, "recreating inoperable network %s", d.PrivateNetwork)
}
log.Debugf("Successfully recreated %s network", d.PrivateNetwork)
if err := setupNetwork(conn, d.PrivateNetwork); err != nil {
return err
}
log.Debugf("Successfully activated %s network", d.PrivateNetwork)
}
return nil
......@@ -120,13 +135,16 @@ func (d *Driver) createNetwork() error {
// network: default
// It is assumed that the libvirt/kvm installation has already created this network
if _, err := conn.LookupNetworkByName(d.Network); err != nil {
netd, err := conn.LookupNetworkByName(d.Network)
if err != nil {
return errors.Wrapf(err, "network %s doesn't exist", d.Network)
}
defer func() { _ = netd.Free() }()
// network: private
// Only create the private network if it does not already exist
if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err != nil {
netp, err := conn.LookupNetworkByName(d.PrivateNetwork)
if err != nil {
// create the XML for the private network from our networkTmpl
tmpl := template.Must(template.New("network").Parse(networkTmpl))
var networkXML bytes.Buffer
......@@ -141,10 +159,26 @@ func (d *Driver) createNetwork() error {
}
// and finally create it
if err := network.Create(); err != nil {
log.Debugf("Trying to create network %s...", d.PrivateNetwork)
create := func() error {
if err := network.Create(); err != nil {
return err
}
active, err := network.IsActive()
if err == nil && active {
return nil
}
return errors.Errorf("retrying %v", err)
}
if err := retry.Local(create, 10*time.Second); err != nil {
return errors.Wrapf(err, "creating network %s", d.PrivateNetwork)
}
}
defer func() {
if netp != nil {
_ = netp.Free()
}
}()
return nil
}
......@@ -163,13 +197,13 @@ func (d *Driver) deleteNetwork() error {
log.Debugf("Checking if network %s exists...", d.PrivateNetwork)
network, err := conn.LookupNetworkByName(d.PrivateNetwork)
if err != nil {
if libvirtErr, ok := err.(libvirt.Error); ok && libvirtErr.Code == libvirt.ERR_NO_NETWORK {
if lvErr(err).Code == libvirt.ERR_NO_NETWORK {
log.Warnf("Network %s does not exist. Skipping deletion", d.PrivateNetwork)
return nil
}
return errors.Wrapf(err, "failed looking for network %s", d.PrivateNetwork)
}
defer func() { _ = network.Free() }()
log.Debugf("Network %s exists", d.PrivateNetwork)
err = d.checkDomains(conn)
......@@ -178,15 +212,58 @@ func (d *Driver) deleteNetwork() error {
}
// when we reach this point, it means it is safe to delete the network
// cannot destroy an inactive network - try to activate it first
log.Debugf("Trying to reactivate network %s first (if needed)...", d.PrivateNetwork)
activate := func() error {
active, err := network.IsActive()
if err == nil && active {
return nil
}
if err != nil {
return err
}
// inactive, try to activate
if err := network.Create(); err != nil {
return err
}
return errors.Errorf("needs confirmation") // confirm in the next cycle
}
if err := retry.Local(activate, 10*time.Second); err != nil {
log.Debugf("Reactivating network %s failed, will continue anyway...", d.PrivateNetwork)
}
log.Debugf("Trying to destroy network %s...", d.PrivateNetwork)
err = network.Destroy()
if err != nil {
return errors.Wrap(err, "network destroy")
destroy := func() error {
if err := network.Destroy(); err != nil {
return err
}
active, err := network.IsActive()
if err == nil && !active {
return nil
}
return errors.Errorf("retrying %v", err)
}
if err := retry.Local(destroy, 10*time.Second); err != nil {
return errors.Wrap(err, "destroying network")
}
log.Debugf("Trying to undefine network %s...", d.PrivateNetwork)
err = network.Undefine()
if err != nil {
return errors.Wrap(err, "network undefine")
undefine := func() error {
if err := network.Undefine(); err != nil {
return err
}
netp, err := conn.LookupNetworkByName(d.PrivateNetwork)
if netp != nil {
_ = netp.Free()
}
if lvErr(err).Code == libvirt.ERR_NO_NETWORK {
return nil
}
return errors.Errorf("retrying %v", err)
}
if err := retry.Local(undefine, 10*time.Second); err != nil {
return errors.Wrap(err, "undefining network")
}
return nil
......@@ -272,7 +349,6 @@ func (d *Driver) lookupIP() (string, error) {
if err != nil {
return "", errors.Wrap(err, "getting connection and domain")
}
defer conn.Close()
libVersion, err := conn.GetLibVersion()
......@@ -294,6 +370,7 @@ func (d *Driver) lookupIPFromStatusFile(conn *libvirt.Connect) (string, error) {
if err != nil {
return "", errors.Wrap(err, "looking up network by name")
}
defer func() { _ = network.Free() }()
bridge, err := network.GetBridgeName()
if err != nil {
......
......@@ -67,7 +67,7 @@ var Addons = map[string]*Addon{
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml.tmpl", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640", true),
MustBinAsset("deploy/addons/dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640", false),
MustBinAsset("deploy/addons/dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640", false),
......@@ -110,13 +110,13 @@ var Addons = map[string]*Addon{
vmpath.GuestAddonsDir,
"glusterfs-daemonset.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/heketi-deployment.yaml.tmpl",
vmpath.GuestAddonsDir,
"heketi-deployment.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl",
vmpath.GuestAddonsDir,
......@@ -154,7 +154,7 @@ var Addons = map[string]*Addon{
vmpath.GuestAddonsDir,
"kibana-rc.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/efk/kibana-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
......@@ -246,7 +246,7 @@ var Addons = map[string]*Addon{
vmpath.GuestAddonsDir,
"registry-rc.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/registry/registry-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
......@@ -258,7 +258,7 @@ var Addons = map[string]*Addon{
vmpath.GuestAddonsDir,
"registry-proxy.yaml",
"0640",
false),
true),
}, false, "registry"),
"registry-creds": NewAddon([]*BinAsset{
MustBinAsset(
......@@ -292,13 +292,13 @@ var Addons = map[string]*Addon{
vmpath.GuestAddonsDir,
"node-etc-hosts-update.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/registry-aliases/patch-coredns-job.tmpl",
vmpath.GuestAddonsDir,
"patch-coredns-job.yaml",
"0640",
false),
true),
}, false, "registry-aliases"),
"freshpod": NewAddon([]*BinAsset{
MustBinAsset(
......@@ -318,11 +318,11 @@ var Addons = map[string]*Addon{
}, false, "nvidia-driver-installer"),
"nvidia-gpu-device-plugin": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/gpu/nvidia-gpu-device-plugin.yaml",
"deploy/addons/gpu/nvidia-gpu-device-plugin.yaml.tmpl",
vmpath.GuestAddonsDir,
"nvidia-gpu-device-plugin.yaml",
"0640",
false),
true),
}, false, "nvidia-gpu-device-plugin"),
"logviewer": NewAddon([]*BinAsset{
MustBinAsset(
......@@ -380,19 +380,19 @@ var Addons = map[string]*Addon{
}, false, "helm-tiller"),
"ingress-dns": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/ingress-dns/ingress-dns-pod.yaml",
"deploy/addons/ingress-dns/ingress-dns-pod.yaml.tmpl",
vmpath.GuestAddonsDir,
"ingress-dns-pod.yaml",
"0640",
false),
true),
}, false, "ingress-dns"),
"metallb": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/metallb/metallb.yaml",
"deploy/addons/metallb/metallb.yaml.tmpl",
vmpath.GuestAddonsDir,
"metallb.yaml",
"0640",
false),
true),
MustBinAsset(
"deploy/addons/metallb/metallb-config.yaml.tmpl",
vmpath.GuestAddonsDir,
......@@ -434,11 +434,11 @@ var Addons = map[string]*Addon{
"0640",
false),
MustBinAsset(
"deploy/addons/gcp-auth/gcp-auth-webhook.yaml",
"deploy/addons/gcp-auth/gcp-auth-webhook.yaml.tmpl",
vmpath.GuestAddonsDir,
"gcp-auth-webhook.yaml",
"0640",
false),
true),
}, false, "gcp-auth"),
"volumesnapshots": NewAddon([]*BinAsset{
MustBinAsset(
......@@ -466,11 +466,11 @@ var Addons = map[string]*Addon{
"0640",
false),
MustBinAsset(
"deploy/addons/volumesnapshots/volume-snapshot-controller-deployment.yaml",
"deploy/addons/volumesnapshots/volume-snapshot-controller-deployment.yaml.tmpl",
vmpath.GuestAddonsDir,
"volume-snapshot-controller-deployment.yaml",
"0640",
false),
true),
}, false, "volumesnapshots"),
"csi-hostpath-driver": NewAddon([]*BinAsset{
MustBinAsset(
......
......@@ -26,7 +26,7 @@ minikube start [flags]
--apiserver-names stringArray A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine
--apiserver-port int The apiserver listening port (default 8443)
--auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true)
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.14-snapshot@sha256:1e303d96e9d72371235cb28ed77f9b3ba67fb4966085202238e635f1d80181f8")
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.14-snapshot2@sha256:2bd97b482faf5b6a403ac39dd5e7c6fe2006425c6663a12f94f64f5f81a7787e")
--cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true)
--cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)
--container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册