diff --git a/.github/workflows/iso.yml b/.github/workflows/iso.yml index 0245476855..07e03d7197 100644 --- a/.github/workflows/iso.yml +++ b/.github/workflows/iso.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Download Dependencies run: go mod download @@ -71,7 +71,7 @@ jobs: make checksum - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install kubectl shell: bash @@ -103,7 +103,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -115,8 +115,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - name: Upload report uses: actions/upload-artifact@v1 with: diff --git a/.github/workflows/kic_image.yml b/.github/workflows/kic_image.yml index f8006631bb..b3ddee81b2 100644 --- a/.github/workflows/kic_image.yml +++ b/.github/workflows/kic_image.yml @@ -21,7 +21,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Download Dependencies run: go mod download @@ -83,7 +83,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -95,8 +95,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail' || true) TestsNum=$(echo $STAT | jq '.NumberOfTests' || true) GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: kic_image_functional_test_docker_ubuntu diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 7aea4691f4..0d7673f2c0 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -21,7 +21,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Download Dependencies run: go mod download @@ -48,7 +48,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install libvirt run: | @@ -67,7 +67,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install libvirt run: | @@ -114,7 +114,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -145,7 +145,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -157,8 +157,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: functional_docker_ubuntu @@ -197,7 +199,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -241,7 +243,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -253,8 +255,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: functional_virtualbox_macos @@ -340,7 +344,7 @@ jobs: echo "------------------------" - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install tools continue-on-error: true @@ -373,7 +377,7 @@ jobs: echo "----" echo $T_ELAPSED echo "----" - echo "::set-env name=TIME_ELAPSED::$T_ELAPSED" + echo "TIME_ELAPSED=$T_ELAPSED" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - name: Generate HTML Report continue-on-error: true shell: powershell @@ -385,8 +389,8 @@ jobs: $FailNum=$(echo $STAT | jq '.NumberOfFail') $TestsNum=$(echo $STAT | jq '.NumberOfTests') $GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${Env:TIME_ELAPSED}" - echo "::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT}" - echo "::set-env name=STAT::${STAT}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "STAT=${STAT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append echo ${GOPOGH_RESULT} $numFail=(echo $STAT | jq '.NumberOfFail') $failedTests=( echo $STAT | jq '.FailedTests') @@ -476,7 +480,7 @@ jobs: Get-WmiObject -class Win32_ComputerSystem - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install tools continue-on-error: true @@ -510,7 +514,7 @@ jobs: echo "----" echo $T_ELAPSED echo "----" - echo "::set-env name=TIME_ELAPSED::$T_ELAPSED" + echo "TIME_ELAPSED=$T_ELAPSED" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - name: Generate HTML Report continue-on-error: true shell: powershell @@ -522,8 +526,8 @@ jobs: $FailNum=$(echo $STAT | jq '.NumberOfFail') $TestsNum=$(echo $STAT | jq '.NumberOfTests') $GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${Env:TIME_ELAPSED}" - echo "::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT}" - echo "::set-env name=STAT::${STAT}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "STAT=${STAT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append echo ${GOPOGH_RESULT} $numFail=(echo $STAT | jq '.NumberOfFail') $failedTests=( echo $STAT | jq '.FailedTests') @@ -582,7 +586,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -611,7 +615,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -623,8 +627,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: none_ubuntu18_04 @@ -677,7 +683,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -700,13 +706,13 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestAddons|TestCertOptions|TestSkaffold)" -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestAddons|TestCertOptions|TestSkaffold)" -test.timeout=20m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -718,8 +724,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: addons_certs_docker_ubuntu @@ -757,7 +765,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -802,7 +810,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -814,8 +822,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: addons_certs_virtualbox_macos @@ -867,7 +877,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -898,7 +908,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -910,8 +920,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: multinode_docker_ubuntu @@ -949,7 +961,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -988,7 +1000,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -1000,8 +1012,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: multinode_virtualbox_macos @@ -1021,11 +1035,12 @@ jobs: if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 7 ];then echo "*** Failed to pass at least 7 ! ***";exit 2;fi - pause_preload_dockerflags_docker_ubuntu: + preload_dockerflags_docker_ubuntu: + # TestPause was removed due to https://github.com/kubernetes/minikube/issues/9568 runs-on: ubuntu-18.04 env: TIME_ELAPSED: time - JOB_NAME: "pause_preload_dockerflags_docker_ubuntu" + JOB_NAME: "preload_dockerflags_docker_ubuntu" GOPOGH_RESULT: "" SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 needs: [build_minikube] @@ -1053,7 +1068,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -1076,13 +1091,13 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestPause|TestPreload|TestDockerFlags)" -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestPreload|TestDockerFlags)" -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -1094,13 +1109,15 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: - name: pause_preload_dockerflags_docker_ubuntu + name: preload_dockerflags_docker_ubuntu path: minikube_binaries/report - - name: The End Result - pause_preload_dockerflags_docker_ubuntu + - name: The End Result - preload_dockerflags_docker_ubuntu shell: bash run: | echo ${GOPOGH_RESULT} @@ -1114,7 +1131,7 @@ jobs: echo "-------------------------------------------------------" if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 9 ];then echo "*** Failed to pass at least 9 ! ***";exit 2;fi + if [ "$numPass" -lt 2 ];then echo "*** Failed to pass at least 2 ! ***";exit 2;fi pause_preload_dockerflags_virtualbox_macos: runs-on: macos-10.15 env: @@ -1133,7 +1150,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -1172,7 +1189,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -1184,8 +1201,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: pause_preload_dockerflags_virtualbox_macos @@ -1220,7 +1239,7 @@ jobs: addons_certs_virtualbox_macos, multinode_docker_ubuntu, multinode_virtualbox_macos, - pause_preload_dockerflags_docker_ubuntu, + preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 @@ -1242,9 +1261,9 @@ jobs: cp -r ./addons_certs_virtualbox_macos ./all_reports/ cp -r ./multinode_docker_ubuntu ./all_reports/ cp -r ./multinode_virtualbox_macos ./all_reports/ - cp -r ./pause_preload_dockerflags_docker_ubuntu ./all_reports/ + cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports - path: all_reports \ No newline at end of file + path: all_reports diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index cbb271de0d..201848842e 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Download Dependencies run: go mod download @@ -46,7 +46,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install libvirt run: | @@ -65,7 +65,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install libvirt run: | @@ -112,7 +112,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -143,7 +143,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -155,8 +155,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: functional_docker_ubuntu @@ -195,7 +197,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -239,7 +241,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -251,8 +253,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: functional_virtualbox_macos @@ -338,7 +342,7 @@ jobs: echo "------------------------" - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install tools continue-on-error: true @@ -371,7 +375,7 @@ jobs: echo "----" echo $T_ELAPSED echo "----" - echo "::set-env name=TIME_ELAPSED::$T_ELAPSED" + echo "TIME_ELAPSED=$T_ELAPSED" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - name: Generate HTML Report continue-on-error: true shell: powershell @@ -383,8 +387,8 @@ jobs: $FailNum=$(echo $STAT | jq '.NumberOfFail') $TestsNum=$(echo $STAT | jq '.NumberOfTests') $GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${Env:TIME_ELAPSED}" - echo "::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT}" - echo "::set-env name=STAT::${STAT}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "STAT=${STAT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append echo ${GOPOGH_RESULT} $numFail=(echo $STAT | jq '.NumberOfFail') $failedTests=( echo $STAT | jq '.FailedTests') @@ -474,7 +478,7 @@ jobs: Get-WmiObject -class Win32_ComputerSystem - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install tools continue-on-error: true @@ -508,7 +512,7 @@ jobs: echo "----" echo $T_ELAPSED echo "----" - echo "::set-env name=TIME_ELAPSED::$T_ELAPSED" + echo "TIME_ELAPSED=$T_ELAPSED" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - name: Generate HTML Report continue-on-error: true shell: powershell @@ -520,8 +524,8 @@ jobs: $FailNum=$(echo $STAT | jq '.NumberOfFail') $TestsNum=$(echo $STAT | jq '.NumberOfTests') $GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${Env:TIME_ELAPSED}" - echo "::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT}" - echo "::set-env name=STAT::${STAT}" + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + echo "STAT=${STAT}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append echo ${GOPOGH_RESULT} $numFail=(echo $STAT | jq '.NumberOfFail') $failedTests=( echo $STAT | jq '.FailedTests') @@ -580,7 +584,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -609,7 +613,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -621,8 +625,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: none_ubuntu18_04 @@ -675,7 +681,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -698,13 +704,13 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestAddons|TestCertOptions|TestSkaffold)" -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestAddons|TestCertOptions|TestSkaffold)" -test.timeout=20m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -716,8 +722,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: addons_certs_docker_ubuntu @@ -755,7 +763,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -800,7 +808,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -812,8 +820,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: addons_certs_virtualbox_macos @@ -865,7 +875,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -896,7 +906,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -908,8 +918,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: multinode_docker_ubuntu @@ -947,7 +959,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -986,7 +998,7 @@ jobs: min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -998,8 +1010,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: multinode_virtualbox_macos @@ -1019,11 +1033,12 @@ jobs: if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi if [ "$numPass" -lt 7 ];then echo "*** Failed to pass at least 7 ! ***";exit 2;fi - pause_preload_dockerflags_docker_ubuntu: + preload_dockerflags_docker_ubuntu: + # TestPause was removed due to https://github.com/kubernetes/minikube/issues/9568 runs-on: ubuntu-18.04 env: TIME_ELAPSED: time - JOB_NAME: "pause_preload_dockerflags_docker_ubuntu" + JOB_NAME: "preload_dockerflags_docker_ubuntu" GOPOGH_RESULT: "" SHELL: "/bin/bash" # To prevent https://github.com/kubernetes/minikube/issues/6643 needs: [build_minikube] @@ -1051,7 +1066,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -1074,13 +1089,13 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestPause|TestPreload|TestDockerFlags)" -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-linux-amd64 -minikube-start-args=--driver=docker -test.run "(TestDockerFlags|TestPreload)" -test.timeout=10m -test.v -timeout-multiplier=1.5 -binary=./minikube-linux-amd64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -1092,13 +1107,15 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: - name: pause_preload_dockerflags_docker_ubuntu + name: preload_dockerflags_docker_ubuntu path: minikube_binaries/report - - name: The End Result - pause_preload_dockerflags_docker_ubuntu + - name: The End Result - preload_dockerflags_docker_ubuntu shell: bash run: | echo ${GOPOGH_RESULT} @@ -1112,7 +1129,7 @@ jobs: echo "-------------------------------------------------------" if [ "$numFail" -gt 0 ];then echo "*** $numFail Failed ***";exit 2;fi if [ "$numPass" -eq 0 ];then echo "*** 0 Passed! ***";exit 2;fi - if [ "$numPass" -lt 9 ];then echo "*** Failed to pass at least 9 ! ***";exit 2;fi + if [ "$numPass" -lt 2 ];then echo "*** Failed to pass at least 2 ! ***";exit 2;fi pause_preload_dockerflags_virtualbox_macos: runs-on: macos-10.15 env: @@ -1131,7 +1148,7 @@ jobs: # go 1.14.6+ is needed because of this bug https://github.com/golang/go/issues/39308 - uses: actions/setup-go@v2 with: - go-version: '1.14.6' + go-version: '1.15.2' stable: true - name: Install gopogh @@ -1164,13 +1181,13 @@ jobs: chmod a+x e2e-* chmod a+x minikube-* START_TIME=$(date -u +%s) - KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-darwin-amd64 -minikube-start-args=--vm-driver=virtualbox -test.run "(TestPause|TestPreload|TestDockerFlags)" -test.timeout=15m -test.v -timeout-multiplier=1.5 -binary=./minikube-darwin-amd64 2>&1 | tee ./report/testout.txt + KUBECONFIG=$(pwd)/testhome/kubeconfig MINIKUBE_HOME=$(pwd)/testhome ./e2e-darwin-amd64 -minikube-start-args=--vm-driver=virtualbox -test.run "(TestPause|TestPreload|TestDockerFlags)" -test.timeout=20m -test.v -timeout-multiplier=1.5 -binary=./minikube-darwin-amd64 2>&1 | tee ./report/testout.txt END_TIME=$(date -u +%s) TIME_ELAPSED=$(($END_TIME-$START_TIME)) min=$((${TIME_ELAPSED}/60)) sec=$((${TIME_ELAPSED}%60)) TIME_ELAPSED="${min} min $sec seconds " - echo ::set-env name=TIME_ELAPSED::${TIME_ELAPSED} + echo "TIME_ELAPSED=${TIME_ELAPSED}" >> $GITHUB_ENV - name: Generate HTML Report shell: bash run: | @@ -1182,8 +1199,10 @@ jobs: FailNum=$(echo $STAT | jq '.NumberOfFail') TestsNum=$(echo $STAT | jq '.NumberOfTests') GOPOGH_RESULT="${JOB_NAME} : completed with ${FailNum} / ${TestsNum} failures in ${TIME_ELAPSED}" - echo ::set-env name=GOPOGH_RESULT::${GOPOGH_RESULT} - echo ::set-env name=STAT::${STAT} + echo "GOPOGH_RESULT=${GOPOGH_RESULT}" >> $GITHUB_ENV + echo 'STAT<> $GITHUB_ENV + echo "${STAT}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - uses: actions/upload-artifact@v1 with: name: pause_preload_dockerflags_virtualbox_macos @@ -1218,7 +1237,7 @@ jobs: addons_certs_virtualbox_macos, multinode_docker_ubuntu, multinode_virtualbox_macos, - pause_preload_dockerflags_docker_ubuntu, + preload_dockerflags_docker_ubuntu, pause_preload_dockerflags_virtualbox_macos, ] runs-on: ubuntu-18.04 @@ -1240,9 +1259,9 @@ jobs: cp -r ./addons_certs_virtualbox_macos ./all_reports/ cp -r ./multinode_docker_ubuntu ./all_reports/ cp -r ./multinode_virtualbox_macos ./all_reports/ - cp -r ./pause_preload_dockerflags_docker_ubuntu ./all_reports/ + cp -r ./preload_dockerflags_docker_ubuntu ./all_reports/ cp -r ./pause_preload_dockerflags_virtualbox_macos ./all_reports/ - uses: actions/upload-artifact@v1 with: name: all_reports - path: all_reports \ No newline at end of file + path: all_reports diff --git a/.travis.yml b/.travis.yml index 50e315c902..257cc45e20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ os: linux language: go go: - - 1.14.6 + - 1.15.2 env: global: - GOPROXY=https://proxy.golang.org @@ -11,7 +11,7 @@ matrix: include: - language: go name: Code Lint - go: 1.14.6 + go: 1.15.2 env: - TESTSUITE=lintall before_install: @@ -20,7 +20,7 @@ matrix: - language: go name: Unit Test - go: 1.14.6 + go: 1.15.2 env: - TESTSUITE=unittest before_install: @@ -29,7 +29,7 @@ matrix: - language: go name: Build - go: 1.14.6 + go: 1.15.2 script: make after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4b99403be..b0b639208d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,60 @@ # Release Notes +## Version 1.14.2 - 2020-10-27 + +Bug Fixes: + +* fix "profile list" timing out when cluster stopped. [#9557](https://github.com/kubernetes/minikube/pull/9557) + +Thank you to our contributors for this release! + +- Medya Ghazizadeh +- Sharif Elgamal +- Thomas Strömberg + +## Version 1.14.1 - 2020-10-23 + +Features: + +* new --wait flag component "kubelet" [#9459](https://github.com/kubernetes/minikube/pull/9459) + +Bug Fixes: + +* docker: When creating networks, use MTU of built-in bridge network [#9530](https://github.com/kubernetes/minikube/pull/9530) +* multinode: ensure worker node join control plane on restart [#9476](https://github.com/kubernetes/minikube/pull/9476) +* Fix "--native-ssh" flag for "minikube ssh" [#9417](https://github.com/kubernetes/minikube/pull/9417) +* Fix parallels driver initialization [#9494](https://github.com/kubernetes/minikube/pull/9494) + +Minor Improvements: + +* Omit error message if 100-crio-bridge.conf has already been disabled [#9505](https://github.com/kubernetes/minikube/pull/9505) +* avoid re-downloading hyperkit driver [#9365](https://github.com/kubernetes/minikube/pull/9365) +* improve gcp-auth addon failure policy [#9408](https://github.com/kubernetes/minikube/pull/9408) +* Added deprecation warning for --network-plugin=cni [#9368](https://github.com/kubernetes/minikube/pull/9368) +* Update warning message for local proxy. [#9490](https://github.com/kubernetes/minikube/pull/9490) +* bump helm-tiller addon to v2.16.12 [#9444](https://github.com/kubernetes/minikube/pull/9444) +* bump version for ingress dns addon [#9435](https://github.com/kubernetes/minikube/pull/9435) + +Thank you to our contributors for this release! + +- Anders F Björklund +- Dale Hamel +- GRXself +- Ilya Zuyev +- Josh Woodcock +- Joshua Mühlfort +- Kenta Iso +- Medya Ghazizadeh +- Mikhail Zholobov +- Nick Kubala +- Pablo Caderno +- Predrag Rogic +- Priya Modali +- Priya Wadhwa +- Sharif Elgamal +- Thomas Strömberg +- heyf + ## Version 1.14.0 - 2020-10-08 ## Features diff --git a/Makefile b/Makefile index ed4d7b249b..eac47a70c2 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ # Bump these on release - and please check ISO_VERSION for correctness. VERSION_MAJOR ?= 1 VERSION_MINOR ?= 14 -VERSION_BUILD ?= 0 +VERSION_BUILD ?= 2 RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) VERSION ?= v$(RAW_VERSION) @@ -29,10 +29,10 @@ DEB_VERSION ?= $(subst -,~,$(RAW_VERSION)) RPM_VERSION ?= $(DEB_VERSION) # used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below -GO_VERSION ?= 1.14.6 +GO_VERSION ?= 1.15.2 INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1) -BUILDROOT_BRANCH ?= 2020.02.6 +BUILDROOT_BRANCH ?= 2020.02.7 REGISTRY?=gcr.io/k8s-minikube REGISTRY_GH?=docker.pkg.github.com/kubernetes/minikube @@ -58,7 +58,7 @@ MINIKUBE_BUCKET ?= minikube/releases MINIKUBE_UPLOAD_LOCATION := gs://${MINIKUBE_BUCKET} MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download -KERNEL_VERSION ?= 4.19.114 +KERNEL_VERSION ?= 4.19.150 # latest from https://github.com/golangci/golangci-lint/releases GOLINT_VERSION ?= v1.30.0 # Limit number of default jobs, to avoid the CI builds running out of memory @@ -114,8 +114,7 @@ MARKDOWNLINT ?= markdownlint MINIKUBE_MARKDOWN_FILES := README.md CONTRIBUTING.md CHANGELOG.md -MINIKUBE_BUILD_TAGS := container_image_ostree_stub containers_image_openpgp -MINIKUBE_BUILD_TAGS += go_getter_nos3 go_getter_nogcs +MINIKUBE_BUILD_TAGS := go_getter_nos3 go_getter_nogcs MINIKUBE_INTEGRATION_BUILD_TAGS := integration $(MINIKUBE_BUILD_TAGS) CMD_SOURCE_DIRS = cmd pkg @@ -582,13 +581,12 @@ storage-provisioner-image-%: out/storage-provisioner-% docker build -t $(REGISTRY)/storage-provisioner-$*:$(STORAGE_PROVISIONER_TAG) -f deploy/storage-provisioner/Dockerfile --build-arg arch=$* . .PHONY: kic-base-image -kic-base-image: ## builds the base image used for kic. - docker rmi -f $(KIC_BASE_IMAGE_GCR)-snapshot || true - docker build -f ./deploy/kicbase/Dockerfile -t local/kicbase:$(KIC_VERSION)-snapshot --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) --cache-from $(KIC_BASE_IMAGE_GCR) ./deploy/kicbase - docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_GCR)-snapshot - docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_GCR) - docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_HUB) - docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_GH) +kic-base-image: ## builds the kic base image and tags local/kicbase:latest and local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) + docker rmi -f local/kicbase:latest || true + docker rmi -f local/kicbase:$(KIC_VERSION) || true + docker build -f ./deploy/kicbase/Dockerfile -t local/kicbase:$(KIC_VERSION) --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) --cache-from $(KIC_BASE_IMAGE_GCR) ./deploy/kicbase + docker tag local/kicbase:$(KIC_VERSION) local/kicbase:latest + docker tag local/kicbase:$(KIC_VERSION) local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) .PHONY: upload-preloaded-images-tar upload-preloaded-images-tar: out/minikube # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS. @@ -613,7 +611,7 @@ push-storage-provisioner-manifest: $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~st docker manifest push $(STORAGE_PROVISIONER_MANIFEST) .PHONY: push-docker -push-docker: # Push docker image base on to IMAGE variable +push-docker: # Push docker image base on to IMAGE variable (used internally by other targets) @docker pull $(IMAGE) && echo "Image already exist in registry" && exit 1 || echo "Image doesn't exist in registry" ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push $(IMAGE) ?') @@ -623,25 +621,28 @@ endif .PHONY: push-kic-base-image-gcr push-kic-base-image-gcr: kic-base-image ## Push kic-base to gcr docker login gcr.io/k8s-minikube + docker tag local/kicbase:latest $(KIC_BASE_IMAGE_GCR) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_GCR) .PHONY: push-kic-base-image-gh push-kic-base-image-gh: kic-base-image ## Push kic-base to github docker login docker.pkg.github.com + docker tag local/kicbase:latest $(KIC_BASE_IMAGE_GH) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_GH) .PHONY: push-kic-base-image-hub push-kic-base-image-hub: kic-base-image ## Push kic-base to docker hub docker login + docker tag local/kicbase:latest $(KIC_BASE_IMAGE_HUB) $(MAKE) push-docker IMAGE=$(KIC_BASE_IMAGE_HUB) .PHONY: push-kic-base-image -push-kic-base-image: ## Push kic-base to all registries +push-kic-base-image: ## Push local/kicbase:latest to all remote registries ifndef AUTOPUSH $(call user_confirm, 'Are you sure you want to push: $(KIC_BASE_IMAGE_GH) & $(KIC_BASE_IMAGE_GCR) & $(KIC_BASE_IMAGE_HUB) ?') $(MAKE) push-kic-base-image AUTOPUSH=true else - $(MAKE) push-kic-base-image-gh push-kic-base-image-gcr push-kic-base-image-hub + $(MAKE) push-kic-base-image-gcr push-kic-base-image-hub push-kic-base-image-gh endif .PHONY: out/gvisor-addon diff --git a/OWNERS b/OWNERS index 96d6b3f3b1..7585b438f2 100644 --- a/OWNERS +++ b/OWNERS @@ -10,6 +10,7 @@ reviewers: - blueelvis - priyawadhwa - prasadkatti + - ilya-zuyev approvers: - tstromberg - afbjorklund diff --git a/cmd/minikube/cmd/config/profile_list.go b/cmd/minikube/cmd/config/profile_list.go index 6184a7aa9c..6151d59ecd 100644 --- a/cmd/minikube/cmd/config/profile_list.go +++ b/cmd/minikube/cmd/config/profile_list.go @@ -33,6 +33,7 @@ import ( "k8s.io/minikube/pkg/minikube/style" "github.com/docker/machine/libmachine" + "github.com/docker/machine/libmachine/state" "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" @@ -97,6 +98,16 @@ func profileStatus(p *config.Profile, api libmachine.API) string { return "Unknown" } + // The machine isn't running, no need to check inside + s, err := host.Driver.GetState() + if err != nil { + klog.Warningf("error getting host state: %v", err) + return "Unknown" + } + if s != state.Running { + return s.String() + } + cr, err := machine.CommandRunner(host) if err != nil { klog.Warningf("error loading profiles: %v", err) diff --git a/cmd/minikube/cmd/generate-docs_test.go b/cmd/minikube/cmd/generate-docs_test.go index 3a4e8b6ba6..b8dab4e720 100644 --- a/cmd/minikube/cmd/generate-docs_test.go +++ b/cmd/minikube/cmd/generate-docs_test.go @@ -23,10 +23,12 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "github.com/spf13/pflag" "k8s.io/minikube/pkg/generate" ) func TestGenerateDocs(t *testing.T) { + pflag.BoolP("help", "h", false, "") // avoid 'Docs are not updated. Please run `make generate-docs` to update commands documentation' error dir := "../../../site/content/en/docs/commands/" for _, sc := range RootCmd.Commands() { diff --git a/cmd/minikube/cmd/pause.go b/cmd/minikube/cmd/pause.go index 7cfa359f80..55e44147b2 100644 --- a/cmd/minikube/cmd/pause.go +++ b/cmd/minikube/cmd/pause.go @@ -50,6 +50,7 @@ var pauseCmd = &cobra.Command{ } func runPause(cmd *cobra.Command, args []string) { + out.SetJSON(outputFormat == "json") co := mustload.Running(ClusterFlagValue()) register.SetEventLogPath(localpath.EventLog(ClusterFlagValue())) register.Reg.SetStep(register.Pausing) @@ -105,4 +106,5 @@ func runPause(cmd *cobra.Command, args []string) { func init() { pauseCmd.Flags().StringSliceVarP(&namespaces, "--namespaces", "n", constants.DefaultNamespaces, "namespaces to pause") pauseCmd.Flags().BoolVarP(&allNamespaces, "all-namespaces", "A", false, "If set, pause all namespaces") + pauseCmd.Flags().StringVarP(&outputFormat, "output", "o", "text", "Format to print stdout in. Options include: [text,json]") } diff --git a/cmd/minikube/cmd/podman-env.go b/cmd/minikube/cmd/podman-env.go index 1d4d93c6da..a0290d78e9 100644 --- a/cmd/minikube/cmd/podman-env.go +++ b/cmd/minikube/cmd/podman-env.go @@ -39,12 +39,16 @@ import ( "k8s.io/minikube/pkg/minikube/shell" ) -var podmanEnvTmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanVarlinkBridgeEnv, constants.MinikubeActivePodmanEnv) +var podmanEnv1Tmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .VarlinkBridge }}{{ .Suffix }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanVarlinkBridgeEnv, constants.MinikubeActivePodmanEnv) + +var podmanEnv2Tmpl = fmt.Sprintf("{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerHost }}{{ .Suffix }}{{ if .ContainerSSHKey }}{{ .Prefix }}%s{{ .Delimiter }}{{ .ContainerSSHKey}}{{ .Suffix }}{{ end }}{{ .Prefix }}%s{{ .Delimiter }}{{ .MinikubePodmanProfile }}{{ .Suffix }}{{ .UsageHint }}", constants.PodmanContainerHostEnv, constants.PodmanContainerSSHKeyEnv, constants.MinikubeActivePodmanEnv) // PodmanShellConfig represents the shell config for Podman type PodmanShellConfig struct { shell.Config VarlinkBridge string + ContainerHost string + ContainerSSHKey string MinikubePodmanProfile string } @@ -59,17 +63,24 @@ func podmanShellCfgSet(ec PodmanEnvConfig, envMap map[string]string) *PodmanShel Config: *shell.CfgSet(ec.EnvConfig, usgPlz, usgCmd), } s.VarlinkBridge = envMap[constants.PodmanVarlinkBridgeEnv] + s.ContainerHost = envMap[constants.PodmanContainerHostEnv] + s.ContainerSSHKey = envMap[constants.PodmanContainerSSHKeyEnv] s.MinikubePodmanProfile = envMap[constants.MinikubeActivePodmanEnv] return s } -// isPodmanAvailable checks if Podman is available -func isPodmanAvailable(r command.Runner) bool { +// isVarlinkAvailable checks if varlink command is available +func isVarlinkAvailable(r command.Runner) bool { if _, err := r.RunCmd(exec.Command("which", "varlink")); err != nil { return false } + return true +} + +// isPodmanAvailable checks if podman command is available +func isPodmanAvailable(r command.Runner) bool { if _, err := r.RunCmd(exec.Command("which", "podman")); err != nil { return false } @@ -130,11 +141,25 @@ var podmanEnvCmd = &cobra.Command{ exit.Message(reason.Usage, `The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/`) } - if ok := isPodmanAvailable(co.CP.Runner); !ok { + r := co.CP.Runner + if ok := isPodmanAvailable(r); !ok { exit.Message(reason.EnvPodmanUnavailable, `The podman service within '{{.cluster}}' is not active`, out.V{"cluster": cname}) } - client, err := createExternalSSHClient(co.CP.Host.Driver) + varlink := isVarlinkAvailable(r) + + d := co.CP.Host.Driver + client, err := createExternalSSHClient(d) + if err != nil { + exit.Error(reason.IfSSHClient, "Error getting ssh client", err) + } + + hostname, err := d.GetSSHHostname() + if err != nil { + exit.Error(reason.IfSSHClient, "Error getting ssh client", err) + } + + port, err := d.GetSSHPort() if err != nil { exit.Error(reason.IfSSHClient, "Error getting ssh client", err) } @@ -143,7 +168,12 @@ var podmanEnvCmd = &cobra.Command{ EnvConfig: sh, profile: cname, driver: driverName, + varlink: varlink, client: client, + username: d.GetSSHUsername(), + hostname: hostname, + port: port, + keypath: d.GetSSHKeyPath(), } if ec.Shell == "" { @@ -162,23 +192,31 @@ var podmanEnvCmd = &cobra.Command{ // PodmanEnvConfig encapsulates all external inputs into shell generation for Podman type PodmanEnvConfig struct { shell.EnvConfig - profile string - driver string - client *ssh.ExternalClient + profile string + driver string + varlink bool + client *ssh.ExternalClient + username string + hostname string + port int + keypath string } // podmanSetScript writes out a shell-compatible 'podman-env' script func podmanSetScript(ec PodmanEnvConfig, w io.Writer) error { + var podmanEnvTmpl string + if ec.varlink { + podmanEnvTmpl = podmanEnv1Tmpl + } else { + podmanEnvTmpl = podmanEnv2Tmpl + } envVars := podmanEnvVars(ec) return shell.SetScript(ec.EnvConfig, w, podmanEnvTmpl, podmanShellCfgSet(ec, envVars)) } // podmanUnsetScript writes out a shell-compatible 'podman-env unset' script func podmanUnsetScript(ec PodmanEnvConfig, w io.Writer) error { - vars := []string{ - constants.PodmanVarlinkBridgeEnv, - constants.MinikubeActivePodmanEnv, - } + vars := podmanEnvNames(ec) return shell.UnsetScript(ec.EnvConfig, w, vars) } @@ -190,15 +228,73 @@ func podmanBridge(client *ssh.ExternalClient) string { return strings.Join(command, " ") } +// podmanURL returns the url to use in a var for accessing the podman socket over ssh +func podmanURL(username string, hostname string, port int) string { + path := "/run/podman/podman.sock" + return fmt.Sprintf("ssh://%s@%s:%d%s", username, hostname, port, path) +} + // podmanEnvVars gets the necessary podman env variables to allow the use of minikube's podman service func podmanEnvVars(ec PodmanEnvConfig) map[string]string { - env := map[string]string{ - constants.PodmanVarlinkBridgeEnv: podmanBridge(ec.client), + // podman v1 + env1 := map[string]string{ + constants.PodmanVarlinkBridgeEnv: podmanBridge(ec.client), + } + // podman v2 + env2 := map[string]string{ + constants.PodmanContainerHostEnv: podmanURL(ec.username, ec.hostname, ec.port), + constants.PodmanContainerSSHKeyEnv: ec.keypath, + } + //common + env0 := map[string]string{ constants.MinikubeActivePodmanEnv: ec.profile, } + + var env map[string]string + if ec.varlink { + env = env1 + } else { + env = env2 + } + for k, v := range env0 { + env[k] = v + } return env } +// podmanEnvNames gets the necessary podman env variables to reset after using minikube's podman service +func podmanEnvNames(ec PodmanEnvConfig) []string { + // podman v1 + vars1 := []string{ + constants.PodmanVarlinkBridgeEnv, + } + // podman v2 + vars2 := []string{ + constants.PodmanContainerHostEnv, + constants.PodmanContainerSSHKeyEnv, + } + // common + vars0 := []string{ + constants.MinikubeActivePodmanEnv, + } + + var vars []string + if ec.client != nil || ec.hostname != "" { + // getting ec.varlink needs a running machine + if ec.varlink { + vars = vars1 + } else { + vars = vars2 + } + } else { + // just unset *all* of the variables instead + vars = vars1 + vars = append(vars, vars2...) + } + vars = append(vars, vars0...) + return vars +} + func init() { podmanEnvCmd.Flags().StringVar(&shell.ForceShell, "shell", "", "Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect") podmanEnvCmd.Flags().BoolVarP(&podmanUnset, "unset", "u", false, "Unset variables instead of setting them") diff --git a/cmd/minikube/cmd/podman-env_test.go b/cmd/minikube/cmd/podman-env_test.go index 8cfb7a8641..e9d35cbffb 100644 --- a/cmd/minikube/cmd/podman-env_test.go +++ b/cmd/minikube/cmd/podman-env_test.go @@ -41,7 +41,7 @@ func TestGeneratePodmanScripts(t *testing.T) { }{ { "bash", - PodmanEnvConfig{profile: "bash", driver: "kvm2", client: newFakeClient()}, + PodmanEnvConfig{profile: "bash", driver: "kvm2", varlink: true, client: newFakeClient()}, nil, `export PODMAN_VARLINK_BRIDGE="/usr/bin/ssh root@host -- sudo varlink -A \'podman varlink \\\$VARLINK_ADDRESS\' bridge" export MINIKUBE_ACTIVE_PODMAN="bash" @@ -51,6 +51,19 @@ export MINIKUBE_ACTIVE_PODMAN="bash" `, `unset PODMAN_VARLINK_BRIDGE; unset MINIKUBE_ACTIVE_PODMAN; +`, + }, + { + "bash", + PodmanEnvConfig{profile: "bash", driver: "kvm2", client: newFakeClient(), username: "root", hostname: "host", port: 22}, + nil, + `export CONTAINER_HOST="ssh://root@host:22/run/podman/podman.sock" +export MINIKUBE_ACTIVE_PODMAN="bash" + +# To point your shell to minikube's podman service, run: +# eval $(minikube -p bash podman-env) +`, + `unset CONTAINER_HOST CONTAINER_SSHKEY MINIKUBE_ACTIVE_PODMAN `, }, } diff --git a/cmd/minikube/cmd/root.go b/cmd/minikube/cmd/root.go index 5cd9ae7975..2259f03889 100644 --- a/cmd/minikube/cmd/root.go +++ b/cmd/minikube/cmd/root.go @@ -17,7 +17,7 @@ limitations under the License. package cmd import ( - goflag "flag" + "flag" "fmt" "os" "path/filepath" @@ -71,7 +71,23 @@ func Execute() { _, callingCmd := filepath.Split(os.Args[0]) if callingCmd == "kubectl" { - os.Args = append([]string{RootCmd.Use, callingCmd}, os.Args[1:]...) + // If the user is using the minikube binary as kubectl, allow them to specify the kubectl context without also specifying minikube profile + profile := "" + for i, a := range os.Args { + if a == "--context" { + profile = fmt.Sprintf("--profile=%s", os.Args[i+1]) + break + } else if strings.HasPrefix(a, "--context=") { + context := strings.Split(a, "=")[1] + profile = fmt.Sprintf("--profile=%s", context) + break + } + } + if profile != "" { + os.Args = append([]string{RootCmd.Use, callingCmd, profile, "--"}, os.Args[1:]...) + } else { + os.Args = append([]string{RootCmd.Use, callingCmd, "--"}, os.Args[1:]...) + } } for _, c := range RootCmd.Commands() { c.Short = translate.T(c.Short) @@ -140,6 +156,18 @@ func usageTemplate() string { } func init() { + klog.InitFlags(nil) + // preset logtostderr and alsologtostderr only for test runs, for normal runs consider flags in main() + if strings.HasPrefix(filepath.Base(os.Args[0]), "e2e-") || strings.HasSuffix(os.Args[0], "test") { + if err := flag.Set("logtostderr", "false"); err != nil { + klog.Warningf("Unable to set default flag value for logtostderr: %v", err) + } + if err := flag.Set("alsologtostderr", "false"); err != nil { + klog.Warningf("Unable to set default flag value for alsologtostderr: %v", err) + } + } + pflag.CommandLine.AddGoFlagSet(flag.CommandLine) // avoid `generate-docs_test.go` complaining about "Docs are not updated" + RootCmd.PersistentFlags().StringP(config.ProfileName, "p", constants.DefaultClusterName, `The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently.`) RootCmd.PersistentFlags().StringP(configCmd.Bootstrapper, "b", "kubeadm", "The name of the cluster bootstrapper that will set up the Kubernetes cluster.") @@ -207,15 +235,6 @@ func init() { RootCmd.AddCommand(completionCmd) templates.ActsAsRootCommand(RootCmd, []string{"options"}, groups...) - klog.InitFlags(nil) - if err := goflag.Set("logtostderr", "false"); err != nil { - klog.Warningf("Unable to set default flag value for logtostderr: %v", err) - } - if err := goflag.Set("alsologtostderr", "false"); err != nil { - klog.Warningf("Unable to set default flag value for alsologtostderr: %v", err) - } - - pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) if err := viper.BindPFlags(RootCmd.PersistentFlags()); err != nil { exit.Error(reason.InternalBindFlags, "Unable to bind flags", err) } diff --git a/cmd/minikube/cmd/ssh.go b/cmd/minikube/cmd/ssh.go index 15f1d72336..1562109247 100644 --- a/cmd/minikube/cmd/ssh.go +++ b/cmd/minikube/cmd/ssh.go @@ -67,6 +67,6 @@ var sshCmd = &cobra.Command{ } func init() { - sshCmd.Flags().Bool(nativeSSH, true, "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.") + sshCmd.Flags().BoolVar(&nativeSSHClient, "native-ssh", true, "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.") sshCmd.Flags().StringVarP(&nodeName, "node", "n", "", "The node to ssh into. Defaults to the primary control plane.") } diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 909b37d734..350943f505 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -128,7 +128,7 @@ func platform() string { func runStart(cmd *cobra.Command, args []string) { register.SetEventLogPath(localpath.EventLog(ClusterFlagValue())) - out.SetJSON(viper.GetString(startOutput) == "json") + out.SetJSON(outputFormat == "json") displayVersion(version.GetVersion()) // No need to do the update check if no one is going to see it @@ -436,7 +436,7 @@ func showKubectlInfo(kcs *kubeconfig.Settings, k8sVersion string, machineName st if kcs.KeepContext { out.T(style.Kubectl, "To connect to this cluster, use: --context={{.name}}", out.V{"name": kcs.ClusterName}) } else { - out.T(style.Ready, `Done! kubectl is now configured to use "{{.name}}" by default`, out.V{"name": machineName}) + out.T(style.Ready, `Done! kubectl is now configured to use "{{.name}}" cluster and "{{.ns}}" namespace by default`, out.V{"name": machineName, "ns": kcs.Namespace}) } }() @@ -1074,7 +1074,7 @@ func validateFlags(cmd *cobra.Command, drvName string) { } } - if s := viper.GetString(startOutput); s != "text" && s != "json" { + if outputFormat != "text" && outputFormat != "json" { exit.Message(reason.Usage, "Sorry, please set the --output flag to one of the following valid options: [text,json]") } diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 74dcf0fa8b..106b34a859 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -106,8 +106,12 @@ const ( deleteOnFailure = "delete-on-failure" forceSystemd = "force-systemd" kicBaseImage = "base-image" - startOutput = "output" ports = "ports" + startNamespace = "namespace" +) + +var ( + outputFormat string ) // initMinikubeFlags includes commandline flags for minikube. @@ -147,12 +151,13 @@ func initMinikubeFlags() { startCmd.Flags().Bool(preload, true, "If set, download tarball of preloaded images if available to improve start time. Defaults to true.") startCmd.Flags().Bool(deleteOnFailure, false, "If set, delete the current cluster if start fails and try again. Defaults to false.") startCmd.Flags().Bool(forceSystemd, false, "If set, force the container runtime to use sytemd as cgroup manager. Currently available for docker and crio. Defaults to false.") - startCmd.Flags().StringP(startOutput, "o", "text", "Format to print stdout in. Options include: [text,json]") + startCmd.Flags().StringVarP(&outputFormat, "output", "o", "text", "Format to print stdout in. Options include: [text,json]") } // initKubernetesFlags inits the commandline flags for Kubernetes related options func initKubernetesFlags() { startCmd.Flags().String(kubernetesVersion, "", fmt.Sprintf("The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for %s, 'latest' for %s). Defaults to 'stable'.", constants.DefaultKubernetesVersion, constants.NewestKubernetesVersion)) + startCmd.Flags().String(startNamespace, "default", "The named space to activate after start") startCmd.Flags().Var(&config.ExtraOptions, "extra-config", `A set of key=value pairs that describe configuration that may be passed to different components. The key should be '.' separated, and the first part before the dot is the component to apply the configuration to. @@ -280,6 +285,11 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k klog.Errorf("Found deprecated --enable-default-cni flag, setting --cni=bridge") chosenCNI = "bridge" } + // networkPlugin cni deprecation warning + chosenNetworkPlugin := viper.GetString(networkPlugin) + if chosenNetworkPlugin == "cni" { + out.WarningT("With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative") + } cc = config.ClusterConfig{ Name: ClusterFlagValue(), @@ -319,6 +329,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k KubernetesConfig: config.KubernetesConfig{ KubernetesVersion: k8sVersion, ClusterName: ClusterFlagValue(), + Namespace: viper.GetString(startNamespace), APIServerName: viper.GetString(apiServerName), APIServerNames: apiServerNames, APIServerIPs: apiServerIPs, @@ -326,7 +337,7 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k FeatureGates: viper.GetString(featureGates), ContainerRuntime: viper.GetString(containerRuntime), CRISocket: viper.GetString(criSocket), - NetworkPlugin: viper.GetString(networkPlugin), + NetworkPlugin: chosenNetworkPlugin, ServiceCIDR: viper.GetString(serviceCIDR), ImageRepository: repository, ExtraOptions: config.ExtraOptions, @@ -540,6 +551,10 @@ func updateExistingConfigFromFlags(cmd *cobra.Command, existing *config.ClusterC cc.KubernetesConfig.KubernetesVersion = getKubernetesVersion(existing) } + if cmd.Flags().Changed(startNamespace) { + cc.KubernetesConfig.Namespace = viper.GetString(startNamespace) + } + if cmd.Flags().Changed(apiServerName) { cc.KubernetesConfig.APIServerName = viper.GetString(apiServerName) } diff --git a/cmd/minikube/cmd/status.go b/cmd/minikube/cmd/status.go index 3ebd1c4221..468973a379 100644 --- a/cmd/minikube/cmd/status.go +++ b/cmd/minikube/cmd/status.go @@ -345,8 +345,7 @@ func nodeStatus(api libmachine.API, cc config.ClusterConfig, n config.Node) (*St st.Host = codeNames[InsufficientStorage] } - stk := kverify.KubeletStatus(cr) - klog.Infof("%s kubelet status = %s", name, stk) + stk := kverify.ServiceStatus(cr, "kubelet") st.Kubelet = stk.String() // Early exit for worker nodes diff --git a/cmd/minikube/cmd/stop.go b/cmd/minikube/cmd/stop.go index 1079749f3d..d2a4f02287 100644 --- a/cmd/minikube/cmd/stop.go +++ b/cmd/minikube/cmd/stop.go @@ -55,6 +55,7 @@ var stopCmd = &cobra.Command{ func init() { stopCmd.Flags().BoolVar(&stopAll, "all", false, "Set flag to stop all profiles (clusters)") stopCmd.Flags().BoolVar(&keepActive, "keep-context-active", false, "keep the kube-context active after cluster is stopped. Defaults to false.") + stopCmd.Flags().StringVarP(&outputFormat, "output", "o", "text", "Format to print stdout in. Options include: [text,json]") if err := viper.GetViper().BindPFlags(stopCmd.Flags()); err != nil { exit.Error(reason.InternalFlagsBind, "unable to bind flags", err) @@ -63,6 +64,7 @@ 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) diff --git a/cmd/minikube/cmd/unpause.go b/cmd/minikube/cmd/unpause.go index 7d0b53de17..69aa1329bd 100644 --- a/cmd/minikube/cmd/unpause.go +++ b/cmd/minikube/cmd/unpause.go @@ -46,6 +46,7 @@ var unpauseCmd = &cobra.Command{ register.SetEventLogPath(localpath.EventLog(cname)) co := mustload.Running(cname) + out.SetJSON(outputFormat == "json") register.Reg.SetStep(register.Unpausing) klog.Infof("namespaces: %v keys: %v", namespaces, viper.AllSettings()) @@ -106,4 +107,5 @@ var unpauseCmd = &cobra.Command{ func init() { unpauseCmd.Flags().StringSliceVarP(&namespaces, "--namespaces", "n", constants.DefaultNamespaces, "namespaces to unpause") unpauseCmd.Flags().BoolVarP(&allNamespaces, "all-namespaces", "A", false, "If set, unpause all namespaces") + unpauseCmd.Flags().StringVarP(&outputFormat, "output", "o", "text", "Format to print stdout in. Options include: [text,json]") } diff --git a/cmd/minikube/main.go b/cmd/minikube/main.go index 2c18699ec2..648a265654 100644 --- a/cmd/minikube/main.go +++ b/cmd/minikube/main.go @@ -18,17 +18,15 @@ package main import ( "bytes" + "flag" "fmt" "log" "os" "regexp" "strconv" - // initflag must be imported before any other minikube pkg. - // Fix for https://github.com/kubernetes/minikube/issues/4866 - + "github.com/spf13/pflag" "k8s.io/klog/v2" - _ "k8s.io/minikube/pkg/initflag" // Register drivers _ "k8s.io/minikube/pkg/minikube/registry/drvs" @@ -61,6 +59,8 @@ func main() { bridgeLogMessages() defer klog.Flush() + setFlags() + s := stacklog.MustStartFromEnv("STACKLOG_PATH") defer s.Stop() @@ -120,3 +120,35 @@ func (lb machineLogBridge) Write(b []byte) (n int, err error) { } return len(b), nil } + +// setFlags sets the flags +func setFlags() { + // parse flags beyond subcommand - get aroung go flag 'limitations': + // "Flag parsing stops just before the first non-flag argument" (ref: https://pkg.go.dev/flag#hdr-Command_line_flag_syntax) + pflag.CommandLine.ParseErrorsWhitelist.UnknownFlags = true + pflag.CommandLine.AddGoFlagSet(flag.CommandLine) + // avoid 'pflag: help requested' error, as help will be defined later by cobra cmd.Execute() + pflag.BoolP("help", "h", false, "") + pflag.Parse() + + // set default flag value for logtostderr and alsologtostderr but don't override user's preferences + if !pflag.CommandLine.Changed("logtostderr") { + if err := pflag.Set("logtostderr", "false"); err != nil { + klog.Warningf("Unable to set default flag value for logtostderr: %v", err) + } + } + if !pflag.CommandLine.Changed("alsologtostderr") { + if err := pflag.Set("alsologtostderr", "false"); err != nil { + klog.Warningf("Unable to set default flag value for alsologtostderr: %v", err) + } + } + + // make sure log_dir exists if log_file is not also set - the log_dir is mutually exclusive with the log_file option + // ref: https://github.com/kubernetes/klog/blob/52c62e3b70a9a46101f33ebaf0b100ec55099975/klog.go#L491 + if pflag.Lookup("log_file") != nil && pflag.Lookup("log_file").Value.String() == "" && + pflag.Lookup("log_dir") != nil && pflag.Lookup("log_dir").Value.String() != "" { + if err := os.MkdirAll(pflag.Lookup("log_dir").Value.String(), 0755); err != nil { + klog.Warningf("unable to create log directory: %v", err) + } + } +} diff --git a/deploy/addons/helm-tiller/helm-tiller-dp.tmpl b/deploy/addons/helm-tiller/helm-tiller-dp.tmpl index 9c6f273f7f..8608ed1b5f 100644 --- a/deploy/addons/helm-tiller/helm-tiller-dp.tmpl +++ b/deploy/addons/helm-tiller/helm-tiller-dp.tmpl @@ -46,7 +46,7 @@ spec: value: kube-system - name: TILLER_HISTORY_MAX value: "0" - image: gcr.io/kubernetes-helm/tiller:v2.16.8 + image: gcr.io/kubernetes-helm/tiller:v2.16.12 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 diff --git a/deploy/addons/ingress-dns/ingress-dns-pod.yaml b/deploy/addons/ingress-dns/ingress-dns-pod.yaml index 7584775b1d..bd37731fcf 100644 --- a/deploy/addons/ingress-dns/ingress-dns-pod.yaml +++ b/deploy/addons/ingress-dns/ingress-dns-pod.yaml @@ -80,7 +80,7 @@ spec: hostNetwork: true containers: - name: minikube-ingress-dns - image: "cryptexlabs/minikube-ingress-dns:0.2.1" + image: "cryptexlabs/minikube-ingress-dns:0.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 53 diff --git a/deploy/addons/ingress/ingress-dp.yaml.tmpl b/deploy/addons/ingress/ingress-dp.yaml.tmpl index be72e8ab9c..b9786a2043 100644 --- a/deploy/addons/ingress/ingress-dp.yaml.tmpl +++ b/deploy/addons/ingress/ingress-dp.yaml.tmpl @@ -49,7 +49,7 @@ spec: serviceAccountName: ingress-nginx containers: - name: controller - image: us.gcr.io/k8s-artifacts-prod/ingress-nginx/controller:v0.34.1@sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 + image: k8s.gcr.io/ingress-nginx/controller:v0.40.2@sha256:46ba23c3fbaafd9e5bd01ea85b2f921d9f2217be082580edc22e6c704a83f02f imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -141,21 +141,25 @@ webhooks: - name: validate.nginx.ingress.kubernetes.io rules: - apiGroups: - - extensions - networking.k8s.io apiVersions: - v1beta1 + - v1 operations: - CREATE - UPDATE resources: - ingresses failurePolicy: Fail + sideEffects: None + admissionReviewVersions: + - v1 + - v1beta1 clientConfig: service: namespace: kube-system name: ingress-nginx-controller-admission - path: /extensions/v1beta1/ingresses + path: /networking/v1beta1/ingresses --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -248,7 +252,7 @@ spec: spec: containers: - name: patch - image: jettech/kube-webhook-certgen:v1.2.2 + image: docker.io/jettech/kube-webhook-certgen:v1.3.0 imagePullPolicy: args: - patch diff --git a/deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig b/deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig index b1d988d34b..2fc998feb3 100644 --- a/deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig +++ b/deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig @@ -11,7 +11,6 @@ CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_IKHEADERS=y CONFIG_LOG_BUF_SHIFT=18 CONFIG_CGROUPS=y CONFIG_MEMCG=y @@ -57,7 +56,6 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_X86_ACPI_CPUFREQ=y -CONFIG_PCI=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI=y CONFIG_PCCARD=y @@ -86,6 +84,8 @@ CONFIG_SGI_PARTITION=y CONFIG_SUN_PARTITION=y CONFIG_KARMA_PARTITION=y CONFIG_BINFMT_MISC=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y @@ -313,7 +313,6 @@ CONFIG_VMWARE_BALLOON=m CONFIG_VMWARE_VMCI=m CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SPI_ATTRS=y @@ -390,9 +389,9 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_DETECT_IRQ=y CONFIG_SERIAL_8250_RSA=y CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_VIRTIO=y # CONFIG_HW_RANDOM_INTEL is not set # CONFIG_HW_RANDOM_AMD is not set +CONFIG_HW_RANDOM_VIRTIO=y CONFIG_NVRAM=y CONFIG_HPET=y # CONFIG_HPET_MMAP is not set @@ -408,7 +407,6 @@ CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set @@ -447,7 +445,6 @@ CONFIG_RTC_CLASS=y CONFIG_DMADEVICES=y CONFIG_VIRT_DRIVERS=y CONFIG_VIRTIO_PCI=y -CONFIG_VIRTIO_FS=y CONFIG_HYPERV=m CONFIG_HYPERV_UTILS=m CONFIG_HYPERV_BALLOON=m @@ -475,7 +472,6 @@ CONFIG_ZISOFS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_PROC_KCORE=y -CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_HUGETLBFS=y CONFIG_NFS_FS=y @@ -513,10 +509,10 @@ CONFIG_DEBUG_STACK_USAGE=y CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_SCHED_DEBUG is not set CONFIG_SCHEDSTATS=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FTRACE_SYSCALLS=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_PROVIDE_OHCI1394_DMA_INIT=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_DEBUG_BOOT_PARAMS=y CONFIG_OPTIMIZE_INLINING=y -CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y diff --git a/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/sysctl.d/11-tcp-mtu-probing.conf b/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/sysctl.d/11-tcp-mtu-probing.conf new file mode 100644 index 0000000000..c34569dd81 --- /dev/null +++ b/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/sysctl.d/11-tcp-mtu-probing.conf @@ -0,0 +1,3 @@ +# Turn on MTU probing to avoid network hangs when the Docker MTU is larger than +# the host or upstream network MTU. +net.ipv4.tcp_mtu_probing=1 \ No newline at end of file diff --git a/deploy/iso/minikube-iso/configs/minikube_defconfig b/deploy/iso/minikube-iso/configs/minikube_defconfig index c3a8a26c38..d420e19419 100644 --- a/deploy/iso/minikube-iso/configs/minikube_defconfig +++ b/deploy/iso/minikube-iso/configs/minikube_defconfig @@ -21,7 +21,7 @@ BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/patche BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_LATEST_VERSION=n BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.114" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.150" BR2_LINUX_KERNEL_BZIMAGE=y BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash index b7aa49d577..a5d89c8404 100644 --- a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash @@ -5,3 +5,4 @@ sha256 6165ae2ad669d9ec6d317492d30a1511365bd31ad29efae757f19c1828bf75b3 v1.2.8.t sha256 a0965e1492fca558629826f1aa89a9675de3d451cec67540400b30c0bf6ac387 v1.2.10.tar.gz sha256 318886ea1efdec36f088fd6a0a0fe2b2f0ebdfd0066bdb4bd284bad12abc0a41 v1.2.12.tar.gz sha256 0811057ab67b78ce911416e793edaeb14b3f1e105d67b8e67b6302e0eab572e4 v1.2.13.tar.gz +sha256 d30d59e143697aa4f0960205b3f5ac59c573b332f20507740ef2dc0fb5ae8ded v1.3.7.tar.gz diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk index e9af06aab8..828eb81092 100644 --- a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk @@ -3,8 +3,8 @@ # containerd # ################################################################################ -CONTAINERD_BIN_VERSION = v1.2.13 -CONTAINERD_BIN_COMMIT = 7ad184331fa3e55e52b890ea95e65ba581ae3429 +CONTAINERD_BIN_VERSION = v1.3.7 +CONTAINERD_BIN_COMMIT = 8fba4e9a7d01810a393d5d25a3621dc101981175 CONTAINERD_BIN_SITE = https://github.com/containerd/containerd/archive CONTAINERD_BIN_SOURCE = $(CONTAINERD_BIN_VERSION).tar.gz CONTAINERD_BIN_DEPENDENCIES = host-go libgpgme diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash index fc4fd939dd..224e8a5f3d 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash +++ b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.hash @@ -13,3 +13,7 @@ sha256 57e1ee990ef2d5af8b32c33a21b4998682608e3556dcf1d3349666f55e7d95b9 v1.16.1. sha256 23a797762e4544ee7c171ef138cfc1141a3f0acc2838d9965c2a58e53b16c3ae v1.17.0.tar.gz sha256 7967e9218fdfb59d6005a9e19c1668469bc5566c2a35927cffe7de8656bb22c7 v1.17.1.tar.gz sha256 336f5c275e260eaae8187e7250fb960441e8dc90615729354d3c04e699870982 v1.17.3.tar.gz +sha256 865ded95aceb3a33a391b252522682de6b37b39498704c490b3a321dbefaafcb v1.18.0.tar.gz +sha256 794ddc36c2a20fde91fc6cc2c6f02ebdaea85c69b51b67f3994090dbbdbc2a50 v1.18.1.tar.gz +sha256 25dc558fbabc987bd58c7eab5230121b258a7b0eb34a49dc6595f1c6f3969116 v1.18.2.tar.gz +sha256 d5c6442e3990938badc966cdd1eb9ebe2fc11345452c233aa0d87ca38fbeed81 v1.18.3.tar.gz diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk index 814b31e4dd..0093a7c3cf 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk +++ b/deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk @@ -4,8 +4,8 @@ # ################################################################################ -CRIO_BIN_VERSION = v1.17.3 -CRIO_BIN_COMMIT = 1b192d16cb1cd04ee8fbf60ae2c06bccc5eac5c8 +CRIO_BIN_VERSION = v1.18.3 +CRIO_BIN_COMMIT = 61de18161fb4ccda720768c001713592b5a04e46 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 @@ -33,7 +33,7 @@ endef define CRIO_BIN_BUILD_CMDS mkdir -p $(@D)/bin - $(CRIO_BIN_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) GIT_COMMIT=$(CRIO_BIN_COMMIT) PREFIX=/usr binaries + $(CRIO_BIN_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) COMMIT_NO=$(CRIO_BIN_COMMIT) PREFIX=/usr binaries endef define CRIO_BIN_INSTALL_TARGET_CMDS diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio.conf b/deploy/iso/minikube-iso/package/crio-bin/crio.conf index 36dc1725ea..efbfae47d6 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio.conf +++ b/deploy/iso/minikube-iso/package/crio-bin/crio.conf @@ -35,8 +35,15 @@ storage_driver = "overlay" # the kubelet. The log directory specified must be an absolute directory. log_dir = "/var/log/crio/pods" -# Location for CRI-O to lay down the version file -version_file = "/var/lib/crio/version" +# Location for CRI-O to lay down the temporary version file. +# It is used to check if crio wipe should wipe containers, which should +# always happen on a node reboot +version_file = "/var/run/crio/version" + +# Location for CRI-O to lay down the persistent version file. +# It is used to check if crio wipe should wipe images, which should +# only happen when CRI-O has been upgraded +version_file_persist = "/var/lib/crio/version" # The crio.api table contains settings for the kubelet/gRPC interface. [crio.api] @@ -44,13 +51,11 @@ version_file = "/var/lib/crio/version" # Path to AF_LOCAL socket on which CRI-O will listen. listen = "/var/run/crio/crio.sock" -# Host IP considered as the primary IP to use by CRI-O for things such as host network IP. -host_ip = "" - # IP address on which the stream server will listen. stream_address = "127.0.0.1" -# The port on which the stream server will listen. +# The port on which the stream server will listen. If the port is set to "0", then +# CRI-O will allocate a random free port number. stream_port = "0" # Enable encrypted TLS transport of the stream server. @@ -94,6 +99,10 @@ default_runtime = "runc" # If true, the runtime will not use pivot_root, but instead use MS_MOVE. no_pivot = false +# decryption_keys_path is the path where the keys required for +# image decryption are stored. This option supports live configuration reload. +decryption_keys_path = "/etc/crio/keys/" + # Path to the conmon binary, used for monitoring the OCI runtime. # Will be searched for using $PATH if empty. conmon = "/usr/libexec/crio/conmon" @@ -107,17 +116,26 @@ conmon_env = [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", ] +# Additional environment variables to set for all the +# containers. These are overridden if set in the +# container image spec or in the container runtime configuration. +default_env = [ +] + # If true, SELinux will be used for pod separation on the host. selinux = false # Path to the seccomp.json profile which is used as the default seccomp profile # for the runtime. If not specified, then the internal default seccomp profile -# will be used. +# will be used. This option supports live configuration reload. seccomp_profile = "" # Used to change the name of the default AppArmor profile of CRI-O. The default -# profile name is "crio-default-" followed by the version string of CRI-O. -apparmor_profile = "crio-default-1.16.1" +# profile name is "crio-default". This profile only takes effect if the user +# does not specify a profile via the Kubernetes Pod's metadata annotation. If +# the profile is set to "unconfined", then this equals to disabling AppArmor. +# This option supports live configuration reload. +apparmor_profile = "crio-default" # Cgroup management implementation used for the runtime. cgroup_manager = "systemd" @@ -126,17 +144,15 @@ cgroup_manager = "systemd" # only the capabilities defined in the containers json file by the user/kube # will be added. default_capabilities = [ - "CHOWN", - "DAC_OVERRIDE", - "FSETID", - "FOWNER", - "NET_RAW", - "SETGID", - "SETUID", - "SETPCAP", - "NET_BIND_SERVICE", - "SYS_CHROOT", - "KILL", + "CHOWN", + "DAC_OVERRIDE", + "FSETID", + "FOWNER", + "SETGID", + "SETUID", + "SETPCAP", + "NET_BIND_SERVICE", + "KILL", ] # List of default sysctls. If it is empty or commented out, only the sysctls @@ -151,8 +167,10 @@ default_sysctls = [ additional_devices = [ ] -# Path to OCI hooks directories for automatically executed hooks. +# Path to OCI hooks directories for automatically executed hooks. If one of the +# directories does not exist, then CRI-O will automatically skip them. hooks_dir = [ + "/usr/share/containers/oci/hooks.d", ] # List of default mounts for each container. **Deprecated:** this option will @@ -200,9 +218,13 @@ bind_mount_prefix = "" read_only = false # Changes the verbosity of the logs based on the level it is set to. Options -# are fatal, panic, error, warn, info, and debug. This option supports live -# configuration reload. -log_level = "error" +# are fatal, panic, error, warn, info, debug and trace. This option supports +# live configuration reload. +log_level = "info" + +# Filter the log messages by the provided regular expression. +# This option supports live configuration reload. +log_filter = "" # The UID mappings for the user namespace of each container. A range is # specified in the form containerUID:HostUID:Size. Multiple ranges must be @@ -215,12 +237,23 @@ uid_mappings = "" gid_mappings = "" # The minimal amount of time in seconds to wait before issuing a timeout -# regarding the proper termination of the container. -ctr_stop_timeout = 0 +# regarding the proper termination of the container. The lowest possible +# value is 30s, whereas lower values are not considered by CRI-O. +ctr_stop_timeout = 30 -# ManageNetworkNSLifecycle determines whether we pin and remove network namespace -# and manage its lifecycle. -manage_network_ns_lifecycle = false +# **DEPRECATED** this option is being replaced by manage_ns_lifecycle, which is described below. +# manage_network_ns_lifecycle = false + +# manage_ns_lifecycle determines whether we pin and remove namespaces +# and manage their lifecycle +manage_ns_lifecycle = false + +# The directory where the state of the managed namespaces gets tracked. +# Only used when manage_ns_lifecycle is true. +namespaces_dir = "/var/run" + +# pinns_path is the path to find the pinns binary, which is needed to manage namespace lifecycle +pinns_path = "/usr/bin/pinns" # The "crio.runtime.runtimes" table defines a list of OCI compatible runtimes. # The runtime to use is picked based on the runtime_handler provided by the CRI. @@ -281,7 +314,7 @@ global_auth_file = "" # The image used to instantiate infra containers. # This option supports live configuration reload. -pause_image = "k8s.gcr.io/pause:3.1" +pause_image = "k8s.gcr.io/pause:3.2" # The path to a file containing credentials specific for pulling the pause_image from # above. The file is similar to that of /var/lib/kubelet/config.json @@ -324,6 +357,10 @@ registries = [ # CNI plugins. [crio.network] +# The default CNI network name to be selected. If not set or "", then +# CRI-O will pick-up the first one found in network_dir. +# cni_default_network = "" + # Path to the directory where CNI configuration files are located. network_dir = "/etc/cni/net.d/" diff --git a/deploy/iso/minikube-iso/package/crio-bin/crio.conf.default b/deploy/iso/minikube-iso/package/crio-bin/crio.conf.default index e456ca42da..2696dc4a10 100644 --- a/deploy/iso/minikube-iso/package/crio-bin/crio.conf.default +++ b/deploy/iso/minikube-iso/package/crio-bin/crio.conf.default @@ -35,8 +35,15 @@ # the kubelet. The log directory specified must be an absolute directory. log_dir = "/var/log/crio/pods" -# Location for CRI-O to lay down the version file -version_file = "/var/lib/crio/version" +# Location for CRI-O to lay down the temporary version file. +# It is used to check if crio wipe should wipe containers, which should +# always happen on a node reboot +version_file = "/var/run/crio/version" + +# Location for CRI-O to lay down the persistent version file. +# It is used to check if crio wipe should wipe images, which should +# only happen when CRI-O has been upgraded +version_file_persist = "/var/lib/crio/version" # The crio.api table contains settings for the kubelet/gRPC interface. [crio.api] @@ -44,13 +51,11 @@ version_file = "/var/lib/crio/version" # Path to AF_LOCAL socket on which CRI-O will listen. listen = "/var/run/crio/crio.sock" -# Host IP considered as the primary IP to use by CRI-O for things such as host network IP. -host_ip = "" - # IP address on which the stream server will listen. stream_address = "127.0.0.1" -# The port on which the stream server will listen. +# The port on which the stream server will listen. If the port is set to "0", then +# CRI-O will allocate a random free port number. stream_port = "0" # Enable encrypted TLS transport of the stream server. @@ -94,6 +99,10 @@ default_runtime = "runc" # If true, the runtime will not use pivot_root, but instead use MS_MOVE. no_pivot = false +# decryption_keys_path is the path where the keys required for +# image decryption are stored. This option supports live configuration reload. +decryption_keys_path = "/etc/crio/keys/" + # Path to the conmon binary, used for monitoring the OCI runtime. # Will be searched for using $PATH if empty. conmon = "" @@ -107,36 +116,43 @@ conmon_env = [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", ] +# Additional environment variables to set for all the +# containers. These are overridden if set in the +# container image spec or in the container runtime configuration. +default_env = [ +] + # If true, SELinux will be used for pod separation on the host. selinux = false # Path to the seccomp.json profile which is used as the default seccomp profile # for the runtime. If not specified, then the internal default seccomp profile -# will be used. +# will be used. This option supports live configuration reload. seccomp_profile = "" # Used to change the name of the default AppArmor profile of CRI-O. The default -# profile name is "crio-default-" followed by the version string of CRI-O. -apparmor_profile = "crio-default-1.16.1" +# profile name is "crio-default". This profile only takes effect if the user +# does not specify a profile via the Kubernetes Pod's metadata annotation. If +# the profile is set to "unconfined", then this equals to disabling AppArmor. +# This option supports live configuration reload. +apparmor_profile = "crio-default" # Cgroup management implementation used for the runtime. -cgroup_manager = "cgroupfs" +cgroup_manager = "systemd" # List of default capabilities for containers. If it is empty or commented out, # only the capabilities defined in the containers json file by the user/kube # will be added. default_capabilities = [ - "CHOWN", - "DAC_OVERRIDE", - "FSETID", - "FOWNER", - "NET_RAW", - "SETGID", - "SETUID", - "SETPCAP", - "NET_BIND_SERVICE", - "SYS_CHROOT", - "KILL", + "CHOWN", + "DAC_OVERRIDE", + "FSETID", + "FOWNER", + "SETGID", + "SETUID", + "SETPCAP", + "NET_BIND_SERVICE", + "KILL", ] # List of default sysctls. If it is empty or commented out, only the sysctls @@ -151,8 +167,10 @@ default_sysctls = [ additional_devices = [ ] -# Path to OCI hooks directories for automatically executed hooks. +# Path to OCI hooks directories for automatically executed hooks. If one of the +# directories does not exist, then CRI-O will automatically skip them. hooks_dir = [ + "/usr/share/containers/oci/hooks.d", ] # List of default mounts for each container. **Deprecated:** this option will @@ -200,9 +218,13 @@ bind_mount_prefix = "" read_only = false # Changes the verbosity of the logs based on the level it is set to. Options -# are fatal, panic, error, warn, info, and debug. This option supports live -# configuration reload. -log_level = "error" +# are fatal, panic, error, warn, info, debug and trace. This option supports +# live configuration reload. +log_level = "info" + +# Filter the log messages by the provided regular expression. +# This option supports live configuration reload. +log_filter = "" # The UID mappings for the user namespace of each container. A range is # specified in the form containerUID:HostUID:Size. Multiple ranges must be @@ -215,12 +237,23 @@ uid_mappings = "" gid_mappings = "" # The minimal amount of time in seconds to wait before issuing a timeout -# regarding the proper termination of the container. -ctr_stop_timeout = 0 +# regarding the proper termination of the container. The lowest possible +# value is 30s, whereas lower values are not considered by CRI-O. +ctr_stop_timeout = 30 -# ManageNetworkNSLifecycle determines whether we pin and remove network namespace -# and manage its lifecycle. -manage_network_ns_lifecycle = false +# **DEPRECATED** this option is being replaced by manage_ns_lifecycle, which is described below. +# manage_network_ns_lifecycle = false + +# manage_ns_lifecycle determines whether we pin and remove namespaces +# and manage their lifecycle +manage_ns_lifecycle = false + +# The directory where the state of the managed namespaces gets tracked. +# Only used when manage_ns_lifecycle is true. +namespaces_dir = "/var/run" + +# pinns_path is the path to find the pinns binary, which is needed to manage namespace lifecycle +pinns_path = "" # The "crio.runtime.runtimes" table defines a list of OCI compatible runtimes. # The runtime to use is picked based on the runtime_handler provided by the CRI. @@ -281,7 +314,7 @@ global_auth_file = "" # The image used to instantiate infra containers. # This option supports live configuration reload. -pause_image = "k8s.gcr.io/pause:3.1" +pause_image = "k8s.gcr.io/pause:3.2" # The path to a file containing credentials specific for pulling the pause_image from # above. The file is similar to that of /var/lib/kubelet/config.json @@ -323,6 +356,10 @@ image_volumes = "mkdir" # CNI plugins. [crio.network] +# The default CNI network name to be selected. If not set or "", then +# CRI-O will pick-up the first one found in network_dir. +# cni_default_network = "" + # Path to the directory where CNI configuration files are located. network_dir = "/etc/cni/net.d/" diff --git a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash index 6b29252d2c..35ea54f47c 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.hash @@ -21,3 +21,4 @@ sha256 1c03c78be198d9085e7dd6806fc5d93264baaf0c7ea17f584d00af48eae508ee docker- sha256 7c1576a0bc749418d1423d2b78c8920b5d61f849789904612862dd118742e82b docker-19.03.10.tgz sha256 0f4336378f61ed73ed55a356ac19e46699a995f2aff34323ba5874d131548b9e docker-19.03.11.tgz sha256 88de1b87b8a2582fe827154899475a72fb707c5793cfb39d2a24813ba1f31197 docker-19.03.12.tgz +sha256 ddb13aff1fcdcceb710bf71a210169b9c1abfd7420eeaf42cf7975f8fae2fcc8 docker-19.03.13.tgz diff --git a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk index 43841bf57c..71c537eaed 100644 --- a/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk +++ b/deploy/iso/minikube-iso/package/docker-bin/docker-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -DOCKER_BIN_VERSION = 19.03.12 +DOCKER_BIN_VERSION = 19.03.13 DOCKER_BIN_SITE = https://download.docker.com/linux/static/stable/x86_64 DOCKER_BIN_SOURCE = docker-$(DOCKER_BIN_VERSION).tgz diff --git a/deploy/kicbase/11-tcp-mtu-probing.conf b/deploy/kicbase/11-tcp-mtu-probing.conf new file mode 100644 index 0000000000..c34569dd81 --- /dev/null +++ b/deploy/kicbase/11-tcp-mtu-probing.conf @@ -0,0 +1,3 @@ +# Turn on MTU probing to avoid network hangs when the Docker MTU is larger than +# the host or upstream network MTU. +net.ipv4.tcp_mtu_probing=1 \ No newline at end of file diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 13b32a3629..13bd51a0e0 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -15,14 +15,15 @@ # kind node base image # # For systemd + docker configuration used below, see the following references: -# https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/ +# https://systemd.io/CONTAINER_INTERFACE/ # start from ubuntu 20.04, this image is reasonably small as a starting point # for a kubernetes node image, it doesn't contain much we don't need -FROM ubuntu:focal-20200423 +FROM ubuntu:focal-20200925 # copy in static files (configs, scripts) COPY 10-network-security.conf /etc/sysctl.d/10-network-security.conf +COPY 11-tcp-mtu-probing.conf /etc/sysctl.d/11-tcp-mtu-probing.conf COPY clean-install /usr/local/bin/clean-install COPY entrypoint /usr/local/bin/entrypoint @@ -37,6 +38,7 @@ COPY entrypoint /usr/local/bin/entrypoint # - packages needed for kubernetes components # - packages needed by the container runtime # - misc packages kind uses itself +# - packages that provide semi-core kubernetes functionality # After installing packages we cleanup by: # - removing unwanted systemd services # - disabling kmsg in journald (these log entries would be confusing) @@ -54,8 +56,9 @@ RUN echo "Ensuring scripts are executable ..." \ && DEBIAN_FRONTEND=noninteractive clean-install \ systemd \ conntrack iptables iproute2 ethtool socat util-linux mount ebtables udev kmod \ - libseccomp2 \ + libseccomp2 pigz \ bash ca-certificates curl rsync \ + nfs-common \ && find /lib/systemd/system/sysinit.target.wants/ -name "systemd-tmpfiles-setup.service" -delete \ && rm -f /lib/systemd/system/multi-user.target.wants/* \ && rm -f /etc/systemd/system/*.wants/* \ @@ -73,7 +76,7 @@ RUN echo "Ensuring scripts are executable ..." \ && sed -i /etc/nsswitch.conf -re 's#^(hosts:\s*).*#\1dns files#' # tell systemd that it is in docker (it will check for the container env) -# https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/ +# https://systemd.io/CONTAINER_INTERFACE/ ENV container docker # systemd exits on SIGRTMIN+3, not SIGTERM (which re-executes it) # https://bugzilla.redhat.com/show_bug.cgi?id=1201657 @@ -92,14 +95,17 @@ RUN clean-install \ lz4 \ gnupg \ sudo \ - docker.io \ - containerd \ openssh-server \ dnsutils \ - runc \ # libglib2.0-0 is required for conmon, which is required for podman libglib2.0-0 +# install docker +RUN sh -c "echo 'deb https://download.docker.com/linux/ubuntu focal stable' > /etc/apt/sources.list.d/docker.list" && \ + curl -L https://download.docker.com/linux/ubuntu/gpg -o docker.key && \ + apt-key add - < docker.key && \ + clean-install docker-ce docker-ce-cli containerd.io + # Install cri-o/podman dependencies: RUN sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" && \ curl -LO https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_20.04/Release.key && \ @@ -118,7 +124,7 @@ RUN sh -c "echo 'deb https://dl.bintray.com/afbjorklund/podman focal main' > /et apt-key add - < afbjorklund-public.key.asc && \ clean-install podman=1.9.3~1 -RUN mkdir -p /usr/lib/cri-o-runc/sbin && cp /usr/sbin/runc /usr/lib/cri-o-runc/sbin/runc +RUN mkdir -p /usr/lib/cri-o-runc/sbin && cp /usr/bin/runc /usr/lib/cri-o-runc/sbin/runc # automount service COPY automount/minikube-automount /usr/sbin/minikube-automount diff --git a/deploy/kicbase/entrypoint b/deploy/kicbase/entrypoint index 5d7770627c..fea0343c35 100755 --- a/deploy/kicbase/entrypoint +++ b/deploy/kicbase/entrypoint @@ -80,9 +80,17 @@ fix_cgroup_mounts() { # environment by doing another bind mount for each subsystem. local cgroup_mounts - # NOTE: This extracts fields 4 and on + # This regexp finds all /sys/fs/cgroup mounts that are cgroupfs and mounted somewhere other than / - extracting fields 4+ # See https://man7.org/linux/man-pages/man5/proc.5.html for field names - cgroup_mounts=$(egrep -o '(/docker|libpod_parent|/kubepods).*/sys/fs/cgroup.*' /proc/self/mountinfo || true) + + # Example inputs: + # + # Docker: /docker/562a56986a84b3cd38d6a32ac43fdfcc8ad4d2473acf2839cbf549273f35c206 /sys/fs/cgroup/devices rw,nosuid,nodev,noexec,relatime shared:143 master:23 - cgroup devices rw,devices + # podman: /libpod_parent/libpod-73a4fb9769188ae5dc51cb7e24b9f2752a4af7b802a8949f06a7b2f2363ab0e9 ... + # Cloud Shell: /kubepods/besteffort/pod3d6beaa3004913efb68ce073d73494b0/accdf94879f0a494f317e9a0517f23cdd18b35ff9439efd0175f17bbc56877c4 /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime master:19 - cgroup cgroup rw,memory + # GitHub actions #9304: /actions_job/0924fbbcf7b18d2a00c171482b4600747afc367a9dfbeac9d6b14b35cda80399 /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:263 master:24 - cgroup cgroup rw,memory + + cgroup_mounts=$(grep -E -o '/[[:alnum:]].* /sys/fs/cgroup.*.*cgroup' /proc/self/mountinfo || true) if [[ -n "${cgroup_mounts}" ]]; then local mount_root diff --git a/deploy/minikube/releases.json b/deploy/minikube/releases.json index 74ddc029ba..fe61eba237 100644 --- a/deploy/minikube/releases.json +++ b/deploy/minikube/releases.json @@ -1,4 +1,20 @@ [ + { + "name": "v1.14.2", + "checksums": { + "darwin": "5d72bea6159e41f30865492298aa0e37af164ef22e56165ac78be179947d3b9d", + "linux": "f38f8da05a940589989eb0e85492edfe146caf57f9cfbb4ebb06de877f828f2e", + "windows": "cafd7a10a950d3c63425758b1afb3eaad12a4a5abd586fb83afc27a832a2c62b" + } + }, + { + "name": "v1.14.1", + "checksums": { + "darwin": "d07db8343d06caa484a645bdd84d72d9babba81a18a7a50729616571b5e6702a", + "linux": "a7ad2b00389146a5b1833a35a96e50a224e7b382d072ee771b425eb6719bf109", + "windows": "71217e883e2d1c17b64415fbabef6bf199c7b03f88f66478c659d199c315e315" + } + }, { "name": "v1.14.0", "checksums": { diff --git a/enhancements/proposed/20201030-tracing/README.md b/enhancements/proposed/20201030-tracing/README.md new file mode 100644 index 0000000000..767a529034 --- /dev/null +++ b/enhancements/proposed/20201030-tracing/README.md @@ -0,0 +1,85 @@ +# Tracing minikube + +* First proposed: Oct 30 2020 +* Authors: Priya Wadhwa (priyawadhwa@) + +## Reviewer Priorities + +Please review this proposal with the following priorities: + +* Does this fit with minikube's [principles](https://minikube.sigs.k8s.io/docs/concepts/principles/)? +* Are there other approaches to consider? +* Could the implementation be made simpler? +* Are there usability, reliability, or technical debt concerns? + +Please leave the above text in your proposal as instructions to the reader. + +## Summary + +This proposal covers using the [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-go) API to provide tracing data for minikube. +This data would be useful for maintainers to identify areas for performance improvements. +This data would also be used to create a dashboard of current performance and would allow us to catch performance regressions more quickly. + +## Goals + +* Trace data is can be collected and exported for `minikube start` +* `minikube start` can either create a new Trace or can read from a file and append data to an existing Trace +* It is easy for users to add their own exporters if they wish to export data to their own service +* We are able to create dashboards around `minikube start` performance that will alert maintainers if regressions happen + +## Non-Goals + +* Collecting trace data for the minikube cluster while it is running + +## Design Details + +There are two pieces to the design: collecting the data and exporting the data. + +### Collecting Data +Luckily, we already have a lot of this infrastructure set up for JSON output. +We know when a new substep of `minikube start` has started, because we call it explictly via `register.SetStep`. +We also know that substep has ended when a new substep begins. + +We can start new spans whenever `register.SetStep` is called, and thus collect tracing data. + +### Exporting Data +OpenTelemetry supports a variety of [user-contributed exporters](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/master/instrumentation). +It would be a lot of work to implement all of them ourselves. + +Instead, I propose writing a simple `GetExporter` function that would return whatever exporter is requested via a `--trace` flag. + +So, something like this would tell minikube to use the `stackdriver` exporter: + +``` +minikube start --trace=stackdriver +``` + +Users can then contribute to minikube if they need to use an exporter that isn't currently provided. + +Exporters also will require additional information to make sure data is sent to the correct place. +This could include things like, but not limited to: +* project ID +* zone + +Since it could get messy passing in these things as flags to `minikube start`, I propose that these values are set via environment variable. +All environment variables will be of the form: + +``` +MINIKUBE_TRACE_PROJECT_ID +``` +and the user-contributed code is responsible for parsing the environment variables correctly and returning the exporter. + +### Testing Plan + +I will set up a dashboard and alerting system in the minikube GCP project. +If we are collecting data at a consistent rate, and the dashboard is populated, we will know that this has worked. + + +## Alternatives Considered + +### Building a Wrapper Binary +A wrapper binary could run `minikube start --output json` and collect the same data, and then export it to whatever service we need. + +A large advantage of this is that the minikube code doesn't have to be changed at all for this to work. + +However, I decided against this in case other tools that consume minikube or users want to collect this data as well -- it is much easier to pass in a flag to minikube than to download another binary. diff --git a/go.mod b/go.mod index b9919572fe..8292131c30 100644 --- a/go.mod +++ b/go.mod @@ -1,37 +1,40 @@ module k8s.io/minikube -go 1.13 +go 1.15 require ( cloud.google.com/go/storage v1.8.0 + github.com/Azure/azure-sdk-for-go v42.3.0+incompatible github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 // indirect - github.com/Parallels/docker-machine-parallels v1.3.0 + github.com/Parallels/docker-machine-parallels/v2 v2.0.1 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/blang/semver v3.5.0+incompatible github.com/c4milo/gotoolkit v0.0.0-20170318115440-bcc06269efa9 // indirect github.com/cenkalti/backoff v2.2.1+incompatible + github.com/cenkalti/backoff/v4 v4.1.0 github.com/cheggaaa/pb/v3 v3.0.1 github.com/cloudevents/sdk-go/v2 v2.1.0 github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57 // indirect github.com/docker/cli v0.0.0-20200303162255-7d407207c304 // indirect - github.com/docker/docker v1.13.1 + github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible github.com/docker/go-units v0.4.0 - github.com/docker/machine v0.7.1-0.20190902101342-b170508bf44c // v0.16.2^ + github.com/docker/machine v0.16.2 // v0.16.2^ github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f // indirect github.com/evanphx/json-patch v4.5.0+incompatible // indirect + github.com/go-logr/logr v0.3.0 // indirect github.com/go-ole/go-ole v1.2.4 // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 - github.com/google/go-cmp v0.4.1 + github.com/google/go-cmp v0.5.2 github.com/google/go-containerregistry v0.0.0-20200601195303-96cf69f03a3c github.com/google/go-github v17.0.0+incompatible github.com/google/go-github/v32 v32.1.0 github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b github.com/google/uuid v1.1.1 github.com/googleapis/gnostic v0.3.0 // indirect - github.com/hashicorp/go-getter v1.4.0 + github.com/hashicorp/go-getter v1.4.2 github.com/hashicorp/go-retryablehttp v0.6.6 github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 // indirect github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8 @@ -71,8 +74,9 @@ require ( github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 golang.org/x/build v0.0.0-20190927031335-2835ba2e683f - golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 + golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 + golang.org/x/mod v0.3.0 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a golang.org/x/sys v0.0.0-20200523222454-059865788121 @@ -84,7 +88,7 @@ require ( k8s.io/api v0.17.4 k8s.io/apimachinery v0.17.4 k8s.io/client-go v0.17.4 - k8s.io/klog/v2 v2.3.0 + k8s.io/klog/v2 v2.4.0 k8s.io/kubectl v0.0.0 k8s.io/kubernetes v1.18.5 sigs.k8s.io/sig-storage-lib-external-provisioner v4.0.0+incompatible // indirect @@ -96,7 +100,7 @@ replace ( github.com/docker/docker => github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20200810185219-7d42fed1b770 github.com/google/go-containerregistry => github.com/afbjorklund/go-containerregistry v0.0.0-20200902152226-fbad78ec2813 - github.com/hashicorp/go-getter => github.com/afbjorklund/go-getter v1.4.1-0.20190910175809-eb9f6c26742c + github.com/hashicorp/go-getter => github.com/afbjorklund/go-getter v1.4.1-0.20201020145846-c0da14b4bffe github.com/samalba/dockerclient => github.com/sayboras/dockerclient v1.0.0 k8s.io/api => k8s.io/api v0.17.3 k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.17.3 diff --git a/go.sum b/go.sum index 610ae24e08..ca950495ac 100644 --- a/go.sum +++ b/go.sum @@ -51,6 +51,7 @@ github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v42.3.0+incompatible h1:PAHkmPqd/vQV4LJcqzEUM1elCyTMWjbrO8oFMl0dvBE= github.com/Azure/azure-sdk-for-go v42.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= @@ -102,8 +103,8 @@ github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb0 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= -github.com/Parallels/docker-machine-parallels v1.3.0 h1:RG1fyf3v1GwXMCeHRiZkB4tL9phFZEv6ixcvRZ1raN8= -github.com/Parallels/docker-machine-parallels v1.3.0/go.mod h1:HCOMm3Hulq/xuEVQMyZOuQlA+dSZpFY5kdCTZWjMVis= +github.com/Parallels/docker-machine-parallels/v2 v2.0.1 h1:3Rj+4tcm/UqMU5g2bLJmpxD0ssn1BB5am4Cd6yUDbVI= +github.com/Parallels/docker-machine-parallels/v2 v2.0.1/go.mod h1:NKwI5KryEmEHMZVj80t9JQcfXWZp4/ZYNBuw4C5sQ9E= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -119,8 +120,8 @@ github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdc github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= github.com/afbjorklund/go-containerregistry v0.0.0-20200902152226-fbad78ec2813 h1:0tskN1ipU/BBrpoEIy0rdZS9jf5+wdP6IMRak8Iu/YE= github.com/afbjorklund/go-containerregistry v0.0.0-20200902152226-fbad78ec2813/go.mod h1:npTSyywOeILcgWqd+rvtzGWflIPPcBQhYoOONaY4ltM= -github.com/afbjorklund/go-getter v1.4.1-0.20190910175809-eb9f6c26742c h1:18gEt7qzn7CW7qMkfPTFyyotlPbvPQo9o4IDV8jZqP4= -github.com/afbjorklund/go-getter v1.4.1-0.20190910175809-eb9f6c26742c/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= +github.com/afbjorklund/go-getter v1.4.1-0.20201020145846-c0da14b4bffe h1:TdcuDqk4ArmYI8cbeeL/RM5BPciDOaWpGZoPoT3OziQ= +github.com/afbjorklund/go-getter v1.4.1-0.20201020145846-c0da14b4bffe/go.mod h1:3Ao9Hol5VJsmwJV5BF1GUrONbaOUmA+m1Nj2+0LuMAY= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= @@ -196,6 +197,8 @@ github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oD github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.0 h1:c8LkOFQTzuO0WBM/ae5HdGQuZPfPxp7lqBRwQRm4fSc= +github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c/go.mod h1:Xe6ZsFhtM8HrDku0pxJ3/Lr51rwykrzgFwpmTzleatY= @@ -256,6 +259,7 @@ github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfc github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= @@ -354,6 +358,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.3.0 h1:q4c+kbcR0d5rSurhBR8dIgieOaYpXtsdTYfx22Cu6rs= +github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= @@ -516,6 +522,8 @@ github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= @@ -615,6 +623,8 @@ github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PF github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= @@ -1113,6 +1123,7 @@ github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lP github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -1195,6 +1206,8 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1640,8 +1653,8 @@ k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUc k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.3.0 h1:WmkrnW7fdrm0/DMClc+HIxtftvxVIPAhlVwMQo5yLco= -k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-aggregator v0.17.3/go.mod h1:1dMwMFQbmH76RKF0614L7dNenMl3dwnUJuOOyZ3GMXA= k8s.io/kube-controller-manager v0.17.3/go.mod h1:22B/TsgVviuCVuNwUrqgyTi5D4AYjMFaK9c8h1oonkY= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= diff --git a/hack/jenkins/common.sh b/hack/jenkins/common.sh index 3742bfd0a4..fdab1c3015 100755 --- a/hack/jenkins/common.sh +++ b/hack/jenkins/common.sh @@ -31,7 +31,7 @@ export KUBECONFIG="${TEST_HOME}/kubeconfig" export PATH=$PATH:"/usr/local/bin/:/usr/local/go/bin/:$GOPATH/bin" # installing golang so we could do go get for gopogh -sudo ./installers/check_install_golang.sh "1.14.6" "/usr/local" || true +sudo ./installers/check_install_golang.sh "1.15.2" "/usr/local" || true docker rm -f -v $(docker ps -aq) >/dev/null 2>&1 || true docker volume prune -f || true @@ -47,7 +47,7 @@ echo "test home: ${TEST_HOME}" echo "sudo: ${SUDO_PREFIX}" echo "kernel: $(uname -v)" echo "uptime: $(uptime)" -# Setting KUBECONFIG prevents the version ceck from erroring out due to permission issues +# Setting KUBECONFIG prevents the version check from erroring out due to permission issues echo "kubectl: $(env KUBECONFIG=${TEST_HOME} kubectl version --client --short=true)" echo "docker: $(docker version --format '{{ .Client.Version }}')" echo "podman: $(sudo podman version --format '{{.Version}}' || true)" diff --git a/hack/kicbase_version/release_kicbase_version.go b/hack/kicbase_version/release_kicbase_version.go new file mode 100644 index 0000000000..c440502ca8 --- /dev/null +++ b/hack/kicbase_version/release_kicbase_version.go @@ -0,0 +1,231 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +The script releases current kic base image as stable, ie: + - strips current version suffix starting from '-' in pkg/drivers/kic/types.go => release version + (eg, 'v0.0.13-snapshot1' -> 'v0.0.13') + - makes sure current kic base image exists locally, tries to pull one if not + - tags current kic base image with the release version, and + - pushes it to all relevant container registries + +The script requires following credentials as env variables (injected by Jenkins credential provider): + @GCR (ref: https://cloud.google.com/container-registry/docs/advanced-authentication): + - GCR_USERNAME=: GCR username, eg: + = "oauth2accesstoken" if Access Token is used for GCR_TOKEN, or + = "_json_key" if JSON Key File is used for GCR_TOKEN + - GCR_TOKEN=: GCR JSON token + + @Docker (ref: https://docs.docker.com/docker-hub/access-tokens/) + - DOCKER_USERNAME=: Docker username + - DOCKER_TOKEN=: Docker personal access token or password + + @GitHub (ref: https://docs.github.com/en/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages) + - GITHUB_USERNAME=: GitHub username + - GITHUB_TOKEN=: GitHub [personal] access token +*/ + +package main + +import ( + "bytes" + "context" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "os/exec" + "regexp" + "strings" + "time" + + "k8s.io/klog/v2" + + "github.com/pkg/errors" +) + +const ( + // default context timeout + cxTimeout = 600 * time.Second +) + +var ( + kicFile = "../../pkg/drivers/kic/types.go" + kicVersionRE = `Version = "(.*)"` + + // keep list of registries in sync with those in kicFile + registries = []registry{ + { + name: "Google Cloud Container Registry", + image: "gcr.io/k8s-minikube/kicbase", + username: os.Getenv("GCR_USERNAME"), + password: os.Getenv("GCR_TOKEN"), + }, + { + name: "Docker Hub Container Registry", + image: "docker.io/kicbase/stable", + username: os.Getenv("DOCKER_USERNAME"), + password: os.Getenv("DOCKER_TOKEN"), + }, + { + name: "GitHub Packages Registry", + image: "docker.pkg.github.com/kubernetes/minikube/kicbase", + username: os.Getenv("GITHUB_USERNAME"), + password: os.Getenv("GITHUB_TOKEN"), + }, + } + + run = func(cmd *exec.Cmd, stdin io.Reader) error { + cmd.Stdin = stdin + var out bytes.Buffer + cmd.Stderr = &out + if err := cmd.Run(); err != nil { + return errors.Errorf("%s: %s", err.Error(), out.String()) + } + return nil + } +) + +// container registry name, image path, credentials, and updated flag +type registry struct { + name string + image string + username string + password string + updated bool +} + +func (r *registry) setUpdated(updated bool) { + r.updated = updated +} + +func main() { + ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) + defer cancel() + + // write log statements to stderr instead of to files + if err := flag.Set("logtostderr", "true"); err != nil { + fmt.Printf("Error setting 'logtostderr' klog flag: %v", err) + } + flag.Parse() + defer klog.Flush() + + // determine current kic base image version + vCurrent, err := getKICVersion() + if err != nil { + klog.Fatalf("failed getting current kic base image version: %v", err) + } + if len(vCurrent) == 0 { + klog.Fatalf("cannot determine current kic base image version") + } + klog.Infof("current kic base image version: %s", vCurrent) + + // determine release kic base image version + vRelease := strings.Split(vCurrent, "-")[0] + klog.Infof("release kic base image version: %s", vRelease) + + // prepare local kic base image + image, err := prepareImage(ctx, vCurrent, vRelease) + if err != nil { + klog.Fatalf("failed preparing local kic base reference image: %v", err) + } + klog.Infof("local kic base reference image: %s", image) + + // update registries + if updated := updateRegistries(ctx, image, vRelease); !updated { + klog.Fatalf("failed updating all registries") + } +} + +// updateRegistries tags image with release version, pushes it to registries, and returns if any registry got updated +func updateRegistries(ctx context.Context, image, release string) (updated bool) { + for _, reg := range registries { + login := exec.CommandContext(ctx, "docker", "login", "--username", reg.username, "--password-stdin", reg.image) + if err := run(login, strings.NewReader(reg.password)); err != nil { + klog.Errorf("failed logging in to %s: %v", reg.name, err) + continue + } + klog.Infof("successfully logged in to %s", reg.name) + + tag := exec.CommandContext(ctx, "docker", "tag", image+":"+release, reg.image+":"+release) + if err := run(tag, nil); err != nil { + klog.Errorf("failed tagging %s for %s: %v", reg.image+":"+release, reg.name, err) + continue + } + klog.Infof("successfully tagged %s for %s", reg.image+":"+release, reg.name) + + push := exec.CommandContext(ctx, "docker", "push", reg.image+":"+release) + if err := run(push, nil); err != nil { + klog.Errorf("failed pushing %s to %s: %v", reg.image+":"+release, reg.name, err) + continue + } + klog.Infof("successfully pushed %s to %s", reg.image+":"+release, reg.name) + + reg.setUpdated(true) + klog.Infof("successfully updated %s", reg.name) + updated = true + } + return updated +} + +// 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 +func prepareImage(ctx context.Context, current, release string) (image string, err error) { + // check if image exists locally + for _, reg := range registries { + inspect := exec.CommandContext(ctx, "docker", "inspect", reg.image+":"+current, "--format", "{{.Id}}") + if err := run(inspect, nil); err != nil { + continue + } + image = reg.image + break + } + if image == "" { + // try to pull image locally + for _, reg := range registries { + pull := exec.CommandContext(ctx, "docker", "pull", reg.image+":"+current) + if err := run(pull, nil); err != nil { + continue + } + image = reg.image + break + } + } + if image == "" { + return "", errors.Errorf("cannot find current image version tag %s locally nor in any registry", current) + } + // tag current image with release version + tag := exec.CommandContext(ctx, "docker", "tag", image+":"+current, image+":"+release) + if err := run(tag, nil); err != nil { + return "", err + } + return image, nil +} + +// getKICVersion returns current kic base image version and any error +func getKICVersion() (string, error) { + blob, err := ioutil.ReadFile(kicFile) + if err != nil { + return "", err + } + re := regexp.MustCompile(kicVersionRE) + ver := re.FindSubmatch(blob) + if ver == nil { + return "", nil + } + return string(ver[1]), nil +} diff --git a/hack/kubernetes_version/update_kubernetes_version.go b/hack/kubernetes_version/update_kubernetes_version.go index 146506e9b4..8d68b61324 100644 --- a/hack/kubernetes_version/update_kubernetes_version.go +++ b/hack/kubernetes_version/update_kubernetes_version.go @@ -40,6 +40,7 @@ import ( "text/template" "time" + "golang.org/x/mod/semver" "golang.org/x/oauth2" "github.com/google/go-github/v32/github" @@ -126,9 +127,10 @@ func (p *Patch) apply(data interface{}) (changed bool, err error) { } func main() { + klog.InitFlags(nil) // write log statements to stderr instead of to files if err := flag.Set("logtostderr", "true"); err != nil { - fmt.Printf("Error setting 'logtostderr' klog flag: %v", err) + fmt.Printf("Error setting 'logtostderr' klog flag: %v\n", err) } flag.Parse() defer klog.Flush() @@ -399,26 +401,19 @@ func ghReleases(ctx context.Context, owner, repo, token string) (stable, latest } for _, rl := range rls { ver := rl.GetName() - if ver == "" { + if !semver.IsValid(ver) { continue } - // check if ver version is a release (ie, 'v1.19.2') or a - // pre-release (ie, 'v1.19.3-rc.0' or 'v1.19.0-beta.2') channel ch - // note: github.RepositoryRelease GetPrerelease() bool would be useful for all pre-rels - ch := strings.Split(ver, "-") - if len(ch) == 1 && stable == "" { - stable = ver - } else if len(ch) > 1 && latest == "" { - if strings.HasPrefix(ch[1], "rc") || strings.HasPrefix(ch[1], "beta") { - latest = ver - } + // check if ver version is release (ie, 'v1.19.2') or pre-release (ie, 'v1.19.3-rc.0' or 'v1.19.0-beta.2') + prerls := semver.Prerelease(ver) + if prerls == "" { + stable = semver.Max(ver, stable) + } else if strings.HasPrefix(prerls, "-rc") || strings.HasPrefix(prerls, "-beta") { + latest = semver.Max(ver, latest) } - if stable != "" && latest != "" { - // make sure that v.Latest >= stable - if latest < stable { - latest = stable - } - return stable, latest, nil + // make sure that latest >= stable + if semver.Compare(latest, stable) == -1 { + latest = stable } } if resp.NextPage == 0 { diff --git a/hack/update/filesystem.go b/hack/update/filesystem.go new file mode 100644 index 0000000000..037c0ffcd6 --- /dev/null +++ b/hack/update/filesystem.go @@ -0,0 +1,53 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package update + +import ( + "io/ioutil" + "os" + "path/filepath" +) + +// fsUpdate updates local filesystem repo files according to the given schema and data, +// returns if the update actually changed anything, and any error occurred +func fsUpdate(fsRoot string, schema map[string]Item, data interface{}) (changed bool, err error) { + for path, item := range schema { + path = filepath.Join(fsRoot, path) + blob, err := ioutil.ReadFile(path) + if err != nil { + return false, err + } + info, err := os.Stat(path) + if err != nil { + return false, err + } + mode := info.Mode() + + item.Content = blob + chg, err := item.apply(data) + if err != nil { + return false, err + } + if chg { + changed = true + } + if err := ioutil.WriteFile(path, item.Content, mode); err != nil { + return false, err + } + } + return changed, nil +} diff --git a/hack/update/github.go b/hack/update/github.go new file mode 100644 index 0000000000..661cbc0fa5 --- /dev/null +++ b/hack/update/github.go @@ -0,0 +1,261 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package update + +import ( + "context" + "fmt" + "os" + "strings" + "time" + + "golang.org/x/mod/semver" + "golang.org/x/oauth2" + + "github.com/google/go-github/v32/github" + "k8s.io/klog/v2" +) + +const ( + // ghListPerPage uses max value (100) for PerPage to avoid hitting the rate limits + // (ref: https://godoc.org/github.com/google/go-github/github#hdr-Rate_Limiting) + ghListPerPage = 100 + + // ghSearchLimit limits the number of searched items to be <= N * ListPerPage + ghSearchLimit = 100 +) + +var ( + // GitHub repo data + ghToken = os.Getenv("GITHUB_TOKEN") + ghOwner = "kubernetes" + ghRepo = "minikube" + ghBase = "master" // could be "main" in the future? +) + +// ghCreatePR returns PR created in the GitHub owner/repo, applying the changes to the base head +// commit fork, as defined by the schema and data, and also returns any error occurred +// PR branch will be named by the branch, sufixed by '_' and first 7 characters of fork commit SHA +// PR itself will be named by the title and will reference the issue +func ghCreatePR(ctx context.Context, owner, repo, base, branch, title string, issue int, token string, schema map[string]Item, data interface{}) (*github.PullRequest, error) { + ghc := ghClient(ctx, token) + + // get base branch + baseBranch, _, err := ghc.Repositories.GetBranch(ctx, owner, repo, base) + if err != nil { + return nil, fmt.Errorf("error getting base branch: %w", err) + } + + // get base commit + baseCommit, _, err := ghc.Repositories.GetCommit(ctx, owner, repo, *baseBranch.Commit.SHA) + if err != nil { + return nil, fmt.Errorf("error getting base commit: %w", err) + } + + // get base tree + baseTree, _, err := ghc.Git.GetTree(ctx, owner, repo, baseCommit.GetSHA(), true) + if err != nil { + return nil, fmt.Errorf("error getting base tree: %w", err) + } + + // update files + changes, err := ghUpdate(ctx, owner, repo, baseTree, token, schema, data) + if err != nil { + return nil, fmt.Errorf("error updating files: %w", err) + } + if changes == nil { + return nil, nil + } + + // create fork + fork, resp, err := ghc.Repositories.CreateFork(ctx, owner, repo, nil) + // https://pkg.go.dev/github.com/google/go-github/v32@v32.1.0/github#RepositoriesService.CreateFork + // This method might return an *AcceptedError and a status code of 202. This is because this is + // the status that GitHub returns to signify that it is now computing creating the fork in a + // background task. In this event, the Repository value will be returned, which includes the + // details about the pending fork. A follow up request, after a delay of a second or so, should + // result in a successful request. + if resp.StatusCode == 202 { // *AcceptedError + time.Sleep(time.Second * 5) + } else if err != nil { + return nil, fmt.Errorf("error creating fork: %w", err) + } + + // create fork tree from base and changed files + forkTree, _, err := ghc.Git.CreateTree(ctx, *fork.Owner.Login, *fork.Name, *baseTree.SHA, changes) + if err != nil { + return nil, fmt.Errorf("error creating fork tree: %w", err) + } + + // create fork commit + forkCommit, _, err := ghc.Git.CreateCommit(ctx, *fork.Owner.Login, *fork.Name, &github.Commit{ + Message: github.String(title), + Tree: &github.Tree{SHA: forkTree.SHA}, + Parents: []*github.Commit{{SHA: baseCommit.SHA}}, + }) + if err != nil { + return nil, fmt.Errorf("error creating fork commit: %w", err) + } + klog.Infof("PR commit '%s' created: %s", forkCommit.GetSHA(), forkCommit.GetHTMLURL()) + + // create PR branch + prBranch := branch + forkCommit.GetSHA()[:7] + prRef, _, err := ghc.Git.CreateRef(ctx, *fork.Owner.Login, *fork.Name, &github.Reference{ + Ref: github.String("refs/heads/" + prBranch), + Object: &github.GitObject{ + Type: github.String("commit"), + SHA: forkCommit.SHA, + }, + }) + if err != nil { + return nil, fmt.Errorf("error creating PR branch: %w", err) + } + klog.Infof("PR branch '%s' created: %s", prBranch, prRef.GetURL()) + + // create PR + plan, err := GetPlan(schema, data) + if err != nil { + klog.Fatalf("Error parsing schema: %v\n%s", err, plan) + } + modifiable := true + pr, _, err := ghc.PullRequests.Create(ctx, owner, repo, &github.NewPullRequest{ + Title: github.String(title), + Head: github.String(*fork.Owner.Login + ":" + prBranch), + Base: github.String(base), + Body: github.String(fmt.Sprintf("fixes #%d\n\nAutomatically created PR to update repo according to the Plan:\n\n```\n%s\n```", issue, plan)), + MaintainerCanModify: &modifiable, + }) + if err != nil { + return nil, fmt.Errorf("error creating pull request: %w", err) + } + return pr, nil +} + +// ghUpdate updates remote GitHub owner/repo tree according to the given token, schema and data, +// returns resulting changes, and any error occurred +func ghUpdate(ctx context.Context, owner, repo string, tree *github.Tree, token string, schema map[string]Item, data interface{}) (changes []*github.TreeEntry, err error) { + ghc := ghClient(ctx, token) + + // load each schema item content and update it creating new GitHub TreeEntries + cnt := len(schema) // expected number of files to change + for _, org := range tree.Entries { + if *org.Type == "blob" { + if item, match := schema[*org.Path]; match { + blob, _, err := ghc.Git.GetBlobRaw(ctx, owner, repo, *org.SHA) + if err != nil { + return nil, fmt.Errorf("error getting file: %w", err) + } + item.Content = blob + changed, err := item.apply(data) + if err != nil { + return nil, fmt.Errorf("error updating file: %w", err) + } + if changed { + // add github.TreeEntry that will replace original path content with updated one + changes = append(changes, &github.TreeEntry{ + Path: org.Path, + Mode: org.Mode, + Type: org.Type, + Content: github.String(string(item.Content)), + }) + } + if cnt--; cnt == 0 { + break + } + } + } + } + if cnt != 0 { + return nil, fmt.Errorf("error finding all the files (%d missing) - check the Plan: %w", cnt, err) + } + return changes, nil +} + +// ghFindPR returns URL of the PR if found in the given GitHub ower/repo base and any error occurred +func ghFindPR(ctx context.Context, title, owner, repo, base, token string) (url string, err error) { + ghc := ghClient(ctx, token) + + // walk through the paginated list of all pull requests, from latest to older releases + opts := &github.PullRequestListOptions{State: "all", Base: base, ListOptions: github.ListOptions{PerPage: ghListPerPage}} + for (opts.Page+1)*ghListPerPage <= ghSearchLimit { + prs, resp, err := ghc.PullRequests.List(ctx, owner, repo, opts) + if err != nil { + return "", err + } + for _, pr := range prs { + if pr.GetTitle() == title { + return pr.GetHTMLURL(), nil + } + } + if resp.NextPage == 0 { + break + } + opts.Page = resp.NextPage + } + return "", nil +} + +// ghClient returns GitHub Client with a given context and optional token for authenticated requests +func ghClient(ctx context.Context, token string) *github.Client { + if token == "" { + return github.NewClient(nil) + } + ts := oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: token}, + ) + tc := oauth2.NewClient(ctx, ts) + return github.NewClient(tc) +} + +// GHVersions returns greatest current stable release and greatest latest rc or beta pre-release +// from GitHub owner/repo repository, and any error; +// if latest pre-release version is lower than current stable release, then it +// will return current stable release for both +func GHVersions(ctx context.Context, owner, repo string) (stable, latest string, err error) { + ghc := ghClient(ctx, ghToken) + + // walk through the paginated list of all owner/repo releases, from newest to oldest + opts := &github.ListOptions{PerPage: ghListPerPage} + for { + rls, resp, err := ghc.Repositories.ListReleases(ctx, owner, repo, opts) + if err != nil { + return "", "", err + } + for _, rl := range rls { + ver := rl.GetName() + if !semver.IsValid(ver) { + continue + } + // check if ver version is release (ie, 'v1.19.2') or pre-release (ie, 'v1.19.3-rc.0' or 'v1.19.0-beta.2') + prerls := semver.Prerelease(ver) + if prerls == "" { + stable = semver.Max(ver, stable) + } else if strings.HasPrefix(prerls, "-rc") || strings.HasPrefix(prerls, "-beta") { + latest = semver.Max(ver, latest) + } + // make sure that latest >= stable + if semver.Compare(latest, stable) == -1 { + latest = stable + } + } + if resp.NextPage == 0 { + break + } + opts.Page = resp.NextPage + } + return stable, latest, nil +} diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go new file mode 100644 index 0000000000..464b8f8852 --- /dev/null +++ b/hack/update/golang_version/update_golang_version.go @@ -0,0 +1,133 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Script expects the following env variables: + - UPDATE_TARGET=: optional - if unset/absent, default option is "fs"; valid options are: + - "fs" - update only local filesystem repo files [default] + - "gh" - update only remote GitHub repo files and create PR (if one does not exist already) + - "all" - update local and remote repo files and create PR (if one does not exist already) + - GITHUB_TOKEN=: GitHub [personal] access token + - note: GITHUB_TOKEN is required if UPDATE_TARGET is "gh" or "all" +*/ + +package main + +import ( + "context" + "io/ioutil" + "net/http" + "strings" + "time" + + "k8s.io/klog/v2" + + "k8s.io/minikube/hack/update" +) + +const ( + // default context timeout + cxTimeout = 300 * time.Second +) + +var ( + schema = map[string]update.Item{ + ".github/workflows/iso.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, + ".github/workflows/kic_image.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, + ".github/workflows/master.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, + ".github/workflows/pr.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, + ".travis.yml": { + Replace: map[string]string{ + `go:\n - .*`: `go:{{printf "\n - %s" .StableVersion}}`, + `go: .*`: `go: {{.StableVersion}}`, + }, + }, + "go.mod": { + Replace: map[string]string{ + `(?m)^go .*`: `go {{.StableVersionMM}}`, + }, + }, + "hack/jenkins/common.sh": { + Replace: map[string]string{ + `sudo \.\/installers\/check_install_golang\.sh \".*\" \"\/usr\/local\"`: `sudo ./installers/check_install_golang.sh "{{.StableVersion}}" "/usr/local"`, + }, + }, + "Makefile": { + Replace: map[string]string{ + `GO_VERSION \?= .*`: `GO_VERSION ?= {{.StableVersion}}`, + }, + }, + } + + // PR data + prBranchPrefix = "update-golang-version_" // will be appended with first 7 characters of the PR commit SHA + prTitle = `update_golang_version: {stable: "{{.StableVersion}}"}` + prIssue = 9264 +) + +// Data holds stable Golang version - in full and in . format +type Data struct { + StableVersion string `json:"stableVersion"` + StableVersionMM string `json:"stableVersionMM"` // go.mod wants go version in . format +} + +func main() { + // set a context with defined timeout + ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) + defer cancel() + + // get Golang stable version + stable, stableMM, err := goVersions() + if err != nil || stable == "" || stableMM == "" { + klog.Fatalf("Unable to get Golang stable version: %v", err) + } + data := Data{StableVersion: stable, StableVersionMM: stableMM} + klog.Infof("Golang stable version: %s", data.StableVersion) + + update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue) +} + +// goVersion returns Golang stable version. +func goVersions() (stable, stableMM string, err error) { + resp, err := http.Get("https://golang.org/VERSION?m=text") + if err != nil { + return "", "", err + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", "", err + } + stable = strings.TrimPrefix(string(body), "go") + mmp := strings.SplitN(stable, ".", 3) + stableMM = strings.Join(mmp[0:2], ".") // . version + return stable, stableMM, nil +} diff --git a/hack/update/kicbase_version/update_kicbase_version.go b/hack/update/kicbase_version/update_kicbase_version.go new file mode 100644 index 0000000000..64d9432475 --- /dev/null +++ b/hack/update/kicbase_version/update_kicbase_version.go @@ -0,0 +1,148 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Script promotes current KIC base image as stable, ie: + - strips current version suffix starting from '-' in pkg/drivers/kic/types.go => release version + (eg, 'v0.0.13-snapshot1' -> 'v0.0.13') + - makes sure current KIC base image exists locally, tries to pull one if not + - tags current KIC base image with the release version, and + - pushes it to all relevant container registries + +Script expects the following env variables: + - UPDATE_TARGET=: optional - if unset/absent, default option is "fs"; valid options are: + - "fs" - update only local filesystem repo files [default] + - "gh" - update only remote GitHub repo files and create PR (if one does not exist already) + - "all" - update local and remote repo files and create PR (if one does not exist already) + +Script also requires following credentials as env variables (injected by Jenkins credential provider): + @GCR (ref: https://cloud.google.com/container-registry/docs/advanced-authentication): + - GCR_USERNAME=: GCR username, eg: + = "oauth2accesstoken" if Access Token is used for GCR_TOKEN, or + = "_json_key" if JSON Key File is used for GCR_TOKEN + - GCR_TOKEN=: GCR JSON token + + @Docker (ref: https://docs.docker.com/docker-hub/access-tokens/) + - DOCKER_USERNAME=: Docker username + - DOCKER_TOKEN=: Docker personal access token or password + + @GitHub (ref: https://docs.github.com/en/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages) + - GITHUB_USERNAME=: GitHub username + - GITHUB_TOKEN=: GitHub [personal] access token +*/ + +package main + +import ( + "context" + "io/ioutil" + "path/filepath" + "regexp" + "strings" + "time" + + "k8s.io/klog/v2" + "k8s.io/minikube/hack/update" +) + +const ( + // default context timeout + cxTimeout = 600 * time.Second +) + +var ( + kicFile = "pkg/drivers/kic/types.go" + versionRE = `Version = "(.*)"` + + schema = map[string]update.Item{ + kicFile: { + Replace: map[string]string{ + `Version = ".*"`: `Version = "{{.StableVersion}}"`, + }, + }, + } + + // pull request data + prBranchPrefix = "update-kicbase-version_" // will be appended with first 7 characters of the PR commit SHA + prTitle = `update-kicbase-version: {"{{.StableVersion}}"}` + prIssue = 9420 +) + +// Data holds current and stable KIC Base image versions +type Data struct { + CurrentVersion string `json:"CurrentVersion"` + StableVersion string `json:"StableVersion"` +} + +func main() { + // set a context with defined timeout + ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) + defer cancel() + + // 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) + } + if len(current) == 0 || len(stable) == 0 { + klog.Fatalf("cannot 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) + + // 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.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") + } + + update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue) +} + +// KICVersions returns current and stable kic base image versions and any error +func KICVersions() (current, stable string, err error) { + blob, err := ioutil.ReadFile(filepath.Join(update.FSRoot, kicFile)) + if err != nil { + return "", "", err + } + re := regexp.MustCompile(versionRE) + ver := re.FindSubmatch(blob) + if ver == nil { + return "", "", nil + } + current = string(ver[1]) + stable = strings.Split(current, "-")[0] + 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 +func prepareImage(ctx context.Context, data Data) (image string, err error) { + image, err = update.PullImage(ctx, data.CurrentVersion, data.StableVersion) + if err != nil { + return "", err + } + if err := update.TagImage(ctx, image, data.CurrentVersion, data.StableVersion); err != nil { + return "", err + } + return image, nil +} diff --git a/hack/update/kubernetes_version/update_kubernetes_version.go b/hack/update/kubernetes_version/update_kubernetes_version.go new file mode 100644 index 0000000000..b5bf60cef7 --- /dev/null +++ b/hack/update/kubernetes_version/update_kubernetes_version.go @@ -0,0 +1,84 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Script expects the following env variables: + - UPDATE_TARGET=: optional - if unset/absent, default option is "fs"; valid options are: + - "fs" - update only local filesystem repo files [default] + - "gh" - update only remote GitHub repo files and create PR (if one does not exist already) + - "all" - update local and remote repo files and create PR (if one does not exist already) + - GITHUB_TOKEN=: GitHub [personal] access token + - note: GITHUB_TOKEN is required if UPDATE_TARGET is "gh" or "all" +*/ + +package main + +import ( + "context" + "time" + + "k8s.io/klog/v2" + "k8s.io/minikube/hack/update" +) + +const ( + // default context timeout + cxTimeout = 300 * time.Second +) + +var ( + schema = map[string]update.Item{ + "pkg/minikube/constants/constants.go": { + Replace: map[string]string{ + `DefaultKubernetesVersion = ".*`: `DefaultKubernetesVersion = "{{.StableVersion}}"`, + `NewestKubernetesVersion = ".*`: `NewestKubernetesVersion = "{{.LatestVersion}}"`, + }, + }, + "site/content/en/docs/commands/start.md": { + Replace: map[string]string{ + `'stable' for .*,`: `'stable' for {{.StableVersion}},`, + `'latest' for .*\)`: `'latest' for {{.LatestVersion}})`, + }, + }, + } + + // pull request data + prBranchPrefix = "update-kubernetes-version_" // will be appended with first 7 characters of the PR commit SHA + prTitle = `update_kubernetes_version: {stable:"{{.StableVersion}}", latest:"{{.LatestVersion}}"}` + prIssue = 4392 +) + +// Data holds stable and latest Kubernetes versions +type Data struct { + StableVersion string `json:"StableVersion"` + LatestVersion string `json:"LatestVersion"` +} + +func main() { + // set a context with defined timeout + ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) + defer cancel() + + // get Kubernetes versions from GitHub Releases + stable, latest, err := update.GHVersions(ctx, "kubernetes", "kubernetes") + if err != nil || stable == "" || latest == "" { + klog.Fatalf("Error getting Kubernetes versions: %v", err) + } + data := Data{StableVersion: stable, LatestVersion: latest} + klog.Infof("Kubernetes versions: 'stable' is %s and 'latest' is %s", data.StableVersion, data.LatestVersion) + + update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue) +} diff --git a/hack/update/registry.go b/hack/update/registry.go new file mode 100644 index 0000000000..5ce7bb1a93 --- /dev/null +++ b/hack/update/registry.go @@ -0,0 +1,134 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package update + +import ( + "context" + "fmt" + "os" + "os/exec" + "strings" + "time" + + "k8s.io/klog/v2" +) + +var ( + // keep list of registries in sync with those in "pkg/drivers/kic/types.go" + registries = []registry{ + { + name: "Google Cloud Container Registry", + image: "gcr.io/k8s-minikube/kicbase", + username: os.Getenv("GCR_USERNAME"), + password: os.Getenv("GCR_TOKEN"), + }, + { + name: "Docker Hub Container Registry", + image: "docker.io/kicbase/stable", + username: os.Getenv("DOCKER_USERNAME"), + password: os.Getenv("DOCKER_TOKEN"), + }, + { + name: "GitHub Packages Registry", + image: "docker.pkg.github.com/kubernetes/minikube/kicbase", + username: os.Getenv("GITHUB_USERNAME"), + password: os.Getenv("GITHUB_TOKEN"), + }, + } +) + +// container registry name, image path, credentials, and updated flag +type registry struct { + name string + image string + username string + password string +} + +// crUpdate tags image with version, pushes it to container registry, and returns any error +func crUpdate(ctx context.Context, reg registry, image, version string) error { + login := exec.CommandContext(ctx, "docker", "login", "--username", reg.username, "--password-stdin", reg.image) + if err := RunWithRetryNotify(ctx, login, strings.NewReader(reg.password), 1*time.Minute, 10); err != nil { + return fmt.Errorf("failed logging in to %s: %w", reg.name, err) + } + klog.Infof("successfully logged in to %s", reg.name) + + tag := exec.CommandContext(ctx, "docker", "tag", image+":"+version, reg.image+":"+version) + if err := RunWithRetryNotify(ctx, tag, nil, 1*time.Minute, 10); err != nil { + return fmt.Errorf("failed tagging %s for %s: %w", reg.image+":"+version, reg.name, err) + } + klog.Infof("successfully tagged %s for %s", reg.image+":"+version, reg.name) + + push := exec.CommandContext(ctx, "docker", "push", reg.image+":"+version) + if err := RunWithRetryNotify(ctx, push, nil, 2*time.Minute, 10); err != nil { + return fmt.Errorf("failed pushing %s to %s: %w", reg.image+":"+version, reg.name, err) + } + klog.Infof("successfully pushed %s to %s", reg.image+":"+version, reg.name) + + return nil +} + +// CRUpdateAll calls crUpdate for each available registry, and returns if at least one got updated +func CRUpdateAll(ctx context.Context, image, version string) (updated bool) { + for _, reg := range registries { + if err := crUpdate(ctx, reg, image, version); err != nil { + klog.Errorf("failed updating %s", reg.name) + continue + } + klog.Infof("successfully updated %s", reg.name) + updated = true + } + return updated +} + +// PullImage checks if current image exists locally, tries to pull it if not, and +// returns reference image url and any error +func PullImage(ctx context.Context, current, release string) (image string, err error) { + // check if image exists locally + for _, reg := range registries { + inspect := exec.CommandContext(ctx, "docker", "inspect", reg.image+":"+current, "--format", "{{.Id}}") + if err := RunWithRetryNotify(ctx, inspect, nil, 1*time.Second, 10); err != nil { + continue + } + image = reg.image + break + } + if image == "" { + // try to pull image locally + for _, reg := range registries { + pull := exec.CommandContext(ctx, "docker", "pull", reg.image+":"+current) + if err := RunWithRetryNotify(ctx, pull, nil, 2*time.Minute, 10); err != nil { + continue + } + image = reg.image + break + } + } + if image == "" { + return "", fmt.Errorf("cannot find current image version tag %s locally nor in any registry", current) + } + return image, nil +} + +// TagImage tags local image:current with stable version, and returns any error +func TagImage(ctx context.Context, image, current, stable string) error { + tag := exec.CommandContext(ctx, "docker", "tag", image+":"+current, image+":"+stable) + if err := RunWithRetryNotify(ctx, tag, nil, 1*time.Second, 10); err != nil { + return err + } + return nil +} diff --git a/hack/update/update.go b/hack/update/update.go new file mode 100644 index 0000000000..fc478b1563 --- /dev/null +++ b/hack/update/update.go @@ -0,0 +1,213 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Script expects the following env variables: + - UPDATE_TARGET=: optional - if unset/absent, default option is "fs"; valid options are: + - "fs" - update only local filesystem repo files [default] + - "gh" - update only remote GitHub repo files and create PR (if one does not exist already) + - "all" - update local and remote repo files and create PR (if one does not exist already) + - GITHUB_TOKEN=: GitHub [personal] access token + - note: GITHUB_TOKEN is required if UPDATE_TARGET is "gh" or "all" +*/ + +package update + +import ( + "bytes" + "context" + "encoding/json" + "flag" + "fmt" + "io" + "os" + "os/exec" + "regexp" + "text/template" + "time" + + "k8s.io/klog/v2" + + "github.com/cenkalti/backoff/v4" +) + +const ( + // FSRoot is relative (to scripts in subfolders) root folder of local filesystem repo to update + FSRoot = "../../../" +) + +var ( + target = os.Getenv("UPDATE_TARGET") +) + +// init klog and check general requirements +func init() { + klog.InitFlags(nil) + // write log statements to stderr instead of to files + if err := flag.Set("logtostderr", "true"); err != nil { + fmt.Printf("Error setting 'logtostderr' klog flag: %v\n", err) + } + flag.Parse() + defer klog.Flush() + + if target == "" { + target = "fs" + } else if target != "fs" && target != "gh" && target != "all" { + klog.Fatalf("Invalid UPDATE_TARGET option: '%s'; Valid options are: unset/absent (defaults to 'fs'), 'fs', 'gh', or 'all'", target) + } else if (target == "gh" || target == "all") && ghToken == "" { + klog.Fatalf("GITHUB_TOKEN is required if UPDATE_TARGET is 'gh' or 'all'") + } +} + +// Item defines Content where all occurrences of each Replace map key, corresponding to +// GitHub TreeEntry.Path and/or local filesystem repo file path (prefixed with FSRoot), +// would be swapped with its respective actual map value (having placeholders replaced with data), +// creating a concrete update plan. +// Replace map keys can use RegExp and map values can use Golang Text Template +type Item struct { + Content []byte `json:"-"` + Replace map[string]string `json:"replace"` +} + +// apply updates Item Content by replacing all occurrences of Replace map's keys +// with their actual map values (with placeholders replaced with data)) +func (i *Item) apply(data interface{}) (changed bool, err error) { + if i.Content == nil || i.Replace == nil { + return false, fmt.Errorf("want something, got nothing to update") + } + org := string(i.Content) + str := org + for src, dst := range i.Replace { + tmpl := template.Must(template.New("").Parse(dst)) + buf := new(bytes.Buffer) + if err := tmpl.Execute(buf, data); err != nil { + return false, err + } + re := regexp.MustCompile(src) + str = re.ReplaceAllString(str, buf.String()) + } + i.Content = []byte(str) + + return str != org, nil +} + +// Apply applies concrete update plan (schema + data) to GitHub or local filesystem repo +func Apply(ctx context.Context, schema map[string]Item, data interface{}, prBranchPrefix, prTitle string, prIssue int) { + plan, err := GetPlan(schema, data) + if err != nil { + klog.Fatalf("Error parsing schema: %v\n%s", err, plan) + } + klog.Infof("The Plan:\n%s", plan) + + if target == "fs" || target == "all" { + changed, err := fsUpdate(FSRoot, schema, data) + if err != nil { + klog.Errorf("Error updating local repo: %v", err) + } else if !changed { + klog.Infof("Local repo update skipped: nothing changed") + } else { + klog.Infof("Local repo updated") + } + } + + if target == "gh" || target == "all" { + // update prTitle replacing template placeholders with actual data values + tmpl := template.Must(template.New("prTitle").Parse(prTitle)) + buf := new(bytes.Buffer) + if err := tmpl.Execute(buf, data); err != nil { + klog.Fatalf("Error parsing PR Title: %v", err) + } + prTitle = buf.String() + + // check if PR already exists + prURL, err := ghFindPR(ctx, prTitle, ghOwner, ghRepo, ghBase, ghToken) + if err != nil { + klog.Errorf("Error checking if PR already exists: %v", err) + } else if prURL != "" { + klog.Infof("PR create skipped: already exists (%s)", prURL) + } else { + // create PR + pr, err := ghCreatePR(ctx, ghOwner, ghRepo, ghBase, prBranchPrefix, prTitle, prIssue, ghToken, schema, data) + if err != nil { + klog.Fatalf("Error creating PR: %v", err) + } else if pr == nil { + klog.Infof("PR create skipped: nothing changed") + } else { + klog.Infof("PR created: %s", *pr.HTMLURL) + } + } + } +} + +// GetPlan returns concrete plan replacing placeholders in schema with actual data values, +// returns JSON-formatted representation of the plan and any error +func GetPlan(schema map[string]Item, data interface{}) (prettyprint string, err error) { + for _, item := range schema { + for src, dst := range item.Replace { + tmpl := template.Must(template.New("").Parse(dst)) + buf := new(bytes.Buffer) + if err := tmpl.Execute(buf, data); err != nil { + return fmt.Sprintf("%+v", schema), err + } + item.Replace[src] = buf.String() + } + } + str, err := json.MarshalIndent(schema, "", " ") + if err != nil { + return fmt.Sprintf("%+v", schema), err + } + return string(str), nil +} + +// RunWithRetryNotify runs command cmd with stdin using exponential backoff for maxTime duration +// up to maxRetries (negative values will make it ignored), +// notifies about any intermediary errors and return any final error. +// similar to pkg/util/retry/retry.go:Expo(), just for commands with params and also with context +func RunWithRetryNotify(ctx context.Context, cmd *exec.Cmd, stdin io.Reader, maxTime time.Duration, maxRetries uint64) error { + be := backoff.NewExponentialBackOff() + be.Multiplier = 2 + be.MaxElapsedTime = maxTime + bm := backoff.WithMaxRetries(be, maxRetries) + bc := backoff.WithContext(bm, ctx) + + notify := func(err error, wait time.Duration) { + klog.Errorf("Temporary error running '%s' (will retry in %s): %v", cmd.String(), wait, err) + } + if err := backoff.RetryNotify(func() error { + cmd.Stdin = stdin + var stderr bytes.Buffer + cmd.Stderr = &stderr + if err := cmd.Run(); err != nil { + time.Sleep(be.NextBackOff().Round(1 * time.Second)) + return fmt.Errorf("%w: %s", err, stderr.String()) + } + return nil + }, bc, notify); err != nil { + return err + } + return nil +} + +// Run runs command cmd with stdin +func Run(cmd *exec.Cmd, stdin io.Reader) error { + cmd.Stdin = stdin + var out bytes.Buffer + cmd.Stderr = &out + if err := cmd.Run(); err != nil { + return fmt.Errorf("%w: %s", err, out.String()) + } + return nil +} diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go index 14a3b4e913..b86184ae42 100644 --- a/pkg/addons/addons.go +++ b/pkg/addons/addons.go @@ -353,9 +353,10 @@ func verifyAddonStatusInternal(cc *config.ClusterConfig, name string, val string return errors.Wrapf(err, "get kube-client to validate %s addon: %v", name, err) } - err = kapi.WaitForPods(client, ns, label, time.Minute*3) + // This timeout includes image pull time, which can take a few minutes. 3 is not enough. + err = kapi.WaitForPods(client, ns, label, time.Minute*6) if err != nil { - return errors.Wrapf(err, "verifying %s addon pods : %v", name, err) + return errors.Wrapf(err, "waiting for %s pods", label) } } diff --git a/pkg/addons/validations_test.go b/pkg/addons/validations_test.go index 23c2441f8f..aa4cb64038 100644 --- a/pkg/addons/validations_test.go +++ b/pkg/addons/validations_test.go @@ -43,3 +43,36 @@ func TestIsAddonValid(t *testing.T) { }) } } + +func TestContains(t *testing.T) { + tests := []struct { + slice []string + str string + expected bool + }{ + { + slice: []string{}, + str: "test", + expected: false, + }, + { + slice: []string{"test", "test1"}, + str: "test1", + expected: true, + }, + { + slice: []string{"test", "test1"}, + str: "test2", + expected: false, + }, + } + + for _, test := range tests { + t.Run(test.str, func(t *testing.T) { + actual := contains(test.slice, test.str) + if test.expected != actual { + t.Fatalf("slice: %v\nstr: %v\nexpected: %v\nactual:%v\n", test.slice, test.str, test.expected, actual) + } + }) + } +} diff --git a/pkg/drivers/kic/oci/network.go b/pkg/drivers/kic/oci/network.go index de4e4414da..a3c7edb94f 100644 --- a/pkg/drivers/kic/oci/network.go +++ b/pkg/drivers/kic/oci/network.go @@ -35,16 +35,16 @@ import ( func RoutableHostIPFromInside(ociBin string, clusterName string, containerName string) (net.IP, error) { if ociBin == Docker { if runtime.GOOS == "linux" { - _, gateway, err := dockerNetworkInspect(clusterName) + info, err := dockerNetworkInspect(clusterName) if err != nil { if errors.Is(err, ErrNetworkNotFound) { klog.Infof("The container %s is not attached to a network, this could be because the cluster was created by minikube 0 { + args = append(args, "-o") + args = append(args, fmt.Sprintf("com.docker.network.driver.mtu=%d", mtu)) + } + + rr, err := runCmd(exec.Command(Docker, args...)) if err != nil { // Pool overlaps with other one on this address space if strings.Contains(rr.Output(), "Pool overlaps") { @@ -99,32 +127,50 @@ func tryCreateDockerNetwork(subnetAddr string, subnetMask int, name string) (net return gateway, nil } -// returns subnet and gate if exists -func dockerNetworkInspect(name string) (*net.IPNet, net.IP, error) { - cmd := exec.Command(Docker, "network", "inspect", name, "--format", "{{(index .IPAM.Config 0).Subnet}},{{(index .IPAM.Config 0).Gateway}}") +// netInfo holds part of a docker or podman network information relevant to kic drivers +type netInfo struct { + name string + subnet *net.IPNet + gateway net.IP + mtu int +} + +// if exists returns subnet, gateway and mtu +func dockerNetworkInspect(name string) (netInfo, error) { + var info = netInfo{name: name} + cmd := exec.Command(Docker, "network", "inspect", name, "--format", `{{(index .IPAM.Config 0).Subnet}},{{(index .IPAM.Config 0).Gateway}},{{(index .Options "com.docker.network.driver.mtu")}}`) rr, err := runCmd(cmd) if err != nil { logDockerNetworkInspect(name) if strings.Contains(rr.Output(), "No such network") { - return nil, nil, ErrNetworkNotFound + + return info, ErrNetworkNotFound } - return nil, nil, err - } - // results looks like 172.17.0.0/16,172.17.0.1 - ips := strings.Split(strings.TrimSpace(rr.Stdout.String()), ",") - if len(ips) == 0 { - return nil, nil, fmt.Errorf("empty IP list parsed from: %q", rr.Output()) + return info, err } - _, subnet, err := net.ParseCIDR(ips[0]) + // results looks like 172.17.0.0/16,172.17.0.1,1500 + vals := strings.Split(strings.TrimSpace(rr.Stdout.String()), ",") + if len(vals) == 0 { + return info, fmt.Errorf("empty list network inspect: %q", rr.Output()) + } + + if len(vals) > 0 { + info.gateway = net.ParseIP(vals[1]) + mtu, err := strconv.Atoi(vals[2]) + if err != nil { + klog.Warningf("couldn't parse mtu for docker network %q: %v", name, err) + } else { + info.mtu = mtu + } + } + + _, info.subnet, err = net.ParseCIDR(vals[0]) if err != nil { - return nil, nil, errors.Wrapf(err, "parse subnet for %s", name) + return info, errors.Wrapf(err, "parse subnet for %s", name) } - var gateway net.IP - if len(ips) > 0 { - gateway = net.ParseIP(ips[1]) - } - return subnet, gateway, nil + + return info, nil } func logDockerNetworkInspect(name string) { @@ -157,7 +203,7 @@ func RemoveNetwork(name string) error { } func networkExists(name string) bool { - _, _, err := dockerNetworkInspect(name) + _, err := dockerNetworkInspect(name) if err != nil && !errors.Is(err, ErrNetworkNotFound) { // log unexpected error klog.Warningf("Error inspecting docker network %s: %v", name, err) } diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 46bd685e58..3a6ec8df53 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,9 +24,9 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.13" + Version = "v0.0.14-snapshot" // SHA of the kic base image - baseImageSHA = "4d43acbd0050148d4bc399931f1b15253b5e73815b63a67b8ab4a5c9e523403f" + baseImageSHA = "1e303d96e9d72371235cb28ed77f9b3ba67fb4966085202238e635f1d80181f8" ) var ( diff --git a/pkg/drivers/none/none.go b/pkg/drivers/none/none.go index c7164f2579..6ad1dcca48 100644 --- a/pkg/drivers/none/none.go +++ b/pkg/drivers/none/none.go @@ -142,7 +142,7 @@ func (d *Driver) GetState() (state.State, error) { return state.Running, nil } - return kverify.KubeletStatus(d.exec), nil + return kverify.ServiceStatus(d.exec, "kubelet"), nil } // Kill stops a host forcefully, including any containers that we are managing. diff --git a/pkg/initflag/initflag.go b/pkg/initflag/initflag.go deleted file mode 100644 index 806b8ba76b..0000000000 --- a/pkg/initflag/initflag.go +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package initflag - -import ( - "flag" -) - -func init() { - // Workaround for "ERROR: logging before flag.Parse" - // See: https://github.com/kubernetes/kubernetes/issues/17162 - fs := flag.NewFlagSet("", flag.ContinueOnError) - _ = fs.Parse([]string{}) - flag.CommandLine = fs -} diff --git a/pkg/minikube/bootstrapper/bsutil/kverify/kverify.go b/pkg/minikube/bootstrapper/bsutil/kverify/kverify.go index 1cac68a2cf..76a976e36a 100644 --- a/pkg/minikube/bootstrapper/bsutil/kverify/kverify.go +++ b/pkg/minikube/bootstrapper/bsutil/kverify/kverify.go @@ -35,6 +35,8 @@ const ( AppsRunningKey = "apps_running" // NodeReadyKey is the name used in the flags for waiting for the node status to be ready NodeReadyKey = "node_ready" + // NodeReadyKey is the name used in the flags for waiting for the node status to be ready + KubeletKey = "kubelet" ) // vars related to the --wait flag @@ -42,13 +44,13 @@ var ( // DefaultComponents is map of the the default components to wait for DefaultComponents = map[string]bool{APIServerWaitKey: true, SystemPodsWaitKey: true} // NoWaitComponents is map of componets to wait for if specified 'none' or 'false' - NoComponents = map[string]bool{APIServerWaitKey: false, SystemPodsWaitKey: false, DefaultSAWaitKey: false, AppsRunningKey: false, NodeReadyKey: false} + NoComponents = map[string]bool{APIServerWaitKey: false, SystemPodsWaitKey: false, DefaultSAWaitKey: false, AppsRunningKey: false, NodeReadyKey: false, KubeletKey: false} // AllComponents is map for waiting for all components. - AllComponents = map[string]bool{APIServerWaitKey: true, SystemPodsWaitKey: true, DefaultSAWaitKey: true, AppsRunningKey: true} + AllComponents = map[string]bool{APIServerWaitKey: true, SystemPodsWaitKey: true, DefaultSAWaitKey: true, AppsRunningKey: true, KubeletKey: true} // DefaultWaitList is list of all default components to wait for. only names to be used for start flags. DefaultWaitList = []string{APIServerWaitKey, SystemPodsWaitKey} // AllComponentsList list of all valid components keys to wait for. only names to be used used for start flags. - AllComponentsList = []string{APIServerWaitKey, SystemPodsWaitKey, DefaultSAWaitKey, AppsRunningKey, NodeReadyKey} + AllComponentsList = []string{APIServerWaitKey, SystemPodsWaitKey, DefaultSAWaitKey, AppsRunningKey, NodeReadyKey, KubeletKey} // AppsRunningList running list are valid k8s-app components to wait for them to be running AppsRunningList = []string{ "kube-dns", // coredns diff --git a/pkg/minikube/bootstrapper/bsutil/kverify/system_pods.go b/pkg/minikube/bootstrapper/bsutil/kverify/system_pods.go index a331f35c18..740586b803 100644 --- a/pkg/minikube/bootstrapper/bsutil/kverify/system_pods.go +++ b/pkg/minikube/bootstrapper/bsutil/kverify/system_pods.go @@ -22,7 +22,6 @@ import ( "strings" "time" - "github.com/docker/machine/libmachine/state" "github.com/pkg/errors" core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -34,7 +33,6 @@ import ( "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/cruntime" "k8s.io/minikube/pkg/minikube/logs" - "k8s.io/minikube/pkg/minikube/sysinit" "k8s.io/minikube/pkg/util/retry" ) @@ -155,13 +153,3 @@ func announceProblems(r cruntime.Manager, bs bootstrapper.Bootstrapper, cfg conf time.Sleep(kconst.APICallRetryInterval * 15) } } - -// KubeletStatus checks the kubelet status -func KubeletStatus(cr command.Runner) state.State { - klog.Infof("Checking kubelet status ...") - active := sysinit.New(cr).Active("kubelet") - if active { - return state.Running - } - return state.Stopped -} diff --git a/pkg/minikube/bootstrapper/bsutil/kverify/system_svc.go b/pkg/minikube/bootstrapper/bsutil/kverify/system_svc.go new file mode 100644 index 0000000000..352ee7cf9c --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/kverify/system_svc.go @@ -0,0 +1,60 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package kverify verifies a running Kubernetes cluster is healthy +package kverify + +import ( + "fmt" + "time" + + "github.com/docker/machine/libmachine/state" + "k8s.io/klog/v2" + "k8s.io/minikube/pkg/minikube/command" + "k8s.io/minikube/pkg/minikube/sysinit" + "k8s.io/minikube/pkg/util/retry" +) + +// ServiceStatus checks the status of a systemd or init.d service +func ServiceStatus(cr command.Runner, svc string) state.State { + active := sysinit.New(cr).Active(svc) + if active { + return state.Running + } + return state.Stopped +} + +// WaitForService will wait for a "systemd" or "init.d" service to be running on the node... +// not to be confused with Kubernetes Services +func WaitForService(cr command.Runner, svc string, timeout time.Duration) error { + pStart := time.Now() + klog.Infof("waiting for %s service to be running ....", svc) + kr := func() error { + if st := ServiceStatus(cr, svc); st != state.Running { + return fmt.Errorf("status %s", st) + } + return nil + } + + if err := retry.Local(kr, timeout); err != nil { + return fmt.Errorf("not running: %s", err) + } + + klog.Infof("duration metric: took %s WaitForService to wait for %s.", time.Since(pStart), svc) + + return nil + +} diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index 7c685777f1..ef750bb45b 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -145,7 +145,7 @@ func storageProvisioner(mirror string) string { // dashboardFrontend returns the image used for the dashboard frontend func dashboardFrontend(repo string) string { if repo == "" { - repo = "kubernetesui" + repo = "docker.io/kubernetesui" } // See 'kubernetes-dashboard' in deploy/addons/dashboard/dashboard-dp.yaml return path.Join(repo, "dashboard:v2.0.3") @@ -154,7 +154,7 @@ func dashboardFrontend(repo string) string { // dashboardMetrics returns the image used for the dashboard metrics scraper func dashboardMetrics(repo string) string { if repo == "" { - repo = "kubernetesui" + repo = "docker.io/kubernetesui" } // See 'dashboard-metrics-scraper' in deploy/addons/dashboard/dashboard-dp.yaml return path.Join(repo, "metrics-scraper:v1.0.4") diff --git a/pkg/minikube/bootstrapper/images/images_test.go b/pkg/minikube/bootstrapper/images/images_test.go index 3aeb0f8155..fd3743a8a8 100644 --- a/pkg/minikube/bootstrapper/images/images_test.go +++ b/pkg/minikube/bootstrapper/images/images_test.go @@ -25,8 +25,8 @@ import ( func TestAuxiliary(t *testing.T) { want := []string{ "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", } got := auxiliary("") if diff := cmp.Diff(want, got); diff != "" { diff --git a/pkg/minikube/bootstrapper/images/kubeadm_test.go b/pkg/minikube/bootstrapper/images/kubeadm_test.go index 76a92966a9..36f976d9e7 100644 --- a/pkg/minikube/bootstrapper/images/kubeadm_test.go +++ b/pkg/minikube/bootstrapper/images/kubeadm_test.go @@ -38,8 +38,8 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.4.3-0", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", }}, {"v1.16.1", "mirror.k8s.io", []string{ "mirror.k8s.io/kube-proxy:v1.16.1", @@ -62,8 +62,8 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.3.10", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", }}, {"v1.14.0", "", []string{ "k8s.gcr.io/kube-proxy:v1.14.0", @@ -74,8 +74,8 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.3.10", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", }}, {"v1.13.0", "", []string{ "k8s.gcr.io/kube-proxy:v1.13.0", @@ -86,8 +86,8 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.2.24", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", }}, {"v1.12.0", "", []string{ "k8s.gcr.io/kube-proxy:v1.12.0", @@ -98,8 +98,8 @@ func TestKubeadmImages(t *testing.T) { "k8s.gcr.io/etcd:3.2.24", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:v3", - "kubernetesui/dashboard:v2.0.3", - "kubernetesui/metrics-scraper:v1.0.4", + "docker.io/kubernetesui/dashboard:v2.0.3", + "docker.io/kubernetesui/metrics-scraper:v1.0.4", }}, } for _, tc := range tests { diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 72756f1d54..3b2411372d 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -392,10 +392,13 @@ func (k *Bootstrapper) client(ip string, port int) (*kubernetes.Clientset, error // WaitForNode blocks until the node appears to be healthy func (k *Bootstrapper) WaitForNode(cfg config.ClusterConfig, n config.Node, timeout time.Duration) error { start := time.Now() - register.Reg.SetStep(register.VerifyingKubernetes) out.T(style.HealthCheck, "Verifying Kubernetes components...") - + // regardless if waiting is set or not, we will make sure kubelet is not stopped + // to solve corner cases when a container is hibernated and once coming back kubelet not running. + if err := k.ensureServiceStarted("kubelet"); err != nil { + klog.Warningf("Couldn't ensure kubelet is started this might cause issues: %v", err) + } // TODO: #7706: for better performance we could use k.client inside minikube to avoid asking for external IP:PORT cp, err := config.PrimaryControlPlane(&cfg) if err != nil { @@ -455,6 +458,12 @@ func (k *Bootstrapper) WaitForNode(cfg config.ClusterConfig, n config.Node, time } } } + if cfg.VerifyComponents[kverify.KubeletKey] { + if err := kverify.WaitForService(k.c, "kubelet", timeout); err != nil { + return errors.Wrap(err, "waiting for kubelet") + } + + } if cfg.VerifyComponents[kverify.NodeReadyKey] { if err := kverify.WaitForNodeReady(client, timeout); err != nil { @@ -471,6 +480,15 @@ func (k *Bootstrapper) WaitForNode(cfg config.ClusterConfig, n config.Node, time return nil } +// ensureKubeletStarted will start a systemd or init.d service if it is not running. +func (k *Bootstrapper) ensureServiceStarted(svc string) error { + if st := kverify.ServiceStatus(k.c, svc); st != state.Running { + klog.Warningf("surprisingly %q service status was %s!. will try to start it, could be related to this issue https://github.com/kubernetes/minikube/issues/9458", svc, st) + return sysinit.New(k.c).Start(svc) + } + return nil +} + // needsReconfigure returns whether or not the cluster needs to be reconfigured func (k *Bootstrapper) needsReconfigure(conf string, hostname string, port int, client *kubernetes.Clientset, version string) bool { if rr, err := k.c.RunCmd(exec.Command("sudo", "diff", "-u", conf, conf+".new")); err != nil { @@ -655,18 +673,17 @@ func (k *Bootstrapper) JoinCluster(cc config.ClusterConfig, n config.Node, joinC klog.Infof("kubeadm reset failed, continuing anyway: %v", err) } - out, err := k.c.RunCmd(exec.Command("/bin/bash", "-c", joinCmd)) + _, err = k.c.RunCmd(exec.Command("/bin/bash", "-c", joinCmd)) if err != nil { if strings.Contains(err.Error(), "status \"Ready\" already exists in the cluster") { - klog.Infof("Node %s already joined the cluster, skip failure.", n.Name) - } else { - return errors.Wrapf(err, "cmd failed: %s\n%+v\n", joinCmd, out.Output()) + klog.Info("still waiting for the worker node to register with the api server") } + return errors.Wrapf(err, "kubeadm join") } return nil } - if err := retry.Expo(join, 10*time.Second, 1*time.Minute); err != nil { + if err := retry.Expo(join, 10*time.Second, 3*time.Minute); err != nil { return errors.Wrap(err, "joining cp") } diff --git a/pkg/minikube/cni/flannel.go b/pkg/minikube/cni/flannel.go index b3e659cb11..27e199f118 100644 --- a/pkg/minikube/cni/flannel.go +++ b/pkg/minikube/cni/flannel.go @@ -651,7 +651,14 @@ func (c Flannel) Apply(r Runner) error { if driver.IsKIC(c.cc.Driver) { conflict := "/etc/cni/net.d/100-crio-bridge.conf" - _, err := r.RunCmd(exec.Command("sudo", "mv", conflict, filepath.Join(filepath.Dir(conflict), "DISABLED-"+filepath.Base(conflict)))) + + _, err := r.RunCmd(exec.Command("stat", conflict)) + if err != nil { + klog.Warningf("%s not found, skipping disable step: %v", conflict, err) + return nil + } + + _, err = r.RunCmd(exec.Command("sudo", "mv", conflict, filepath.Join(filepath.Dir(conflict), "DISABLED-"+filepath.Base(conflict)))) if err != nil { klog.Errorf("unable to disable %s: %v", conflict, err) } diff --git a/pkg/minikube/config/profile.go b/pkg/minikube/config/profile.go index c92ac555a3..bad5f7f912 100644 --- a/pkg/minikube/config/profile.go +++ b/pkg/minikube/config/profile.go @@ -204,7 +204,7 @@ func ListProfiles(miniHome ...string) (validPs []*Profile, inValidPs []*Profile, if err != nil { return nil, nil, err } - // try to get profiles list based on all contrainers created by docker driver + // try to get profiles list based on all containers created by docker driver cs, err := oci.ListOwnedContainers(oci.Docker) if err == nil { pDirs = append(pDirs, cs...) diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index e56086b960..c54be3e4b7 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -26,7 +26,7 @@ import ( // Profile represents a minikube profile type Profile struct { Name string - Status string // running, stopped + Status string // running, stopped, paused, unknown Config *ClusterConfig } @@ -78,6 +78,7 @@ type ClusterConfig struct { type KubernetesConfig struct { KubernetesVersion string ClusterName string + Namespace string APIServerName string APIServerNames []string APIServerIPs []net.IP diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index 00896b69f5..df305b3be7 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -68,6 +68,10 @@ const ( MinikubeActiveDockerdEnv = "MINIKUBE_ACTIVE_DOCKERD" // PodmanVarlinkBridgeEnv is used for podman settings PodmanVarlinkBridgeEnv = "PODMAN_VARLINK_BRIDGE" + // PodmanContainerHostEnv is used for podman settings + PodmanContainerHostEnv = "CONTAINER_HOST" + // PodmanContainerSSHKeyEnv is used for podman settings + PodmanContainerSSHKeyEnv = "CONTAINER_SSHKEY" // MinikubeActivePodmanEnv holds the podman service that the user's shell is pointing at // value would be profile or empty if pointing to the user's host. MinikubeActivePodmanEnv = "MINIKUBE_ACTIVE_PODMAN" diff --git a/pkg/minikube/driver/install.go b/pkg/minikube/driver/install.go index 84c16a208a..a2990bbda7 100644 --- a/pkg/minikube/driver/install.go +++ b/pkg/minikube/driver/install.go @@ -30,6 +30,7 @@ import ( "github.com/pkg/errors" "k8s.io/klog/v2" + "k8s.io/minikube/pkg/minikube/download" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/style" @@ -55,13 +56,12 @@ func InstallOrUpdate(name string, directory string, v semver.Version, interactiv defer releaser.Release() exists := driverExists(executable) - path, err := validateDriver(executable, v) + path, err := validateDriver(executable, minAcceptableDriverVersion(name, v)) if !exists || (err != nil && autoUpdate) { klog.Warningf("%s: %v", executable, err) path = filepath.Join(directory, executable) - derr := download.Driver(executable, path, v) - if derr != nil { - return derr + if err := download.Driver(executable, path, v); err != nil { + return err } } return fixDriverPermissions(name, path, interactive) @@ -133,6 +133,8 @@ func validateDriver(executable string, v semver.Version) (string, error) { if err != nil { return path, errors.Wrap(err, "can't parse driver version") } + klog.Infof("%s version is %s", path, driverVersion) + if driverVersion.LT(v) { return path, fmt.Errorf("%s is version %s, want %s", executable, driverVersion, v) } diff --git a/pkg/minikube/driver/version.go b/pkg/minikube/driver/version.go new file mode 100644 index 0000000000..7ccf96dd46 --- /dev/null +++ b/pkg/minikube/driver/version.go @@ -0,0 +1,52 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package driver + +import ( + "github.com/blang/semver" + "k8s.io/klog/v2" +) + +// minHyperkitVersion is the minimum version of the minikube hyperkit driver compatible with the current minikube code +var minHyperkitVersion *semver.Version + +const minHyperkitVersionStr = "1.11.0" + +func init() { + v, err := semver.New(minHyperkitVersionStr) + if err != nil { + klog.Errorf("Failed to parse the hyperkit driver version: %v", err) + } else { + minHyperkitVersion = v + } +} + +// minAcceptableDriverVersion is the minimum version of driver supported by current version of minikube +func minAcceptableDriverVersion(driver string, mkVer semver.Version) semver.Version { + switch driver { + case HyperKit: + if minHyperkitVersion != nil { + return *minHyperkitVersion + } + return mkVer + case KVM2: + return mkVer + default: + klog.Warningf("Unexpected driver: %v", driver) + return mkVer + } +} diff --git a/pkg/minikube/driver/version_test.go b/pkg/minikube/driver/version_test.go new file mode 100644 index 0000000000..bcd19bb8c2 --- /dev/null +++ b/pkg/minikube/driver/version_test.go @@ -0,0 +1,52 @@ +/* +Copyright 2020 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package driver + +import ( + "testing" + + "github.com/blang/semver" +) + +func Test_minDriverVersion(t *testing.T) { + + tests := []struct { + desc string + driver string + mkV string + want semver.Version + }{ + {"Hyperkit", HyperKit, "1.1.1", *minHyperkitVersion}, + {"Invalid", "_invalid_", "1.1.1", v("1.1.1")}, + {"KVM2", KVM2, "1.1.1", v("1.1.1")}, + } + for _, tt := range tests { + t.Run(tt.desc, func(t *testing.T) { + if got := minAcceptableDriverVersion(tt.driver, v(tt.mkV)); !got.EQ(tt.want) { + t.Errorf("Invalid min supported version, got: %v, want: %v", got, tt.want) + } + }) + } +} + +func v(s string) semver.Version { + r, err := semver.New(s) + if err != nil { + panic(err) + } + return *r +} diff --git a/pkg/minikube/extract/extract.go b/pkg/minikube/extract/extract.go index 4ae7b08dd7..0505f0775f 100644 --- a/pkg/minikube/extract/extract.go +++ b/pkg/minikube/extract/extract.go @@ -29,10 +29,6 @@ import ( "strconv" "strings" - // initflag must be imported before any other minikube pkg. - // Fix for https://github.com/kubernetes/minikube/issues/4866 - _ "k8s.io/minikube/pkg/initflag" - "github.com/golang-collections/collections/stack" "github.com/pkg/errors" "k8s.io/minikube/pkg/util/lock" diff --git a/pkg/minikube/kubeconfig/settings.go b/pkg/minikube/kubeconfig/settings.go index e86945c340..a61f13d170 100644 --- a/pkg/minikube/kubeconfig/settings.go +++ b/pkg/minikube/kubeconfig/settings.go @@ -33,6 +33,9 @@ type Settings struct { // The name of the cluster for this context ClusterName string + // The name of the namespace for this context + Namespace string + // ClusterServerAddress is the address of the Kubernetes cluster ClusterServerAddress string @@ -104,6 +107,7 @@ func PopulateFromSettings(cfg *Settings, apiCfg *api.Config) error { contextName := cfg.ClusterName context := api.NewContext() context.Cluster = cfg.ClusterName + context.Namespace = cfg.Namespace context.AuthInfo = userName apiCfg.Contexts[contextName] = context diff --git a/pkg/minikube/machine/ssh.go b/pkg/minikube/machine/ssh.go index 0f991e2f2c..c547ed09d7 100644 --- a/pkg/minikube/machine/ssh.go +++ b/pkg/minikube/machine/ssh.go @@ -42,14 +42,14 @@ func CreateSSHShell(api libmachine.API, cc config.ClusterConfig, n config.Node, return errors.Errorf("%q is not running", machineName) } - client, err := host.CreateSSHClient() - if native { ssh.SetDefaultClient(ssh.Native) } else { ssh.SetDefaultClient(ssh.External) } + client, err := host.CreateSSHClient() + if err != nil { return errors.Wrap(err, "Creating ssh client") } diff --git a/pkg/minikube/machine/stop.go b/pkg/minikube/machine/stop.go index 4309a8cdae..54fb0f8331 100644 --- a/pkg/minikube/machine/stop.go +++ b/pkg/minikube/machine/stop.go @@ -80,6 +80,7 @@ func trySSHPowerOff(h *host.Host) error { return nil } + register.Reg.SetStep(register.PowerOff) out.T(style.Shutdown, `Powering off "{{.profile_name}}" via SSH ...`, out.V{"profile_name": h.Name}) // differnet for kic because RunSSHCommand is not implemented by kic if driver.IsKIC(h.DriverName) { diff --git a/pkg/minikube/mustload/mustload.go b/pkg/minikube/mustload/mustload.go index 56372ce216..31dc84dba1 100644 --- a/pkg/minikube/mustload/mustload.go +++ b/pkg/minikube/mustload/mustload.go @@ -72,7 +72,7 @@ func Partial(name string, miniHome ...string) (libmachine.API, *config.ClusterCo cc, err := config.Load(name, miniHome...) if err != nil { if config.IsNotExist(err) { - out.T(style.Shrug, `There is no local cluster named "{{.cluster}}"`, out.V{"cluster": name}) + out.T(style.Shrug, `Profile "{{.cluster}}" not found. Run "minikube profile list" to view all profiles.`, out.V{"cluster": name}) exitTip("start", name, reason.ExGuestNotFound) } exit.Error(reason.HostConfigLoad, "Error getting cluster config", err) @@ -174,6 +174,6 @@ func ExampleCmd(cname string, action string) string { // exitTip returns an action tip and exits func exitTip(action string, profile string, code int) { command := ExampleCmd(profile, action) - out.T(style.Workaround, `To fix this, run: "{{.command}}"`, out.V{"command": command}) + out.T(style.Workaround, `To start a cluster, run: "{{.command}}"`, out.V{"command": command}) os.Exit(code) } diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index b2753f9cf9..f9b5a85d93 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -133,6 +133,9 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) { return nil, errors.Wrap(err, "setting up certs") } + if err := bs.UpdateNode(*starter.Cfg, *starter.Node, cr); err != nil { + return nil, errors.Wrap(err, "update node") + } } var wg sync.WaitGroup @@ -167,10 +170,6 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) { prepareNone() } } else { - if err := bs.UpdateNode(*starter.Cfg, *starter.Node, cr); err != nil { - return nil, errors.Wrap(err, "update node") - } - // Make sure to use the command runner for the control plane to generate the join token cpBs, cpr, err := cluster.ControlPlaneBootstrapper(starter.MachineAPI, starter.Cfg, viper.GetString(cmdcfg.Bootstrapper)) if err != nil { @@ -196,7 +195,7 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) { } } - klog.Infof("Will wait %s for node ...", waitTimeout) + klog.Infof("Will wait %s for node up to ", viper.GetDuration(waitTimeout)) if err := bs.WaitForNode(*starter.Cfg, *starter.Node, viper.GetDuration(waitTimeout)); err != nil { return nil, errors.Wrapf(err, "wait %s for node", viper.GetDuration(waitTimeout)) } @@ -319,6 +318,7 @@ func setupKubeconfig(h *host.Host, cc *config.ClusterConfig, n *config.Node, clu } kcs := &kubeconfig.Settings{ ClusterName: clusterName, + Namespace: cc.KubernetesConfig.Namespace, ClusterServerAddress: addr, ClientCertificate: localpath.ClientCert(cc.Name), ClientKey: localpath.ClientKey(cc.Name), diff --git a/pkg/minikube/out/register/register.go b/pkg/minikube/out/register/register.go index f5e316c1cb..5672e7ad30 100644 --- a/pkg/minikube/out/register/register.go +++ b/pkg/minikube/out/register/register.go @@ -39,6 +39,7 @@ const ( Done RegStep = "Done" Stopping RegStep = "Stopping" + PowerOff RegStep = "PowerOff" Deleting RegStep = "Deleting" Pausing RegStep = "Pausing" Unpausing RegStep = "Unpausing" @@ -78,7 +79,7 @@ func init() { Done, }, - Stopping: {Stopping, Done}, + Stopping: {Stopping, PowerOff, Done}, Pausing: {Pausing, Done}, Unpausing: {Unpausing, Done}, Deleting: {Deleting, Stopping, Deleting, Done}, @@ -126,5 +127,3 @@ func (r *Register) SetStep(s RegStep) { r.current = s } - -// recordStep records the current step diff --git a/pkg/minikube/perf/logs_test.go b/pkg/minikube/perf/logs_test.go index 0fbdf35bfb..65b2eae52f 100644 --- a/pkg/minikube/perf/logs_test.go +++ b/pkg/minikube/perf/logs_test.go @@ -38,8 +38,8 @@ func TestTimeCommandLogs(t *testing.T) { if !ok { t.Fatalf("expected log %s but didn't find it", log) } - // Let's give a little wiggle room so we don't fail if time is 3 and actualTime is 2.999 - if actualTime < time && time-actualTime > 0.001 { + // Let's give a little wiggle room so we don't fail if time is 3 and actualTime is 2.99... + if actualTime < time && time-actualTime > 0.01 { t.Fatalf("expected log \"%s\" to take more time than it actually did. got %v, expected > %v", log, actualTime, time) } } diff --git a/pkg/minikube/proxy/proxy.go b/pkg/minikube/proxy/proxy.go index 7ce4d0516d..bab3355669 100644 --- a/pkg/minikube/proxy/proxy.go +++ b/pkg/minikube/proxy/proxy.go @@ -176,7 +176,7 @@ func SetDockerEnv() []string { } if isLocalProxy(u.Host) { - out.WarningT("Not passing {{.name}}={{.value}} to docker env.", out.V{"name": k, "value": v}) + out.WarningT("Local proxy ignored: not passing {{.name}}={{.value}} to docker env.", out.V{"name": k, "value": v}) continue } } diff --git a/pkg/minikube/registry/drvs/parallels/parallels.go b/pkg/minikube/registry/drvs/parallels/parallels.go index 86acbd556c..8899e74df8 100644 --- a/pkg/minikube/registry/drvs/parallels/parallels.go +++ b/pkg/minikube/registry/drvs/parallels/parallels.go @@ -22,7 +22,7 @@ import ( "fmt" "os/exec" - parallels "github.com/Parallels/docker-machine-parallels" + parallels "github.com/Parallels/docker-machine-parallels/v2" "github.com/docker/machine/libmachine/drivers" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/download" @@ -55,9 +55,9 @@ func configure(cfg config.ClusterConfig, n config.Node) (interface{}, error) { } func status() registry.State { - _, err := exec.LookPath("docker-machine-driver-parallels") + _, err := exec.LookPath("prlctl") if err != nil { - return registry.State{Error: err, Fix: "Install docker-machine-driver-parallels", Doc: "https://minikube.sigs.k8s.io/docs/reference/drivers/parallels/"} + return registry.State{Error: err, Fix: "Install Parallels Desktop for Mac", Doc: "https://minikube.sigs.k8s.io/docs/drivers/parallels/"} } - return registry.State{Installed: true, Healthy: true, Running: true} + return registry.State{Installed: true, Healthy: true} } diff --git a/pkg/minikube/translate/translate.go b/pkg/minikube/translate/translate.go index a80b046a8d..3a69fcaf65 100644 --- a/pkg/minikube/translate/translate.go +++ b/pkg/minikube/translate/translate.go @@ -104,7 +104,8 @@ func DetermineLocale() { // setPreferredLanguageTag configures which language future messages should use. func setPreferredLanguageTag(l language.Tag) { - klog.Infof("Setting Language to %s ...", l) + // output message only if verbosity level is set and we still haven't got all the flags parsed in main() + klog.V(1).Infof("Setting Language to %s ...", l) preferredLanguage = l } diff --git a/site/content/en/docs/_index.md b/site/content/en/docs/_index.md index 8ea63d2e2c..2d001798da 100755 --- a/site/content/en/docs/_index.md +++ b/site/content/en/docs/_index.md @@ -11,7 +11,7 @@ minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows ![Screenshot](/images/screenshot.png) -🎉 Latest Release: *v1.13.0* - September 3, 2020 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md)) +🎉 Latest Release: *v1.14.2* - October 27, 2020 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md)) ## Highlights diff --git a/site/content/en/docs/commands/addons.md b/site/content/en/docs/commands/addons.md index dfa3dc0a23..621179f56f 100644 --- a/site/content/en/docs/commands/addons.md +++ b/site/content/en/docs/commands/addons.md @@ -17,23 +17,19 @@ addons modifies minikube addons files using subcommands like "minikube addons en minikube addons SUBCOMMAND [flags] ``` -### Options - -``` - -h, --help help for addons -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -54,23 +50,19 @@ Configures the addon w/ADDON_NAME within minikube (example: minikube addons conf minikube addons configure ADDON_NAME [flags] ``` -### Options - -``` - -h, --help help for configure -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -91,23 +83,19 @@ Disables the addon w/ADDON_NAME within minikube (example: minikube addons disabl minikube addons disable ADDON_NAME [flags] ``` -### Options - -``` - -h, --help help for disable -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -128,23 +116,19 @@ Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable minikube addons enable ADDON_NAME [flags] ``` -### Options - -``` - -h, --help help for enable -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -166,23 +150,19 @@ Simply type addons help [path to command] for full details. minikube addons help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -206,7 +186,6 @@ minikube addons list [flags] ### Options ``` - -h, --help help for list -o, --output string minikube addons list --output OUTPUT. json, list (default "list") ``` @@ -216,11 +195,13 @@ minikube addons list [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -245,7 +226,6 @@ minikube addons open ADDON_NAME [flags] ``` --format string Format to output addons URL in. This format will be applied to each url individually and they will be printed one at a time. (default "http://{{.IP}}:{{.Port}}") - -h, --help help for open --https Open the addons URL with https instead of http --interval int The time interval for each check that wait performs in seconds (default 1) --url Display the Kubernetes addons URL in the CLI instead of opening it in the default browser @@ -258,11 +238,13 @@ minikube addons open ADDON_NAME [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/cache.md b/site/content/en/docs/commands/cache.md index c3d81e8eed..3917b19b70 100644 --- a/site/content/en/docs/commands/cache.md +++ b/site/content/en/docs/commands/cache.md @@ -13,23 +13,19 @@ Add, delete, or push a local image into minikube Add, delete, or push a local image into minikube -### Options - -``` - -h, --help help for cache -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -50,23 +46,19 @@ Add an image to local cache. minikube cache add [flags] ``` -### Options - -``` - -h, --help help for add -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -87,23 +79,19 @@ Delete an image from the local cache. minikube cache delete [flags] ``` -### Options - -``` - -h, --help help for delete -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -125,23 +113,19 @@ Simply type cache help [path to command] for full details. minikube cache help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -167,7 +151,6 @@ minikube cache list [flags] ``` --format string Go template format string for the cache list output. The format for Go templates can be found here: https://golang.org/pkg/text/template/ For the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#CacheListTemplate (default "{{.CacheImage}}\n") - -h, --help help for list ``` ### Options inherited from parent commands @@ -176,11 +159,13 @@ minikube cache list [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -201,23 +186,19 @@ reloads images previously added using the 'cache add' subcommand minikube cache reload [flags] ``` -### Options - -``` - -h, --help help for reload -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/completion.md b/site/content/en/docs/commands/completion.md index 2b7ee98802..7738a2e216 100644 --- a/site/content/en/docs/commands/completion.md +++ b/site/content/en/docs/commands/completion.md @@ -38,23 +38,19 @@ Outputs minikube shell completion for the given shell (bash, zsh or fish) minikube completion SHELL [flags] ``` -### Options - -``` - -h, --help help for completion -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/config.md b/site/content/en/docs/commands/config.md index 4323b610ca..8e66d3f193 100644 --- a/site/content/en/docs/commands/config.md +++ b/site/content/en/docs/commands/config.md @@ -47,23 +47,19 @@ Configurable fields: minikube config SUBCOMMAND [flags] ``` -### Options - -``` - -h, --help help for config -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -90,7 +86,6 @@ minikube config defaults PROPERTY_NAME [flags] ### Options ``` - -h, --help help for defaults --output string Output format. Accepted values: [json] ``` @@ -100,11 +95,13 @@ minikube config defaults PROPERTY_NAME [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -125,23 +122,19 @@ Returns the value of PROPERTY_NAME from the minikube config file. Can be overwr minikube config get PROPERTY_NAME [flags] ``` -### Options - -``` - -h, --help help for get -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -163,23 +156,19 @@ Simply type config help [path to command] for full details. minikube config help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -201,23 +190,19 @@ Sets the PROPERTY_NAME config value to PROPERTY_VALUE minikube config set PROPERTY_NAME PROPERTY_VALUE [flags] ``` -### Options - -``` - -h, --help help for set -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -238,23 +223,19 @@ unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags minikube config unset PROPERTY_NAME [flags] ``` -### Options - -``` - -h, --help help for unset -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -280,7 +261,6 @@ minikube config view [flags] ``` --format string Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/ For the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate (default "- {{.ConfigKey}}: {{.ConfigValue}}\n") - -h, --help help for view ``` ### Options inherited from parent commands @@ -289,11 +269,13 @@ minikube config view [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/dashboard.md b/site/content/en/docs/commands/dashboard.md index dc24a77201..8df23e2c93 100644 --- a/site/content/en/docs/commands/dashboard.md +++ b/site/content/en/docs/commands/dashboard.md @@ -20,8 +20,7 @@ minikube dashboard [flags] ### Options ``` - -h, --help help for dashboard - --url Display dashboard URL instead of opening a browser + --url Display dashboard URL instead of opening a browser ``` ### Options inherited from parent commands @@ -30,11 +29,13 @@ minikube dashboard [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/delete.md b/site/content/en/docs/commands/delete.md index 1a680656fa..34cea14518 100644 --- a/site/content/en/docs/commands/delete.md +++ b/site/content/en/docs/commands/delete.md @@ -22,7 +22,6 @@ minikube delete [flags] ``` --all Set flag to delete all profiles - -h, --help help for delete --purge Set this flag to delete the '.minikube' folder from your user directory. ``` @@ -32,11 +31,13 @@ minikube delete [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/docker-env.md b/site/content/en/docs/commands/docker-env.md index 7572c9ab0d..7ce914a063 100644 --- a/site/content/en/docs/commands/docker-env.md +++ b/site/content/en/docs/commands/docker-env.md @@ -20,7 +20,6 @@ minikube docker-env [flags] ### Options ``` - -h, --help help for docker-env --no-proxy Add machine IP to NO_PROXY environment variable --shell string Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect -u, --unset Unset variables instead of setting them @@ -32,11 +31,13 @@ minikube docker-env [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/help.md b/site/content/en/docs/commands/help.md index 940c9a5471..6f25e68ca8 100644 --- a/site/content/en/docs/commands/help.md +++ b/site/content/en/docs/commands/help.md @@ -18,23 +18,19 @@ Simply type minikube help [path to command] for full details. minikube help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/ip.md b/site/content/en/docs/commands/ip.md index 1102a594e6..0a14345642 100644 --- a/site/content/en/docs/commands/ip.md +++ b/site/content/en/docs/commands/ip.md @@ -17,23 +17,19 @@ Retrieves the IP address of the running cluster, and writes it to STDOUT. minikube ip [flags] ``` -### Options - -``` - -h, --help help for ip -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/kubectl.md b/site/content/en/docs/commands/kubectl.md index f3d83e394b..a787c52b5b 100644 --- a/site/content/en/docs/commands/kubectl.md +++ b/site/content/en/docs/commands/kubectl.md @@ -21,23 +21,19 @@ minikube kubectl -- get pods --namespace kube-system minikube kubectl [flags] ``` -### Options - -``` - -h, --help help for kubectl -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/logs.md b/site/content/en/docs/commands/logs.md index 01ba3ca030..1734f8b7b9 100644 --- a/site/content/en/docs/commands/logs.md +++ b/site/content/en/docs/commands/logs.md @@ -21,7 +21,6 @@ minikube logs [flags] ``` -f, --follow Show only the most recent journal entries, and continuously print new entries as they are appended to the journal. - -h, --help help for logs -n, --length int Number of lines back to go within the log (default 60) --node string The node to get logs from. Defaults to the primary control plane. --problems Show only log entries which point to known problems @@ -33,11 +32,13 @@ minikube logs [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/mount.md b/site/content/en/docs/commands/mount.md index 4323143a08..8d9decd590 100644 --- a/site/content/en/docs/commands/mount.md +++ b/site/content/en/docs/commands/mount.md @@ -22,7 +22,6 @@ minikube mount [flags] : ``` --9p-version string Specify the 9p version that the mount should use (default "9p2000.L") --gid string Default group id used for the mount (default "docker") - -h, --help help for mount --ip string Specify the ip that the mount should be setup on --kill Kill the mount process spawned by minikube start --mode uint File permissions used for the mount (default 493) @@ -38,11 +37,13 @@ minikube mount [flags] : --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/node.md b/site/content/en/docs/commands/node.md index de9b64ee22..e7c22ec26c 100644 --- a/site/content/en/docs/commands/node.md +++ b/site/content/en/docs/commands/node.md @@ -17,23 +17,19 @@ Operations on nodes minikube node [flags] ``` -### Options - -``` - -h, --help help for node -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -59,7 +55,6 @@ minikube node add [flags] ``` --control-plane If true, the node added will also be a control plane in addition to a worker. --delete-on-failure If set, delete the current cluster if start fails and try again. Defaults to false. - -h, --help help for add --worker If true, the added node will be marked for work. Defaults to true. (default true) ``` @@ -69,11 +64,13 @@ minikube node add [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -94,23 +91,19 @@ Deletes a node from a cluster. minikube node delete [flags] ``` -### Options - -``` - -h, --help help for delete -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -132,23 +125,19 @@ Simply type node help [path to command] for full details. minikube node help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -169,23 +158,19 @@ List existing minikube nodes. minikube node list [flags] ``` -### Options - -``` - -h, --help help for list -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -210,7 +195,6 @@ minikube node start [flags] ``` --delete-on-failure If set, delete the current cluster if start fails and try again. Defaults to false. - -h, --help help for start ``` ### Options inherited from parent commands @@ -219,11 +203,13 @@ minikube node start [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -244,23 +230,19 @@ Stops a node in a cluster. minikube node stop [flags] ``` -### Options - -``` - -h, --help help for stop -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/pause.md b/site/content/en/docs/commands/pause.md index 49bd6686d2..26938f43a2 100644 --- a/site/content/en/docs/commands/pause.md +++ b/site/content/en/docs/commands/pause.md @@ -22,7 +22,7 @@ minikube pause [flags] ``` -n, ----namespaces strings namespaces to pause (default [kube-system,kubernetes-dashboard,storage-gluster,istio-operator]) -A, --all-namespaces If set, pause all namespaces - -h, --help help for pause + -o, --output string Format to print stdout in. Options include: [text,json] (default "text") ``` ### Options inherited from parent commands @@ -31,11 +31,13 @@ minikube pause [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/podman-env.md b/site/content/en/docs/commands/podman-env.md index ee22ac076e..ef94b796b3 100644 --- a/site/content/en/docs/commands/podman-env.md +++ b/site/content/en/docs/commands/podman-env.md @@ -20,7 +20,6 @@ minikube podman-env [flags] ### Options ``` - -h, --help help for podman-env --shell string Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect -u, --unset Unset variables instead of setting them ``` @@ -31,11 +30,13 @@ minikube podman-env [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/profile.md b/site/content/en/docs/commands/profile.md index d0b728a578..eb1ea697a3 100644 --- a/site/content/en/docs/commands/profile.md +++ b/site/content/en/docs/commands/profile.md @@ -17,23 +17,19 @@ profile sets the current minikube profile, or gets the current profile if no arg minikube profile [MINIKUBE_PROFILE_NAME]. You can return to the default minikube profile by running `minikube profile default` [flags] ``` -### Options - -``` - -h, --help help for profile -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -55,23 +51,19 @@ Simply type profile help [path to command] for full details. minikube profile help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -95,7 +87,6 @@ minikube profile list [flags] ### Options ``` - -h, --help help for list -o, --output string The output format. One of 'json', 'table' (default "table") ``` @@ -105,11 +96,13 @@ minikube profile list [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/service.md b/site/content/en/docs/commands/service.md index a7acf2cbfe..c387e9f637 100644 --- a/site/content/en/docs/commands/service.md +++ b/site/content/en/docs/commands/service.md @@ -21,7 +21,6 @@ minikube service [flags] SERVICE ``` --format string Format to output service URL in. This format will be applied to each url individually and they will be printed one at a time. (default "http://{{.IP}}:{{.Port}}") - -h, --help help for service --https Open the service URL with https instead of http (defaults to "false") --interval int The initial time interval for each check that wait performs in seconds (default 1) -n, --namespace string The service namespace (default "default") @@ -35,11 +34,13 @@ minikube service [flags] SERVICE --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -61,12 +62,6 @@ Simply type service help [path to command] for full details. minikube service help [command] [flags] ``` -### Options - -``` - -h, --help help for help -``` - ### Options inherited from parent commands ``` @@ -74,11 +69,13 @@ minikube service help [command] [flags] --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") --format string Format to output service URL in. This format will be applied to each url individually and they will be printed one at a time. (default "http://{{.IP}}:{{.Port}}") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files @@ -102,7 +99,6 @@ minikube service list [flags] ### Options ``` - -h, --help help for list -n, --namespace string The services namespace ``` @@ -113,11 +109,13 @@ minikube service list [flags] --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") --format string Format to output service URL in. This format will be applied to each url individually and they will be printed one at a time. (default "http://{{.IP}}:{{.Port}}") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/ssh-key.md b/site/content/en/docs/commands/ssh-key.md index ab0e332a03..89d84187f0 100644 --- a/site/content/en/docs/commands/ssh-key.md +++ b/site/content/en/docs/commands/ssh-key.md @@ -17,23 +17,19 @@ Retrieve the ssh identity key path of the specified cluster. minikube ssh-key [flags] ``` -### Options - -``` - -h, --help help for ssh-key -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/ssh.md b/site/content/en/docs/commands/ssh.md index 3538158ed0..3a00f98d1e 100644 --- a/site/content/en/docs/commands/ssh.md +++ b/site/content/en/docs/commands/ssh.md @@ -20,7 +20,6 @@ minikube ssh [flags] ### Options ``` - -h, --help help for ssh --native-ssh Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'. (default true) -n, --node string The node to ssh into. Defaults to the primary control plane. ``` @@ -31,11 +30,13 @@ minikube ssh [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index ec69092d85..a23717f0b5 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -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.13@sha256:4d43acbd0050148d4bc399931f1b15253b5e73815b63a67b8ab4a5c9e523403f") + --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") --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") @@ -51,7 +51,6 @@ minikube start [flags] --feature-gates string A set of key=value pairs that describe feature gates for alpha/experimental features. --force Force minikube to perform possibly dangerous operations --force-systemd If set, force the container runtime to use sytemd as cgroup manager. Currently available for docker and crio. Defaults to false. - -h, --help help for start --host-dns-resolver Enable host resolver for NAT DNS requests (virtualbox driver only) (default true) --host-only-cidr string The CIDR to be used for the minikube VM (virtualbox driver only) (default "192.168.99.1/24") --host-only-nic-type string NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only) (default "virtio") @@ -75,6 +74,7 @@ minikube start [flags] --memory string Amount of RAM to allocate to Kubernetes (format: [], where unit = b, k, m or g). --mount This will start the mount daemon and automatically mount files into minikube. --mount-string string The argument to pass the minikube mount command on start. + --namespace string The named space to activate after start (default "default") --nat-nic-type string NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only) (default "virtio") --native-ssh Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'. (default true) --network-plugin string Kubelet network plug-in to use (default: auto) @@ -90,7 +90,7 @@ minikube start [flags] --uuid string Provide VM UUID to restore MAC address (hyperkit driver only) --vm Filter to use only VM Drivers --vm-driver driver DEPRECATED, use driver instead. - --wait strings comma separated list of Kubernetes components to verify and wait for after starting a cluster. defaults to "apiserver,system_pods", available options: "apiserver,system_pods,default_sa,apps_running,node_ready" . other acceptable values are 'all' or 'none', 'true' and 'false' (default [apiserver,system_pods]) + --wait strings comma separated list of Kubernetes components to verify and wait for after starting a cluster. defaults to "apiserver,system_pods", available options: "apiserver,system_pods,default_sa,apps_running,node_ready,kubelet" . other acceptable values are 'all' or 'none', 'true' and 'false' (default [apiserver,system_pods]) --wait-timeout duration max time to wait per Kubernetes or host to be healthy. (default 6m0s) ``` @@ -100,11 +100,13 @@ minikube start [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/status.md b/site/content/en/docs/commands/status.md index 945eba491e..f8ca0b73e9 100644 --- a/site/content/en/docs/commands/status.md +++ b/site/content/en/docs/commands/status.md @@ -24,7 +24,6 @@ minikube status [flags] ``` -f, --format string Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/ For the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status (default "{{.Name}}\ntype: Control Plane\nhost: {{.Host}}\nkubelet: {{.Kubelet}}\napiserver: {{.APIServer}}\nkubeconfig: {{.Kubeconfig}}\n\n") - -h, --help help for status -l, --layout string output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster' (default "nodes") -n, --node string The node to check status for. Defaults to control plane. Leave blank with default format for status on all nodes. -o, --output string minikube status --output OUTPUT. json, text (default "text") @@ -36,11 +35,13 @@ minikube status [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/stop.md b/site/content/en/docs/commands/stop.md index 1fbadc44c3..9f54204ab1 100644 --- a/site/content/en/docs/commands/stop.md +++ b/site/content/en/docs/commands/stop.md @@ -21,8 +21,8 @@ minikube stop [flags] ``` --all Set flag to stop all profiles (clusters) - -h, --help help for stop --keep-context-active keep the kube-context active after cluster is stopped. Defaults to false. + -o, --output string Format to print stdout in. Options include: [text,json] (default "text") ``` ### Options inherited from parent commands @@ -31,11 +31,13 @@ minikube stop [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/tunnel.md b/site/content/en/docs/commands/tunnel.md index 88bb0f72cc..370e8128dc 100644 --- a/site/content/en/docs/commands/tunnel.md +++ b/site/content/en/docs/commands/tunnel.md @@ -21,7 +21,6 @@ minikube tunnel [flags] ``` -c, --cleanup call with cleanup=true to remove old tunnels (default true) - -h, --help help for tunnel ``` ### Options inherited from parent commands @@ -30,11 +29,13 @@ minikube tunnel [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/unpause.md b/site/content/en/docs/commands/unpause.md index 6fb1eda3b5..aabcedf80b 100644 --- a/site/content/en/docs/commands/unpause.md +++ b/site/content/en/docs/commands/unpause.md @@ -22,7 +22,7 @@ minikube unpause [flags] ``` -n, ----namespaces strings namespaces to unpause (default [kube-system,kubernetes-dashboard,storage-gluster,istio-operator]) -A, --all-namespaces If set, unpause all namespaces - -h, --help help for unpause + -o, --output string Format to print stdout in. Options include: [text,json] (default "text") ``` ### Options inherited from parent commands @@ -31,11 +31,13 @@ minikube unpause [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/update-check.md b/site/content/en/docs/commands/update-check.md index d86948c3b7..b3d98bb1bb 100644 --- a/site/content/en/docs/commands/update-check.md +++ b/site/content/en/docs/commands/update-check.md @@ -17,23 +17,19 @@ Print current and latest version number minikube update-check [flags] ``` -### Options - -``` - -h, --help help for update-check -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/update-context.md b/site/content/en/docs/commands/update-context.md index 877ee011b7..b981dbeba5 100644 --- a/site/content/en/docs/commands/update-context.md +++ b/site/content/en/docs/commands/update-context.md @@ -18,23 +18,19 @@ Retrieves the IP address of the running cluster, checks it minikube update-context [flags] ``` -### Options - -``` - -h, --help help for update-context -``` - ### Options inherited from parent commands ``` --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/commands/version.md b/site/content/en/docs/commands/version.md index 4b4a485d57..d1fc7e06aa 100644 --- a/site/content/en/docs/commands/version.md +++ b/site/content/en/docs/commands/version.md @@ -20,7 +20,6 @@ minikube version [flags] ### Options ``` - -h, --help help for version -o, --output string One of 'yaml' or 'json'. --short Print just the version number. ``` @@ -31,11 +30,13 @@ minikube version [flags] --add_dir_header If true, adds the file directory to the header of the log messages --alsologtostderr log to standard error as well as files -b, --bootstrapper string The name of the cluster bootstrapper that will set up the Kubernetes cluster. (default "kubeadm") + -h, --help --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --log_file_max_size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800) --logtostderr log to standard error instead of files + --one_output If true, only write logs to their native severity level (vs also writing to each lower severity level -p, --profile string The name of the minikube VM being used. This can be set to allow having multiple instances of minikube independently. (default "minikube") --skip_headers If true, avoid header prefixes in the log messages --skip_log_headers If true, avoid headers when opening log files diff --git a/site/content/en/docs/drivers/_index.md b/site/content/en/docs/drivers/_index.md index eb8b449366..c15a342363 100644 --- a/site/content/en/docs/drivers/_index.md +++ b/site/content/en/docs/drivers/_index.md @@ -24,7 +24,7 @@ To do so, we use the [Docker Machine](https://github.com/docker/machine) library * [Docker]({{}}) - VM + Container (preferred) * [Hyperkit]({{}}) - VM -* [VirtualBox]({{}}) - FVM +* [VirtualBox]({{}}) - VM * [Parallels]({{}}) - VM * [VMware]({{}}) - VM diff --git a/site/content/en/docs/drivers/includes/parallels_usage.inc b/site/content/en/docs/drivers/includes/parallels_usage.inc index 21fe17cb06..40671413b0 100644 --- a/site/content/en/docs/drivers/includes/parallels_usage.inc +++ b/site/content/en/docs/drivers/includes/parallels_usage.inc @@ -2,24 +2,6 @@ * Parallels Desktop 11.0.0+ Pro or Business edition -## Driver Installation - -If the [Brew Package Manager](https://brew.sh/) is installed, run: - -```shell -brew install docker-machine-parallels -``` - -Otherwise: - -```shell -latest=$(curl -s https://api.github.com/repos/Parallels/docker-machine-parallels/releases/latest \ - | grep -o 'http.*docker-machine-driver-parallels' | head -n1) -curl -LO $latest -install docker-machine-driver-parallels /usr/local/bin/ -``` - - ## Usage Start a cluster using the parallels driver: diff --git a/site/content/en/docs/drivers/parallels.md b/site/content/en/docs/drivers/parallels.md index 6498a913a1..00489edf3e 100644 --- a/site/content/en/docs/drivers/parallels.md +++ b/site/content/en/docs/drivers/parallels.md @@ -7,7 +7,7 @@ aliases: ## Overview -The Parallels driver is particularly useful for users who own Parallels Desktop, as it does not require VT-x hardware support. +The Parallels driver is particularly useful for users who own Parallels Desktop for Mac, as it does not require VT-x hardware support. {{% readfile file="/docs/drivers/includes/parallels_usage.inc" %}} diff --git a/site/content/en/docs/start/_index.md b/site/content/en/docs/start/_index.md index 5ab46f0dea..d3ede45804 100644 --- a/site/content/en/docs/start/_index.md +++ b/site/content/en/docs/start/_index.md @@ -149,7 +149,7 @@ To access a LoadBalancer deployment, use the "minikube tunnel" command. Here is ```shell kubectl create deployment balanced --image=k8s.gcr.io/echoserver:1.4 -kubectl expose deployment balanced --type=LoadBalancer --port=8000 +kubectl expose deployment balanced --type=LoadBalancer --port=8080 ``` In another window, start the tunnel to create a routable IP for the 'balanced' deployment: @@ -162,7 +162,7 @@ To find the routable IP, run this command and examine the `EXTERNAL-IP` column: `kubectl get services balanced` -Your deployment is now available at <EXTERNAL-IP>:8000 +Your deployment is now available at <EXTERNAL-IP>:8080

5Manage your cluster

diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index a36522a5a6..7b1ae0436d 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -25,9 +25,12 @@ import ( "runtime" "testing" + "github.com/Azure/azure-sdk-for-go/tools/apidiff/ioext" "github.com/blang/semver" "k8s.io/minikube/pkg/minikube/driver" + "k8s.io/minikube/pkg/minikube/localpath" + "k8s.io/minikube/pkg/version" ) func TestKVMDriverInstallOrUpdate(t *testing.T) { @@ -158,8 +161,8 @@ func TestHyperKitDriverInstallOrUpdate(t *testing.T) { t.Fatalf("Expected new semver. test: %v, got: %v", tc.name, err) } - if err := exec.Command("sudo", "-n", "ls").Run(); err != nil { - t.Skipf("password required to execute 'ls', skipping remaining test: %v", err) + if sudoNeedsPassword() { + t.Skipf("password required to execute 'sudo', skipping remaining test") } err = driver.InstallOrUpdate("hyperkit", dir, newerVersion, false, true) @@ -173,3 +176,123 @@ func TestHyperKitDriverInstallOrUpdate(t *testing.T) { } } } + +func TestHyperkitDriverSkipUpgrade(t *testing.T) { + if runtime.GOOS != "darwin" { + t.Skip("Skip if not darwin.") + } + + MaybeParallel(t) + tests := []struct { + name string + path string + expectedVersion string + }{ + { + name: "upgrade-v1.11.0-to-current", + path: filepath.Join(*testdataDir, "hyperkit-driver-version-1.11.0"), + expectedVersion: "v1.11.0", + }, + { + name: "upgrade-v1.2.0-to-current", + path: filepath.Join(*testdataDir, "hyperkit-driver-older-version"), + expectedVersion: version.GetVersion(), + }, + } + + sudoPath, err := exec.LookPath("sudo") + if err != nil { + t.Fatalf("No sudo in path: %v", err) + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + mkDir, drvPath, err := prepareTempMinikubeDirWithHyperkitDriver(tc.name, tc.path) + if err != nil { + t.Fatalf("Failed to prepare tempdir. test: %s, got: %v", tc.name, err) + } + defer func() { + if err := os.RemoveAll(mkDir); err != nil { + t.Errorf("Failed to remove mkDir %q: %v", mkDir, err) + } + }() + + cmd := exec.Command(Target(), "start", "--download-only", "--interactive=false", "--driver=hyperkit") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stdout + cmd.Env = append(os.Environ(), + fmt.Sprintf("PATH=%v%c%v", filepath.Dir(drvPath), filepath.ListSeparator, filepath.Dir(sudoPath)), + "MINIKUBE_HOME="+mkDir) + if err = cmd.Run(); err != nil { + t.Fatalf("failed to run minikube. got: %v", err) + } + + upgradedVersion, err := driverVersion(drvPath) + if err != nil { + t.Fatalf("failed to check driver version. got: %v", err) + } + + if upgradedVersion != tc.expectedVersion { + t.Fatalf("invalid driver version. expected: %v, got: %v", tc.expectedVersion, upgradedVersion) + } + }) + } +} + +func sudoNeedsPassword() bool { + err := exec.Command("sudo", "-n", "ls").Run() + return err != nil +} + +func driverVersion(path string) (string, error) { + output, err := exec.Command(path, "version").Output() + if err != nil { + return "", err + } + + var resultVersion string + _, err = fmt.Sscanf(string(output), "version: %s\n", &resultVersion) + if err != nil { + return "", err + } + return resultVersion, nil +} + +// prepareTempMinikubeDirWithHyperkitDriver creates a temp .minikube directory +// with structure essential to testing of hyperkit driver updates +func prepareTempMinikubeDirWithHyperkitDriver(name, driver string) (string, string, error) { + temp, err := ioutil.TempDir("", name) + if err != nil { + return "", "", fmt.Errorf("failed to create tempdir: %v", err) + } + mkDir := filepath.Join(temp, ".minikube") + mkBinDir := filepath.Join(mkDir, "bin") + err = os.MkdirAll(mkBinDir, 0777) + if err != nil { + return "", "", fmt.Errorf("failed to prepare tempdir: %v", err) + } + + pwd, err := os.Getwd() + if err != nil { + return "", "", fmt.Errorf("failed to get working directory: %v", err) + } + + testDataDriverPath := filepath.Join(pwd, driver, "docker-machine-driver-hyperkit") + if _, err = os.Stat(testDataDriverPath); err != nil { + return "", "", fmt.Errorf("expected driver to exist: %v", err) + } + // copy driver to temp bin + testDriverPath := filepath.Join(mkBinDir, "docker-machine-driver-hyperkit") + if err = ioext.CopyFile(testDataDriverPath, testDriverPath, false); err != nil { + return "", "", fmt.Errorf("failed to setup current hyperkit driver: %v", err) + } + + // try to copy cached files to the temp minikube folder to avoid downloading of iso and preloads + _ = ioext.CopyDir(filepath.Join(localpath.MakeMiniPath("cache")), filepath.Join(mkDir, "cache")) + + // change permission to allow driver to be executable + if err = os.Chmod(testDriverPath, 0755); err != nil { + return "", "", fmt.Errorf("failed to set driver permission: %v", err) + } + return temp, testDriverPath, nil +} diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index f3d236e9ba..16c2170e8a 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -328,10 +328,10 @@ func validateMinikubeKubectlDirectCall(ctx context.Context, t *testing.T, profil } defer os.Remove(dstfn) // clean up - kubectlArgs := []string{"get", "pods"} + kubectlArgs := []string{"--context", profile, "get", "pods"} rr, err := Run(t, exec.CommandContext(ctx, dstfn, kubectlArgs...)) if err != nil { - t.Fatalf("failed to run kubectl directl. args %q: %v", rr.Command(), err) + t.Fatalf("failed to run kubectl directly. args %q: %v", rr.Command(), err) } } diff --git a/test/integration/json_output_test.go b/test/integration/json_output_test.go index b5085dffd7..01dfa6feb3 100644 --- a/test/integration/json_output_test.go +++ b/test/integration/json_output_test.go @@ -36,34 +36,56 @@ func TestJSONOutput(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), Minutes(40)) defer Cleanup(t, profile, cancel) - startArgs := []string{"start", "-p", profile, "--memory=2200", "--output=json", "--wait=true"} - startArgs = append(startArgs, StartArgs()...) - - rr, err := Run(t, exec.CommandContext(ctx, Target(), startArgs...)) - if err != nil { - t.Errorf("failed to clean up: args %q: %v", rr.Command(), err) + tests := []struct { + command string + args []string + }{ + { + command: "start", + args: append([]string{"--memory=2200", "--wait=true"}, StartArgs()...), + }, { + command: "pause", + }, { + command: "unpause", + }, { + command: "stop", + }, } - ces, err := cloudEvents(t, rr) - if err != nil { - t.Fatalf("converting to cloud events: %v\n", err) - } + for _, test := range tests { + t.Run(test.command, func(t *testing.T) { + args := []string{test.command, "-p", profile, "--output=json"} + args = append(args, test.args...) - type validateJSONOutputFunc func(context.Context, *testing.T, []*cloudEvent) - t.Run("serial", func(t *testing.T) { - serialTests := []struct { - name string - validator validateJSONOutputFunc - }{ - {"DistinctCurrentSteps", validateDistinctCurrentSteps}, - {"IncreasingCurrentSteps", validateIncreasingCurrentSteps}, - } - for _, stc := range serialTests { - t.Run(stc.name, func(t *testing.T) { - stc.validator(ctx, t, ces) + rr, err := Run(t, exec.CommandContext(ctx, Target(), args...)) + if err != nil { + t.Errorf("failed to clean up: args %q: %v", rr.Command(), err) + } + + ces, err := cloudEvents(t, rr) + if err != nil { + t.Fatalf("converting to cloud events: %v\n", err) + } + + type validateJSONOutputFunc func(context.Context, *testing.T, []*cloudEvent) + t.Run("parallel", func(t *testing.T) { + parallelTests := []struct { + name string + validator validateJSONOutputFunc + }{ + {"DistinctCurrentSteps", validateDistinctCurrentSteps}, + {"IncreasingCurrentSteps", validateIncreasingCurrentSteps}, + } + for _, stc := range parallelTests { + stc := stc + t.Run(stc.name, func(t *testing.T) { + MaybeParallel(t) + stc.validator(ctx, t, ces) + }) + } }) - } - }) + }) + } } // make sure each step has a distinct step number diff --git a/test/integration/multinode_test.go b/test/integration/multinode_test.go index 0c0689943d..bad0bf7817 100644 --- a/test/integration/multinode_test.go +++ b/test/integration/multinode_test.go @@ -24,7 +24,6 @@ import ( "os/exec" "strings" "testing" - "time" ) func TestMultiNode(t *testing.T) { @@ -228,8 +227,6 @@ func validateRestartMultiNodeCluster(ctx context.Context, t *testing.T, profile t.Fatalf("failed to start cluster. args %q : %v", rr.Command(), err) } - time.Sleep(Seconds(45)) - // Make sure minikube status shows 2 running nodes rr, err = Run(t, exec.CommandContext(ctx, Target(), "-p", profile, "status", "--alsologtostderr")) if err != nil { diff --git a/test/integration/pause_test.go b/test/integration/pause_test.go index 4b711c8190..d1a2525f43 100644 --- a/test/integration/pause_test.go +++ b/test/integration/pause_test.go @@ -24,6 +24,8 @@ import ( "os/exec" "strings" "testing" + + "k8s.io/minikube/cmd/minikube/cmd" ) func TestPause(t *testing.T) { @@ -43,6 +45,7 @@ func TestPause(t *testing.T) { {"Start", validateFreshStart}, {"SecondStartNoReconfiguration", validateStartNoReconfigure}, {"Pause", validatePause}, + {"VerifyStatus", validateStatus}, {"Unpause", validateUnpause}, {"PauseAgain", validatePause}, {"DeletePaused", validateDelete}, @@ -166,3 +169,20 @@ func validateVerifyDeleted(ctx context.Context, t *testing.T, profile string) { } } + +func validateStatus(ctx context.Context, t *testing.T, profile string) { + defer PostMortemLogs(t, profile) + + statusOutput := runStatusCmd(ctx, t, profile, false) + var cs cmd.ClusterState + if err := json.Unmarshal(statusOutput, &cs); err != nil { + t.Fatalf("unmarshalling: %v", err) + } + // verify the status looks as we expect + if cs.StatusCode != cmd.Paused { + t.Fatalf("incorrect status code: %v", cs.StatusCode) + } + if cs.StatusName != "Paused" { + t.Fatalf("incorrect status name: %v", cs.StatusName) + } +} diff --git a/test/integration/status_test.go b/test/integration/status_test.go index 9980d0a4c6..acdc2bd91a 100644 --- a/test/integration/status_test.go +++ b/test/integration/status_test.go @@ -98,41 +98,3 @@ func verifyClusterState(t *testing.T, contents []byte) { } } } - -func TestPauseStatus(t *testing.T) { - // run start - profile := UniqueProfileName("pause-status") - ctx, cancel := context.WithTimeout(context.Background(), Minutes(5)) - defer Cleanup(t, profile, cancel) - - startArgs := []string{"start", "-p", profile, "--output=json", "--wait=true"} - startArgs = append(startArgs, StartArgs()...) - c := exec.CommandContext(ctx, Target(), startArgs...) - - rr, err := Run(t, c) - if err != nil { - t.Fatalf("minikube start failed %v\n%v", rr.Command(), err) - } - - // run pause - pauseArgs := []string{"pause", "-p", profile} - c = exec.CommandContext(ctx, Target(), pauseArgs...) - rr, err = Run(t, c) - if err != nil { - t.Fatalf("minikube pause failed %v\n%v", rr.Command(), err) - } - - // run status - statusOutput := runStatusCmd(context.Background(), t, profile, false) - var cs cmd.ClusterState - if err := json.Unmarshal(statusOutput, &cs); err != nil { - t.Fatalf("unmarshalling: %v", err) - } - // verify the status looks as we expect - if cs.StatusCode != cmd.Paused { - t.Fatalf("incorrect status code: %v", cs.StatusCode) - } - if cs.StatusName != "Paused" { - t.Fatalf("incorrect status name: %v", cs.StatusName) - } -} diff --git a/test/integration/testdata/hyperkit-driver-version-1.11.0/README b/test/integration/testdata/hyperkit-driver-version-1.11.0/README new file mode 100644 index 0000000000..1a01f38b3c --- /dev/null +++ b/test/integration/testdata/hyperkit-driver-version-1.11.0/README @@ -0,0 +1,2 @@ +Starting minikube version 1.14 we do not update the installed hyperkit driver if its version is 1.11.0 or higher. +Have the hyperkit driver v1.11.0 here to test this behaviour. diff --git a/test/integration/testdata/hyperkit-driver-version-1.11.0/docker-machine-driver-hyperkit b/test/integration/testdata/hyperkit-driver-version-1.11.0/docker-machine-driver-hyperkit new file mode 100755 index 0000000000..b470e6b48e Binary files /dev/null and b/test/integration/testdata/hyperkit-driver-version-1.11.0/docker-machine-driver-hyperkit differ diff --git a/translations/de.json b/translations/de.json index 308024c31a..2aaee48299 100644 --- a/translations/de.json +++ b/translations/de.json @@ -11,7 +11,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -49,7 +49,7 @@ "Basic Commands:": "", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", "Bind Address: {{.Address}}": "", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "", "Cannot use both --output and --format options": "", @@ -72,16 +72,17 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "Ländercode des zu verwendenden Image Mirror. Lassen Sie dieses Feld leer, um den globalen zu verwenden. Nutzer vom chinesischen Festland stellen cn ein.", "Creating mount {{.name}} ...": "Bereitstellung {{.name}} wird erstellt...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "", @@ -96,7 +97,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "Deaktivieren Sie die Überprüfung der Verfügbarkeit der Hardwarevirtualisierung vor dem Starten der VM (nur Virtualbox-Treiber)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "Deaktiviert die von den Hypervisoren bereitgestellten Dateisystembereitstellungen", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Größe des der minikube-VM zugewiesenen Festplatte (Format: \u003cNummer\u003e [\u003cEinheit\u003e], wobei Einheit = b, k, m oder g)", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", @@ -108,10 +109,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "", "Documentation: {{.url}}": "", "Done! kubectl is now configured to use \"{{.name}}": "Fertig! kubectl ist jetzt für die Verwendung von \"{{.name}} konfiguriert", @@ -136,7 +136,7 @@ "Enable proxy for NAT DNS requests (virtualbox driver only)": "Proxy für NAT-DNS-Anforderungen aktivieren (nur Virtualbox-Treiber)", "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\": "Standard-CNI-Plugin-in (/etc/cni/net.d/k8s.conf) aktivieren. Wird in Verbindung mit \"--network-plugin = cni\" verwendet", "Enabled addons: {{.addons}}": "", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling dashboard ...": "", "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "", @@ -173,6 +173,7 @@ "Error starting cluster": "", "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Fehler: Sie haben Kubernetes v{{.new}} ausgewählt, aber auf dem vorhandenen Cluster für Ihr Profil wird Kubernetes v{{.old}} ausgeführt. Zerstörungsfreie Downgrades werden nicht unterstützt. Sie können jedoch mit einer der folgenden Optionen fortfahren:\n* Erstellen Sie den Cluster mit Kubernetes v{{.new}} neu: Führen Sie \"minikube delete {{.profile}}\" und dann \"minikube start {{.profile}} - kubernetes-version = {{.new}}\" aus.\n* Erstellen Sie einen zweiten Cluster mit Kubernetes v{{.new}}: Führen Sie \"minikube start -p \u003cnew name\u003e --kubernetes-version = {{.new}}\" aus.\n* Verwenden Sie den vorhandenen Cluster mit Kubernetes v {{.old}} oder höher: Führen Sie \"minikube start {{.profile}} --kubernetes-version = {{.old}}\" aus.", "Examples": "", @@ -195,7 +196,6 @@ "Failed to delete images": "", "Failed to delete images from config": "", "Failed to enable container runtime": "", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "", "Failed to get command runner": "", "Failed to get image map": "", @@ -227,7 +227,7 @@ "Force minikube to perform possibly dangerous operations": "minikube zwingen, möglicherweise gefährliche Operationen durchzuführen", "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "Gefundene Netzwerkoptionen:", - "Found {{.number}} invalid profile(s) !": "", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -251,7 +251,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "Wenn true, speichern Sie Docker-Images für den aktuellen Bootstrapper zwischen und laden Sie sie auf den Computer. Immer falsch mit --vm-driver = none.", "If true, only download and cache files for later use - don't install or start anything.": "Wenn true, laden Sie nur Dateien für die spätere Verwendung herunter und speichern Sie sie – installieren oder starten Sie nichts.", @@ -280,12 +280,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "Liste der Gast-VSock-Ports, die als Sockets auf dem Host verfügbar gemacht werden (nur Hyperkit-Treiber)", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "Lokale Ordner, die über NFS-Bereitstellungen für Gast freigegeben werden (nur Hyperkit-Treiber)", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "Speicherort des VPNKit-Sockets, der für das Netzwerk verwendet wird. Wenn leer, wird Hyperkit VPNKitSock deaktiviert. Wenn 'auto' die Docker for Mac VPNKit-Verbindung verwendet, wird andernfalls der angegebene VSock verwendet (nur Hyperkit-Treiber).", "Location of the minikube iso": "Speicherort der minikube-ISO", "Locations to fetch the minikube ISO from.": "", @@ -300,8 +302,9 @@ "Mounts the specified directory into minikube.": "", "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found -": "", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", "No changes required for the \"{{.context}}\" context": "", @@ -313,7 +316,6 @@ "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "Keines der bekannten Repositories an Ihrem Standort ist zugänglich. {{.image_repository_name}} wird als Fallback verwendet.", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "Keines der bekannten Repositories ist zugänglich. Erwägen Sie, ein alternatives Image-Repository mit der Kennzeichnung --image-repository anzugeben", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -322,22 +324,23 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "", "Please free up disk or prune images.": "", @@ -345,12 +348,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Aktualisieren Sie '{{.driver_executable}}'. {{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "{{.profile_name}}\" wird über SSH ausgeschaltet...", @@ -361,6 +364,7 @@ "Print the version of minikube.": "", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -428,7 +432,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -453,7 +457,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Successfully added {{.name}} to {{.cluster}}!": "", @@ -543,7 +547,6 @@ "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "Der Treiber {{.driver_name}} sollte nicht mit Root-Rechten verwendet werden.", - "There is no local cluster named \"{{.cluster}}\"": "", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "Es gibt eine neue Version für '{{.driver_executable}}'. Bitte erwägen Sie ein Upgrade. {{.documentation_url}}", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", @@ -563,10 +566,10 @@ "To connect to this cluster, use: kubectl --context={{.name}}__1": "Verwenden Sie zum Herstellen einer Verbindung zu diesem Cluster: kubectl --context = {{.name}}", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "Möglicherweise müssen Sie Kubectl- oder minikube-Befehle verschieben, um sie als eigenen Nutzer zu verwenden. Um beispielsweise Ihre eigenen Einstellungen zu überschreiben, führen Sie aus:", @@ -575,6 +578,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -604,12 +608,12 @@ "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "", "Unable to stop VM": "", "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "Kubernetes {{.kubernetes_version}} wird mit {{.bootstrapper_name}} deinstalliert...", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -633,7 +637,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "Verwenden des Image-Repositorys {{.name}}", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", @@ -659,9 +663,10 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "Als Root für die NFS-Freigaben wird standardmäßig /nfsshares verwendet (nur Hyperkit-Treiber)", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "Sie scheinen einen Proxy zu verwenden, aber Ihre NO_PROXY-Umgebung enthält keine minikube-IP ({{.ip_address}}). Weitere Informationen finden Sie unter {{.documentation_url}}", - "You can delete them using the following command(s):": "", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -675,15 +680,16 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", "Your minikube vm is not running, try minikube start.": "", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", "bash completion failed": "", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -713,14 +719,13 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", - "logdir set failed": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", @@ -736,6 +741,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "", @@ -749,7 +755,6 @@ "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "", "unable to bind flags": "", "unable to delete minikube config folder": "", - "unable to set logtostderr": "", "unpause Kubernetes": "", "unset failed": "", "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", @@ -768,6 +773,7 @@ "version yaml failure": "", "zsh completion failed": "", "{{ .name }}: {{ .rejection }}": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.count}} nodes stopped.": "", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "", @@ -779,6 +785,8 @@ "{{.name}} is already running": "", "{{.name}} was successfully configured": "", "{{.name}}\" profile does not exist": "Profil \"{{.name}}\" existiert nicht", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} auf {{.platform}}", diff --git a/translations/es.json b/translations/es.json index 0888358585..00a20bee7d 100644 --- a/translations/es.json +++ b/translations/es.json @@ -12,7 +12,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -50,7 +50,7 @@ "Basic Commands:": "", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", "Bind Address: {{.Address}}": "", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "", "Cannot use both --output and --format options": "", @@ -73,16 +73,17 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "Código de país de la réplica de imagen que quieras utilizar. Déjalo en blanco para usar el valor global. Los usuarios de China continental deben definirlo como cn.", "Creating mount {{.name}} ...": "Creando la activación {{.name}}...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "", @@ -97,7 +98,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "Permite inhabilitar la comprobación de disponibilidad de la virtualización de hardware antes de iniciar la VM (solo con el controlador de Virtualbox)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "Inhabilita las activaciones de sistemas de archivos proporcionadas por los hipervisores", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Tamaño de disco asignado a la VM de minikube (formato: \u003cnúmero\u003e[\u003cunidad\u003e], donde unidad = b, k, m o g)", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", @@ -109,10 +110,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "", "Documentation: {{.url}}": "", "Done! kubectl is now configured to use \"{{.name}}": "¡Listo! Se ha configurado kubectl para que use \"{{.name}}", @@ -137,7 +137,7 @@ "Enable proxy for NAT DNS requests (virtualbox driver only)": "Permite habilitar el uso de proxies en las solicitudes de DNS con traducción de direcciones de red (NAT) aplicada (solo con el controlador de Virtualbox)", "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\": "Permite habilitar el complemento CNI predeterminado (/etc/cni/net.d/k8s.conf). Se utiliza junto con \"--network-plugin=cni", "Enabled addons: {{.addons}}": "", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling dashboard ...": "", "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "", @@ -174,6 +174,7 @@ "Error starting cluster": "", "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Error: Has seleccionado Kubernetes {{.new}}, pero el clúster de tu perfil utiliza la versión {{.old}}. No se puede cambiar a una versión inferior sin eliminar todos los datos y recursos pertinentes, pero dispones de las siguientes opciones para continuar con la operación:\n* Volver a crear el clúster con Kubernetes {{.new}}: ejecuta \"minikube delete {{.profile}}\" y, luego, \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Crear un segundo clúster con Kubernetes {{.new}}: ejecuta \"minikube start -p \u003cnuevo nombre\u003e --kubernetes-version={{.new}}\"\n* Reutilizar el clúster actual con Kubernetes {{.old}} o una versión posterior: ejecuta \"minikube start {{.profile}} --kubernetes-version={{.old}}", "Examples": "", @@ -196,7 +197,6 @@ "Failed to delete images": "", "Failed to delete images from config": "", "Failed to enable container runtime": "", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "", "Failed to get command runner": "", "Failed to get image map": "", @@ -228,7 +228,7 @@ "Force minikube to perform possibly dangerous operations": "Permite forzar minikube para que realice operaciones potencialmente peligrosas", "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "Se han encontrado las siguientes opciones de red:", - "Found {{.number}} invalid profile(s) !": "", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -252,7 +252,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "Si el valor es \"true\", las imágenes de Docker del programa previo actual se almacenan en caché y se cargan en la máquina. Siempre es \"false\" si se especifica --vm-driver=none.", "If true, only download and cache files for later use - don't install or start anything.": "Si el valor es \"true\", los archivos solo se descargan y almacenan en caché (no se instala ni inicia nada).", @@ -281,12 +281,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "Lista de puertos del VSock invitado que se deben mostrar como sockets en el host (solo con el controlador de hyperkit)", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "Carpetas locales que se compartirán con el invitado mediante activaciones de NFS (solo con el controlador de hyperkit)", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "Ubicación del socket de VPNKit que se utiliza para ofrecer funciones de red. Si se deja en blanco, se inhabilita VPNKitSock de Hyperkit; si se define como \"auto\", se utiliza Docker para las conexiones de VPNKit en Mac. Con cualquier otro valor, se utiliza el VSock especificado (solo con el controlador de hyperkit)", "Location of the minikube iso": "Ubicación de la ISO de minikube", "Locations to fetch the minikube ISO from.": "", @@ -301,8 +303,9 @@ "Mounts the specified directory into minikube.": "", "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found -": "", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", "No changes required for the \"{{.context}}\" context": "", @@ -314,7 +317,6 @@ "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "No se puede acceder a ninguno de los repositorios conocidos de tu ubicación. Se utilizará {{.image_repository_name}} como alternativa.", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "No se puede acceder a ninguno de los repositorios conocidos. Plantéate indicar un repositorio de imágenes alternativo con la marca --image-repository.", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -323,22 +325,23 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "", "Please free up disk or prune images.": "", @@ -346,12 +349,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Actualiza \"{{.driver_executable}}\". {{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "Apagando \"{{.profile_name}}\" mediante SSH...", @@ -362,6 +365,7 @@ "Print the version of minikube.": "", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -429,7 +433,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -454,7 +458,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Successfully added {{.name}} to {{.cluster}}!": "", @@ -544,7 +548,6 @@ "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "El controlador {{.driver_name}} no se debe utilizar con privilegios de raíz.", - "There is no local cluster named \"{{.cluster}}\"": "", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "Hay una nueva versión de \"{{.driver_executable}}\". Te recomendamos que realices la actualización. {{.documentation_url}}", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", @@ -564,10 +567,10 @@ "To connect to this cluster, use: kubectl --context={{.name}}__1": "Para conectarte a este clúster, usa: kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "Para usar comandos de kubectl o minikube como tu propio usuario, puede que debas reubicarlos. Por ejemplo, para sobrescribir tu configuración, ejecuta:", @@ -576,6 +579,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -605,12 +609,12 @@ "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "", "Unable to stop VM": "", "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "Desinstalando Kubernetes {{.kubernetes_version}} mediante {{.bootstrapper_name}}...", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -634,7 +638,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "Utilizando el repositorio de imágenes {{.name}}", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", @@ -660,9 +664,10 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "Ruta en la raíz de los recursos compartidos de NFS. Su valor predeterminado es /nfsshares (solo con el controlador de hyperkit)", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "Parece que estás usando un proxy, pero tu entorno NO_PROXY no incluye la dirección IP de minikube ({{.ip_address}}). Consulta {{.documentation_url}} para obtener más información", - "You can delete them using the following command(s):": "", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -676,15 +681,16 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", "Your minikube vm is not running, try minikube start.": "", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", "bash completion failed": "", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -714,14 +720,13 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", - "logdir set failed": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", @@ -737,6 +742,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "", @@ -750,7 +756,6 @@ "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "", "unable to bind flags": "", "unable to delete minikube config folder": "", - "unable to set logtostderr": "", "unpause Kubernetes": "", "unset failed": "", "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", @@ -769,6 +774,7 @@ "version yaml failure": "", "zsh completion failed": "", "{{ .name }}: {{ .rejection }}": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.count}} nodes stopped.": "", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "", @@ -779,6 +785,8 @@ "{{.name}} has no available configuration options": "", "{{.name}} is already running": "", "{{.name}} was successfully configured": "", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} en {{.platform}}", diff --git a/translations/fr.json b/translations/fr.json index 5a1561dae3..27629f8b05 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -12,6 +12,7 @@ "- Docs https://docs.docker.com/docker-for-windows/#resources": "- Docs https://docs.docker.com/docker-for-windows/#resources", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "- Assurez-vous que votre démon {{.driver_name}} a accès à suffisamment de ressources CPU/mémoire.", "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "- Nettoyer les images {{.driver_name}} non utilisées, les volumes et les conteneurs abandonnés.", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "- Redémarrer votre service {{.driver_name}}", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "Un VPN ou un pare-feu interfère avec l'accès HTTP à la machine virtuelle minikube. Vous pouvez également essayer un autre pilote de machine virtuelle : https://minikube.sigs.k8s.io/docs/start/", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "Un pare-feu empêche le Docker de la machine virtuelle minikube d'atteindre le dépôt d'images. Vous devriez peut-être sélectionner --image-repository, ou utiliser un proxy.", @@ -49,7 +50,7 @@ "Basic Commands:": "Commandes basiques :", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "Comme vous utilisez un pilote Docker sur {{.operating_system}}, le terminal doit être ouvert pour l'exécuter.", "Bind Address: {{.Address}}": "Adresse de liaison : {{.Address}}", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "", "Cannot use both --output and --format options": "", @@ -73,16 +74,17 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "Code pays du miroir d'images à utiliser. Laissez ce paramètre vide pour utiliser le miroir international. Pour les utilisateurs situés en Chine continentale, définissez sa valeur sur \"cn\".", "Creating mount {{.name}} ...": "Création de l'installation {{.name}}…", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Création de {{.machine_type}} {{.driver_name}} (CPUs={{.number_of_cpus}}, Mémoire={{.memory_size}}MB, Disque={{.disk_size}}MB)...", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "", @@ -97,7 +99,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "Suppression de noeuds {{.name}} de cluster {{.cluster}}", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "Désactive la vérification de la disponibilité de la virtualisation du matériel avant le démarrage de la VM (pilote virtualbox uniquement).", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "Désactive les installations de systèmes de fichiers fournies par les hyperviseurs.", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Taille de disque allouée à la VM minikube (format : \u003cnombre\u003e[\u003cunité\u003e], où \"unité\" = b, k, m ou g)", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", @@ -109,10 +111,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "", "Documentation: {{.url}}": "", "Done! kubectl is now configured to use \"{{.name}}\"": "Terminé ! kubectl est maintenant configuré pour utiliser \"{{.name}}\".", @@ -136,7 +137,7 @@ "Enable proxy for NAT DNS requests (virtualbox driver only)": "Active le proxy pour les requêtes DNS NAT (pilote VirtualBox uniquement).", "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\": "Active le plug-in CNI par défaut (/etc/cni/net.d/k8s.conf). Utilisé en association avec \\\"--network-plugin=cni\\\".", "Enabled addons: {{.addons}}": "", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling addons: {{.addons}}": "Installation des addons: {{.addons}}", "Enabling dashboard ...": "", @@ -174,6 +175,7 @@ "Error starting cluster": "", "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Erreur : Vous avez sélectionné Kubernetes v{{.new}}, mais le cluster existent pour votre profil exécute Kubernetes v{{.old}}. Les rétrogradations non-destructives ne sont pas compatibles. Toutefois, vous pouvez poursuivre le processus en réalisant l'une des trois actions suivantes :\n* Créer à nouveau le cluster en utilisant Kubernetes v{{.new}} – exécutez \"minikube delete {{.profile}}\", puis \"minikube start {{.profile}} --kubernetes-version={{.new}}\".\n* Créer un second cluster avec Kubernetes v{{.new}} – exécutez \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\".\n* Réutiliser le cluster existent avec Kubernetes v{{.old}} ou version ultérieure – exécutez \"minikube start {{.profile}} --kubernetes-version={{.old}}\".", "Examples": "", @@ -196,7 +198,6 @@ "Failed to delete images": "", "Failed to delete images from config": "", "Failed to enable container runtime": "", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "", "Failed to get command runner": "", "Failed to get image map": "", @@ -228,7 +229,7 @@ "Force minikube to perform possibly dangerous operations": "Oblige minikube à réaliser des opérations possiblement dangereuses.", "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "Options de réseau trouvées :", - "Found {{.number}} invalid profile(s) !": "", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -252,7 +253,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "Si la valeur est \"true\", mettez les images Docker en cache pour l'amorceur actuel et chargez-les dans la machine. La valeur est toujours \"false\" avec --vm-driver=none.", "If true, only download and cache files for later use - don't install or start anything.": "Si la valeur est \"true\", téléchargez les fichiers et mettez-les en cache uniquement pour une utilisation future. Ne lancez pas d'installation et ne commencez aucun processus.", @@ -281,12 +282,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "Liste de ports VSock invités qui devraient être exposés comme sockets sur l'hôte (pilote hyperkit uniquement).", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "Dossiers locaux à partager avec l'invité par des installations NFS (pilote hyperkit uniquement).", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "Emplacement du socket VPNKit exploité pour la mise en réseau. Si la valeur est vide, désactive Hyperkit VPNKitSock. Si la valeur affiche \"auto\", utilise la connexion VPNKit de Docker pour Mac. Sinon, utilise le VSock spécifié (pilote hyperkit uniquement).", "Location of the minikube iso": "Emplacement de l'ISO minikube.", "Locations to fetch the minikube ISO from.": "", @@ -301,8 +304,9 @@ "Mounts the specified directory into minikube.": "", "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found -": "", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", "No changes required for the \"{{.context}}\" context": "", @@ -315,7 +319,6 @@ "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "Aucun dépôt connu dans votre emplacement n'est accessible. {{.image_repository_name}} est utilisé comme dépôt de remplacement.", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "Aucun dépôt connu n'est accessible. Pensez à spécifier un autre dépôt d'images à l'aide de l'indicateur \"--image-repository\".", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -324,22 +327,23 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "", "Please free up disk or prune images.": "", @@ -347,12 +351,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Veuillez mettre à niveau l'exécutable \"{{.driver_executable}}\". {{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "Mise hors tension du profil \"{{.profile_name}}\" via SSH…", @@ -363,6 +367,7 @@ "Print the version of minikube.": "", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -431,7 +436,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -457,7 +462,7 @@ "Stopping \"{{.profile_name}}\" in {{.driver_name}} ...": "Arrêt de \"{{.profile_name}}\" sur {{.driver_name}}...", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Successfully added {{.name}} to {{.cluster}}!": "", @@ -545,7 +550,6 @@ "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "Le pilote {{.driver_name}} ne doit pas être utilisé avec des droits racine.", - "There is no local cluster named \"{{.cluster}}\"": "", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "Une nouvelle version de \"{{.driver_executable}}\" est disponible. Pensez à effectuer la mise à niveau. {{.documentation_url}}", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", @@ -565,10 +569,10 @@ "To connect to this cluster, use: kubectl --context={{.name}}__1": "Pour vous connecter à ce cluster, utilisez la commande \"kubectl --context={{.name}}\".", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "Pour utiliser les commandes kubectl ou minikube sous votre propre nom d'utilisateur, vous devrez peut-être les déplacer. Par exemple, pour écraser vos propres paramètres, exécutez la commande suivante :", @@ -577,6 +581,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -606,12 +611,12 @@ "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "", "Unable to stop VM": "", "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "Désinstallation de Kubernetes {{.kubernetes_version}} à l'aide de {{.bootstrapper_name}}…", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -635,7 +640,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "Utilisation du dépôt d'images {{.name}}…", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", @@ -664,9 +669,10 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "Emplacement permettant d'accéder aux partages NFS en mode root, la valeur par défaut affichant /nfsshares (pilote hyperkit uniquement).", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "Il semble que vous utilisiez un proxy, mais votre environment NO_PROXY n'inclut pas l'adresse IP ({{.ip_address}}) de minikube. Consultez la documentation à l'adresse {{.documentation_url}} pour en savoir plus.", - "You can delete them using the following command(s):": "", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -680,15 +686,16 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", "Your minikube vm is not running, try minikube start.": "", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", "bash completion failed": "", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -718,14 +725,13 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", - "logdir set failed": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "Le profil de minikube a été défini avec succès sur {{.profile_name}}", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube provisionne et gère des clusters Kubernetes locaux optimisés pour les workflows de développement.", "minikube quickly sets up a local Kubernetes cluster": "minikube configure rapidement un cluster Kubernetes local", @@ -741,6 +747,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "pas assez d'arguments ({{.ArgCount}}).\\nusage : minikube config set PROPERTY_NAME PROPERTY_VALUE", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "format de sortie (EXPERIMENTAL, JSON uniquement) : 'nodes' ou 'cluster'", "pause Kubernetes": "met Kubernetes en pause", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "profile définit le profil courrant de minikube, ou obtient le profil actuel si aucun argument n'est fourni. Ceci est utilisé pour exécuter et gérer plusieurs instances de minikube. Vous pouvez revenir au profil par défaut du minikube en exécutant `minikube profile default`", "provisioning host for node": "provisionne un hôte pour le nœud", "reload cached images.": "recharge les cache des images.", @@ -773,6 +780,7 @@ "version yaml failure": "échec de la version du YAML", "zsh completion failed": "complétion de zsh en échec", "{{ .name }}: {{ .rejection }}": "{{ .name }} : {{ .rejection }}", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.count}} nodes stopped.": "{{.count}} nœud(s) arrêté(s).", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} est manquant, il va être recréé.", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "{{.driver_name}} n'a pas pu continuer car le service {{.driver_name}} n'est pas fonctionnel.", @@ -783,6 +791,8 @@ "{{.name}} has no available configuration options": "{{.name}} n'a pas d'options de configuration disponible", "{{.name}} is already running": "{{.name}} est déjà en cours d'exécution", "{{.name}} was successfully configured": "{{.name}} a été configuré avec succès", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "{{.oxibin}} prend un temps anormalement long pour répondre, pensez à redémarrer {{.osibin}}", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "{{.path}} est la version {{.client_version}}, qui peut comporter des incompatibilités avec Kubernetes {{.cluster_version}}.", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} sur {{.platform}}", diff --git a/translations/ja.json b/translations/ja.json index ab772925f5..1a13fdd8ff 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -13,7 +13,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "VPN、あるいはファイアウォールによって、minkube VM への HTTP アクセスが干渉されています。他の手段として、別の VM を試してみてください: https://minikube.sigs.k8s.io/docs/start/", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -48,7 +48,7 @@ "Basic Commands:": "基本的なコマンド:", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "Dockerドライバーを{{.operating_system}}上で動かしているため、実行するにはターミナルを開く必要があります。", "Bind Address: {{.Address}}": "アドレスをバインドします: {{.Address}}", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "マウントのためのディレクトリ{{.path}}が見つかりません", "Cannot use both --output and --format options": "", @@ -71,16 +71,17 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "LoadBalancer サービスに接続します", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "使用するイメージミラーの国コード。グローバルのものを使用する場合は空のままにします。中国本土のユーザーの場合は、「cn」に設定します", "Creating mount {{.name}} ...": "マウント {{.name}} を作成しています...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "{{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) を作成しています...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "{{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) を作成しています...", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "非推奨。代わりに driver を使ってください", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "マウント時のデフォルトのグループ ID", @@ -94,7 +95,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "{{.cluster}} クラスタから {{.name}} ノードを削除しています", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "VM が起動する前にハードウェアの仮想化の可用性チェックを無効にします(virtualbox ドライバのみ)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "ハイパーバイザによって指定されているファイル システム マウントを無効にします", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "minikube VM に割り当てられたディスクサイズ(形式: \u003cnumber\u003e[\u003cunit\u003e]、unit = b、k、m、g)です。", "Display dashboard URL instead of opening a browser": "ブラウザで開く代わりにダッシュボードの URL を表示します", @@ -105,10 +106,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "ドキュメントは以下のパスに保存されました。{{.path}}", "Documentation: {{.url}}": "ドキュメント: {{.url}}", "Done! kubectl is now configured to use \"{{.name}}\"": "完了しました!kubectl が「\"{{.name}}\"」を使用するよう構成されました", @@ -131,7 +131,7 @@ "Enable or disable a minikube addon": "minikube のアドオンを有効化または無効化します", "Enable proxy for NAT DNS requests (virtualbox driver only)": "NAT DNS リクエスト用のプロキシを有効にします(virtualbox ドライバのみ)", "Enabled addons: {{.addons}}": "有効なアドオン: {{.addons}}", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "'{{.name}}' を有効にする際にエラーが発生しました。{{.error}}", "Enabling dashboard ...": "ダッシュボードを有効化しています...", "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "", @@ -165,6 +165,7 @@ "Error starting cluster": "クラスタを起動中にエラーが発生しました", "Error starting mount": "マウントを開始中にエラーが発生しました", "Error while setting kubectl current context : {{.error}}": "", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "マウントした pid を書き込み中にエラーが発生しました", "Examples": "例", "Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "", @@ -216,7 +217,7 @@ "Force minikube to perform possibly dangerous operations": "minikube で危険な可能性のある操作を強制的に実行します", "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "ネットワーク オプションが見つかりました", - "Found {{.number}} invalid profile(s) !": "", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "シェルのコマンド補完コードを生成します", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -240,7 +241,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "true の場合、現在のブートストラッパの Docker イメージをキャッシュに保存して、マシンに読み込みます。--vm-driver=none の場合は常に false です", "If true, only download and cache files for later use - don't install or start anything.": "true の場合、後で使用できるようにファイルのダウンロードとキャッシュ保存だけが行われます。インストールも起動も行われません", @@ -269,12 +270,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "ホストでソケットとして公開する必要のあるゲスト VSock ポートのリスト(hyperkit ドライバのみ)", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "すべてのminikubeのプロフィールを一覧で表示します", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "NFS マウントを介してゲストと共有するローカル フォルダ(hyperkit ドライバのみ)", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "ネットワーキングに使用する VPNKit ソケットのロケーション。空の場合、Hyperkit VPNKitSock が無効になり、「auto」の場合、Mac VPNKit 接続に Docker が使用され、それ以外の場合、指定された VSock が使用されます(hyperkit ドライバのみ)", "Location of the minikube iso": "minikube iso のロケーション", "Locations to fetch the minikube ISO from.": "", @@ -292,7 +295,9 @@ "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "プロフィールを削除中に複数のエラーが発生しました", "Multiple minikube profiles were found -": "複数の minikube のプロフィールが見つかりました", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "ネットワーキング及び接続性コマンド:", "No changes required for the \"{{.context}}\" context": "", @@ -306,7 +311,6 @@ "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "使用しているロケーション内で既知のいずれのリポジトリにもアクセスできません。フォールバックとして {{.image_repository_name}} を使用します", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "既知のいずれのリポジトリにもアクセスできません。--image-repository フラグとともに代替のイメージ リポジトリを指定することを検討してください", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -315,22 +319,24 @@ "OS release is {{.pretty_name}}": "OS は {{.pretty_name}} です。", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "次のnamespaceに存在する {{.count}} 個のコンテナを停止しました: {{.namespaces}}", "Pausing node {{.name}} ...": "ノード {{.name}} を一時停止しています ...", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "", "Please free up disk or prune images.": "", @@ -338,12 +344,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "「{{.driver_executable}}」をアップグレードしてください。{{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "SSH 経由で「{{.profile_name}}」の電源をオフにしています...", @@ -354,6 +360,7 @@ "Print the version of minikube.": "", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -421,7 +428,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -446,7 +453,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "ノード \"{{.name}}\" を停止しています...", "Stopping tunnel for service {{.service}}.": "サービス {{.service}} のトンネルを停止しています。", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "ローカル Kubernetes クラスタを停止します", "Successfully added {{.name}} to {{.cluster}}!": "", @@ -537,7 +544,6 @@ "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "{{.driver_name}} ドライバをルート権限で使用しないでください", - "There is no local cluster named \"{{.cluster}}\"": "", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "「{{.driver_executable}}」の新しいバージョンがあります。アップグレードを検討してください。{{.documentation_url}}", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", @@ -557,10 +563,10 @@ "To connect to this cluster, use: kubectl --context={{.name}}__1": "このクラスタに接続するには、「kubectl --context={{.name}}」を使用します", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "kubectl か minikube コマンドを独自のユーザーとして使用するには、そのコマンドの再配置が必要な場合があります。たとえば、独自の設定を上書きするには、以下を実行します", @@ -569,6 +575,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -598,12 +605,13 @@ "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "", "Unable to stop VM": "", "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "{{.bootstrapper_name}} を使用して Kubernetes {{.kubernetes_version}} をアンインストールしています...", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "次のnamespaceに存在する {{.count}} 個のコンテナを再稼働させました: {{.namespaces}}", "Unpausing node {{.name}} ...": "ノード {{.name}} を再稼働させています ...", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "IP アドレスやポート番号が変わった場合に kubeconfig を更新します", @@ -628,6 +636,7 @@ "User ID: {{.userID}}": "ユーザー ID: {{.userID}}", "Userspace file server is shutdown": "ユーザー側のファイルサーバーが停止しました", "Userspace file server:": "ユーザー側のファイルサーバー", + "Userspace file server: ": "", "Using image repository {{.name}}": "イメージ リポジトリ {{.name}} を使用しています", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "「 none 」ドライバで「 {{.runtime}} 」ランタイムを使用することは、テストされていない設定です!", @@ -654,10 +663,12 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "NFS 共有のルートに指定する場所。デフォルトは /nfsshares(hyperkit ドライバのみ)", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "仮想スイッチが明示的に設定されていない場合、デフォルトのではなく外部のスイッチを使用します。(Hyper-V ドライバのみ)", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "プロキシを使用しようとしていますが、現在の NO_PROXY 環境に minikube IP({{.ip_address}})は含まれていません。詳細については、{{.documentation_url}} をご覧ください", "You can also use 'minikube kubectl -- get pods' to invoke a matching version": "「 minikube kubectl -- get pods 」で、一致するバージョンを表示することができます", "You can delete them using the following command(s):": "以下のコマンドで削除することができます", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -671,7 +682,7 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "ホストマシーンが minikube の VM にパケットをルーティングすることができていません。もし VPN を有効しているのであれば、VPN を無効にする、あるいは VM の IP アドレスに再ルーティングしないように設定してください。もし VPN を使用していないのであれば、 VM 環境のルーティング周りのオプションを確認してください", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "今の minikube の設定はサポートされていないドライバーを参照しています。 ~/.minikube を削除して、もう一度試してください", "Your minikube vm is not running, try minikube start.": "minikube の VM が動いていません。以下のコマンドを試してみてください。 minikube start", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "[{{.id}}] {{.msg}} {{.error}}": "[{{.id}}] {{.msg}} {{.error}}", "adding node": "ノードを追加しています", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "「 {{.name}} 」アドオンは現在無効になっています。\n有効にするためには、以下のコマンドを実行してくだいさい。 \nminikube addons enable {{.name}}", @@ -679,9 +690,11 @@ "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "addons では以下のようにサブコマンドを使用することで、 minikube のアドオンのファイルを編集することができます。 \"minikube addons enable dashboard\"", "bash completion failed": "bash の補完が失敗しました", "call with cleanup=true to remove old tunnels": "cleanup=true で呼び出すことで、古い tunnel を削除することができます", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "config では以下のようにサブコマンドを使用して、minikube の設定ファイルを編集することができます。 \"minikube config set driver kvm\"\n設定可能なフィールドは以下です。\\n\\n", "config view failed": "設定を表示するのに失敗しました", "dashboard service is not running: {{.error}}": "ダッシュボードのサービスが動いていません。 {{.error}}", + "delete ctx": "", "deleting node": "ノードを削除しています", "disable failed": "無効にするのに失敗しました", "dry-run mode. Validates configuration, but does not mutate system state": "dry-run モードです。設定は検証しますが、実際にシステムの状態を変更することはしません", @@ -711,7 +724,7 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "kubectl proxy", "libmachine failed": "libmachine が失敗しました", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "logdir set failed": "logdir の値を設定するのに失敗しました", "max time to wait per Kubernetes core services to be healthy.": "Kubernetes の core サービスが正常に稼働するまで待つ最大時間", "max time to wait per Kubernetes or host to be healthy.": "", @@ -721,6 +734,7 @@ "minikube is not yet compatible with ChromeOS": "minikube はまだ ChromeOS と互換性がありません", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "minikube が Google Container Registry に接続できません。 HTTP プロキシを使用するように設定する必要があるかもしれません", "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "minikube が VM に接続できませんでした。 {{.error}}\n\n\t考えられる理由は以下の二つです。\n\n\t- VPN 、あるいはファイアウォールによる干渉\n\t- {{.hypervisor}} のネットワークの設定での問題\n\n\t迂回策には以下があります。\n\n\t- ローカルの VPN 、あるいはファイアウォールを無効にする\n\t- {{.ip}} へのアクセスを許可するようにローカルの VPN 、あるいはファイアウォールを設定する\n\t- {{.hypervisor}} を再起動、あるいは再インストールする\n\t- 別の VM ドライバーを使用する\n\t- --force を使用してこの接続チェックを上書きする", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "{{.profile_name}} の値が minikube のプロフィールに正常に設定されました", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube は、開発ワークフロー用に最適化されたローカル Kubernetes クラスタをプロビジョンおよび管理します。", "minikube quickly sets up a local Kubernetes cluster": "", @@ -737,6 +751,7 @@ "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "Kubernetes を一時停止させます", "pause containers": "コンテナを一時停止させます", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "profile で現在の minikube のプロフィールの値を設定することができます。profil に引数を渡さなければ、現在のプロフィールを見ることができます。このコマンドは複数の minikube インスタンスを管理するのに使用されます。「 minikube profile default 」で minikube のデフォルトのプロフィールを見ることができます", "provisioning host for node": "", "reload cached images.": "キャッシュしていたイメージから再読み込みをします", @@ -772,6 +787,7 @@ "version yaml failure": "YAML でバージョンを表示するのに失敗しました", "zsh completion failed": "zsh の補完が失敗しました", "{{ .name }}: {{ .rejection }}": "{{ .name }}: {{ .rejection }}", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.cluster}} IP has been updated to point at {{.ip}}": "{{.cluster}} の IP アドレスは {{.ip}} へと更新されました", "{{.cluster}} IP was already correctly configured for {{.ip}}": "{{.cluster}} の IP アドレスは {{.ip}} としてすでに正常に設定されています", "{{.count}} nodes stopped.": "{{.count}}台のノードが停止しました。", @@ -786,6 +802,8 @@ "{{.name}} has no available configuration options": "{{.name}} には利用可能なオプションがありません", "{{.name}} is already running": "{{.name}} はすでに起動しています", "{{.name}} was successfully configured": "{{.name}} は正常に設定されました", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", "{{.path}} is v{{.client_version}}, which may be incompatible with Kubernetes v{{.cluster_version}}.": "{{.path}} のバージョンは {{.client_version}}です。 {{.cluster_version}} の Kubernetes とは互換性がないかもしれません", diff --git a/translations/ko.json b/translations/ko.json index 8d29225470..e9d9347062 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -17,7 +17,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -55,7 +55,7 @@ "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", "Bind Address: {{.Address}}": "", "Block until the apiserver is servicing API requests": "apiserver 가 API 요청을 서비스할 때까지 막습니다", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "마운트하기 위한 디렉토리 {{.path}} 를 찾을 수 없습니다", "Cannot use both --output and --format options": "--output 과 --format 옵션을 함께 사용할 수 없습니다", @@ -80,10 +80,10 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "", @@ -92,6 +92,7 @@ "Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "{{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) 를 생성하는 중 ...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "{{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) 를 생성하는 중 ...", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "DEPRECATED 되었습니다, 'driver' 를 사용하세요", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "마운트를 위한 디폴트 group id", @@ -107,7 +108,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "클러스터 {{.cluster}} 에서 노드 {{.name}} 를 삭제하는 중 ...", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "가상 머신 시작 전 하드웨어 가상화 지원 여부 확인 작업을 비활성화합니다 (virtualbox 드라이버 한정)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", "Display dashboard URL instead of opening a browser": "", @@ -118,10 +119,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "", "Documentation: {{.url}}": "문서: {{.url}}", "Done! kubectl is now configured to use \"{{.name}}\"": "끝났습니다! 이제 kubectl 이 \"{{.name}}\" 를 사용할 수 있도록 설정되었습니다", @@ -145,7 +145,7 @@ "Enable or disable a minikube addon": "", "Enable proxy for NAT DNS requests (virtualbox driver only)": "", "Enabled addons: {{.addons}}": "", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling addons: {{.addons}}": "애드온을 활성화하는 중: {{.addons}}", "Enabling dashboard ...": "대시보드를 활성화하는 중 ...", @@ -193,6 +193,7 @@ "Error starting mount": "마운트 시작 오류", "Error starting node": "노드 시작 오류", "Error while setting kubectl current context : {{.error}}": "kubectl current context 설정 오류 : {{.error}}", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "", "Examples": "예시", "Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "", @@ -216,7 +217,6 @@ "Failed to delete node {{.name}}": "노드 {{.name}} 제거에 실패하였습니다", "Failed to enable container runtime": "컨테이너 런타임 활성화에 실패하였습니다", "Failed to generate config": "컨피그 생성에 실패하였습니다", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "부트스트래퍼 조회에 실패하였습니다", "Failed to get command runner": "", "Failed to get driver URL": "드라이버 URL 조회에 실패하였습니다", @@ -250,6 +250,7 @@ "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "네트워크 옵션을 찾았습니다", "Found {{.number}} invalid profile(s) !": "{{.number}} 개의 무효한 프로필을 찾았습니다", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -275,7 +276,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, only download and cache files for later use - don't install or start anything.": "", "If true, the added node will be marked for work. Defaults to true.": "", @@ -302,12 +303,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "모든 minikube 프로필을 조회합니다", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "", "Locations to fetch the minikube ISO from.": "", "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "", @@ -323,8 +326,9 @@ "Mounts the specified directory into minikube.": "", "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found -": "", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", "No changes required for the \"{{.context}}\" context": "", @@ -335,7 +339,6 @@ "Node {{.nodeName}} does not exist.": "", "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -343,22 +346,23 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "옵션: {{.options}}", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "값을 입력하세요", "Please free up disk or prune images.": "", @@ -366,11 +370,11 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "", @@ -381,6 +385,7 @@ "Print the version of minikube.": "minikube 의 버전을 출력합니다.", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -447,7 +452,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, Kubernetes {{.version}} is not supported by this release of minikube": "죄송합니다, 쿠버네티스 {{.version}} 는 해당 minikube 버전에서 지원하지 않습니다", "Sorry, completion support is not yet implemented for {{.name}}": "", @@ -474,7 +479,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "클러스터의 한 노드를 중지합니다", "Stops a running local Kubernetes cluster": "", "Stops a running local kubernetes cluster": "실행 중인 로컬 쿠버네티스 클러스터를 중지합니다", @@ -554,7 +559,6 @@ "The value passed to --format is invalid": "", "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", - "There is no local cluster named \"{{.cluster}}\"": "", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", "This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "", @@ -569,10 +573,10 @@ "To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "", @@ -581,6 +585,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "무효한 프로필 {{.profile}} 를 삭제하는 중", "Unable to bind flags": "flags 를 합칠 수 없습니다", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "대시보드를 활성화할 수 없습니다", "Unable to fetch latest version info": "최신 버전 정보를 가져올 수 없습니다", "Unable to find control plane": "", @@ -613,12 +618,12 @@ "Unable to stop VM": "가상 머신을 중지할 수 없습니다", "Unable to update {{.driver}} driver: {{.error}}": "{{.driver}} 를 수정할 수 없습니다: {{.error}}", "Unable to verify SSH connectivity: {{.error}}. Will retry...": "SSH 연결을 확인할 수 없습니다: {{.error}}. 다시 시도하는 중 ...", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "{{.bootstrapper_name}} 를 사용하여 쿠버네티스 {{.kubernetes_version}} 를 제거하는 중 ...", "Unmounting {{.path}} ...": "{{.path}} 를 마운트 해제하는 중 ...", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -641,7 +646,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", @@ -666,9 +671,11 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You can also use 'minikube kubectl -- get pods' to invoke a matching version": "맞는 버전의 kubectl 을 사용하기 위해서는 다음과 같이 사용 가능합니다. minikube kubectl -- get pods'", "You can delete them using the following command(s):": "다음 커맨드(들)을 사용하여 제거할 수 있습니다", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -683,16 +690,17 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "minikube config 가 미지원 드라이버를 참조하고 있습니다. ~/.minikube 를 제거한 후, 다시 시도하세요", "Your minikube vm is not running, try minikube start.": "minikube 가상 머신이 실행 중이 아닙니다, minikube start 를 시도하세요", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", "bash completion failed": "bash 자동 완성이 실패하였습니다", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "config view 가 실패하였습니다", "creating api client": "api 클라이언트 생성 중", "dashboard service is not running: {{.error}}": "대시보드 서비스가 실행 중이지 않습니다: {{.error}}", + "delete ctx": "", "deleting node": "", "disable failed": "비활성화가 실패하였습니다", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -725,7 +733,7 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "kubectl 프록시", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "loading config": "컨피그 로딩 중", "logdir set failed": "logdir 설정이 실패하였습니다", "machine '{{.name}}' does not exist. Proceeding ahead with recreating VM.": "머신 '{{.name}}' 이 존재하지 않습니다. 진행하기 앞서 가상 머신을 재생성합니다", @@ -734,7 +742,7 @@ "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", @@ -750,6 +758,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "", @@ -782,6 +791,7 @@ "version yaml failure": "", "zsh completion failed": "zsh 완성이 실패하였습니다", "{{ .name }}: {{ .rejection }}": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.count}} nodes stopped.": "", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "", @@ -794,6 +804,8 @@ "{{.name}} has no available configuration options": "{{.driver}} 이 사용 가능한 환경 정보 옵션이 없습니다", "{{.name}} is already running": "{{.driver}} 이 이미 실행 중입니다", "{{.name}} was successfully configured": "{{.driver}} 이 성공적으로 설정되었습니다", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", "{{.path}} is v{{.client_version}}, which may be incompatible with Kubernetes v{{.cluster_version}}.": "{{.path}} 의 버전은 v{{.client_version}} 이므로, 쿠버네티스 버전 v{{.cluster_version}} 과 호환되지 않을 수 있습니다", diff --git a/translations/pl.json b/translations/pl.json index 4077903f53..8d0e6a64c6 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -16,7 +16,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -53,7 +53,7 @@ "Basic Commands:": "Podstawowe polecenia", "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", "Bind Address: {{.Address}}": "", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "Nie można odnaleźć folderu {{.path}} do zamontowania", "Cannot use both --output and --format options": "", @@ -78,10 +78,10 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "", @@ -91,6 +91,7 @@ "Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Tworzenie {{.driver_name}} (CPUs={{.number_of_cpus}}, Pamięć={{.memory_size}}MB, Dysk={{.disk_size}}MB)...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "Domyślne id groupy użyte dla montowania", @@ -107,7 +108,7 @@ "Deleting node {{.name}} from cluster {{.cluster}}": "", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", "Display dashboard URL instead of opening a browser": "", @@ -118,10 +119,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "Dokumentacja została zapisana w {{.path}}", "Documentation: {{.url}}": "Dokumentacja: {{.url}}", "Done! kubectl is now configured to use \"{{.name}}": "Gotowe! kubectl jest skonfigurowany do użycia z \"{{.name}}\".", @@ -146,7 +146,7 @@ "Enable or disable a minikube addon": "", "Enable proxy for NAT DNS requests (virtualbox driver only)": "", "Enabled addons: {{.addons}}": "", - "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling dashboard ...": "", "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "", @@ -184,6 +184,7 @@ "Error starting cluster": "Błąd podczas uruchamiania klastra", "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "Błąd podczas ustawiania kontekstu kubectl: {{.error}}", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Erreur : Vous avez sélectionné Kubernetes v{{.new}}, mais le cluster existent pour votre profil exécute Kubernetes v{{.old}}. Les rétrogradations non-destructives ne sont pas compatibles. Toutefois, vous pouvez poursuivre le processus en réalisant l'une des trois actions suivantes :\n* Créer à nouveau le cluster en utilisant Kubernetes v{{.new}} – exécutez \"minikube delete {{.profile}}\", puis \"minikube start {{.profile}} --kubernetes-version={{.new}}\".\n* Créer un second cluster avec Kubernetes v{{.new}} – exécutez \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\".\n* Réutiliser le cluster existent avec Kubernetes v{{.old}} ou version ultérieure – exécutez \"minikube start {{.profile}} --kubernetes-version={{.old}}\".", "Examples": "Przykłady", @@ -205,7 +206,6 @@ "Failed to delete images from config": "", "Failed to download kubectl": "Pobieranie kubectl nie powiodło się", "Failed to enable container runtime": "", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "", "Failed to get command runner": "", "Failed to get image map": "", @@ -237,6 +237,7 @@ "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "Wykryto opcje sieciowe:", "Found {{.number}} invalid profile(s) !": "Wykryto {{.number}} nieprawidłowych profili ! ", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -262,7 +263,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, only download and cache files for later use - don't install or start anything.": "", "If true, the added node will be marked for work. Defaults to true.": "", @@ -291,12 +292,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "Wylistuj wszystkie profile minikube", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "", "Location of the minikube iso": "Ścieżka do obrazu iso minikube", "Location of the minikube iso.": "Ścieżka do obrazu iso minikube", @@ -313,8 +316,9 @@ "Mounts the specified directory into minikube.": "Montuje podany katalog wewnątrz minikube", "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found -": "", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", "No changes required for the \"{{.context}}\" context": "", @@ -325,7 +329,6 @@ "Node {{.nodeName}} does not exist.": "", "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -335,23 +338,24 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", "Outputs minikube shell completion for the given shell (bash or zsh)": "Zwraca autouzupełnianie poleceń minikube dla danej powłoki (bash, zsh)", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "Wprowadź wartość", "Please free up disk or prune images.": "", @@ -359,12 +363,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "Proszę upewnij się, że serwis którego szukasz znajduje się w prawidłowej przestrzeni nazw", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Proszę zaktualizować '{{.driver_executable}}'. {{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "", @@ -375,6 +379,7 @@ "Print the version of minikube.": "Wyświetl wersję minikube.", "Problems detected in {{.entry}}:": "Wykryto problem w {{.name}}", "Problems detected in {{.name}}:": "Wykryto problem w {{.name}}:", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile gets or sets the current minikube profile": "Pobiera lub ustawia aktywny profil minikube", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", @@ -443,7 +448,7 @@ "Show only log entries which point to known problems": "Pokaż logi które wskazują na znane problemy", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "Zignorowano zmianę kontekstu kubectl ponieważ --keep-context zostało przekazane", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -469,7 +474,7 @@ "Stopping \"{{.profile_name}}\" in {{.driver_name}} ...": "Zatrzymywanie \"{{.profile_name}}\" - {{.driver_name}}...", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Stops a running local kubernetes cluster": "Zatrzymuje lokalny klaster kubernetesa", @@ -558,7 +563,6 @@ "The value passed to --format is invalid: {{.error}}": "Wartość przekazana do --format jest nieprawidłowa: {{.error}}", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "{{.driver_name}} nie powinien być używany z przywilejami root'a.", - "There is no local cluster named \"{{.cluster}}\"": "", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", "This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "", @@ -575,10 +579,10 @@ "To connect to this cluster, use: kubectl --context={{.profile_name}}": "Aby połaczyć się z klastrem użyj: kubectl --context={{.profile_name}}", "To disable this notice, run: 'minikube config set WantUpdateNotification false'": "Aby wyłączyć tę notyfikację, użyj: 'minikube config set WantUpdateNotification false'", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To start minikube with HyperV Powershell must be in your PATH`": "Aby uruchomić minikube z HyperV Powershell musi znajdować się w zmiennej PATH", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", @@ -588,6 +592,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -615,12 +620,12 @@ "Unable to start VM": "Nie można uruchomić maszyny wirtualnej", "Unable to stop VM": "Nie można zatrzymać maszyny wirtualnej", "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -643,7 +648,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", @@ -672,8 +677,9 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", - "You can delete them using the following command(s):": "", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -687,15 +693,16 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", "Your minikube vm is not running, try minikube start.": "", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", "bash completion failed": "", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -726,14 +733,13 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", - "logdir set failed": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", @@ -749,6 +755,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "", @@ -762,7 +769,6 @@ "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "", "unable to bind flags": "", "unable to delete minikube config folder": "", - "unable to set logtostderr": "", "unpause Kubernetes": "", "unset failed": "", "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", @@ -782,6 +788,7 @@ "version yaml failure": "", "zsh completion failed": "", "{{ .name }}: {{ .rejection }}": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.addonName}} was successfully enabled": "{{.addonName}} został aktywowany pomyślnie", "{{.count}} nodes stopped.": "", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "", @@ -794,9 +801,11 @@ "{{.name}} has no available configuration options": "{{.name}} nie posiada opcji konfiguracji", "{{.name}} is already running": "", "{{.name}} was successfully configured": "{{.name}} skonfigurowano pomyślnie", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} na {{.platform}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} nie jest wspierany przez system plików. I tak spróbujemy!", "{{.url}} is not accessible: {{.error}}": "" -} +} \ No newline at end of file diff --git a/translations/strings.txt b/translations/strings.txt index 6abccd32da..cc00c7f6c0 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -71,7 +71,7 @@ "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not process error from failed deletion": "", "Could not process errors from failed deletion": "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "", @@ -258,12 +258,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "", "Locations to fetch the minikube ISO from.": "", "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "", @@ -290,7 +292,6 @@ "Node {{.nodeName}} does not exist.": "", "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -298,6 +299,7 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", @@ -336,6 +338,7 @@ "Print the version of minikube.": "", "Problems detected in {{.entry}}:": "", "Problems detected in {{.name}}:": "", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", "Profile name '{{.name}}' is not valid": "", "Profile name '{{.profilename}}' is not valid": "", @@ -424,7 +427,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Successfully added {{.name}} to {{.cluster}}!": "", @@ -502,7 +505,6 @@ "The value passed to --format is invalid": "", "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", - "There is no local cluster named \"{{.cluster}}\"": "", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", "This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "", @@ -517,10 +519,10 @@ "To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "", @@ -529,6 +531,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "", "Unable to bind flags": "", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", "Unable to find control plane": "", @@ -607,6 +610,7 @@ "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", @@ -631,6 +635,7 @@ "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -661,7 +666,6 @@ "kubectl proxy": "", "libmachine failed": "", "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", - "logdir set failed": "", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "", @@ -683,6 +687,7 @@ "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "", @@ -696,7 +701,6 @@ "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "", "unable to bind flags": "", "unable to delete minikube config folder": "", - "unable to set logtostderr": "", "unpause Kubernetes": "", "unset failed": "", "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index fca04637e2..b361ef5bf2 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -18,7 +18,7 @@ "- Docs https://docs.docker.com/docker-for-mac/#resources": "", "- Docs https://docs.docker.com/docker-for-windows/#resources": "", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "", - "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", "- Restart your {{.driver_name}} service": "", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "VPN 或者防火墙正在干扰对 minikube 虚拟机的 HTTP 访问。或者,您可以使用其它的虚拟机驱动:https://minikube.sigs.k8s.io/docs/start/", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", @@ -65,7 +65,7 @@ "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", "Bind Address: {{.Address}}": "", "Block until the apiserver is servicing API requests": "阻塞直到 apiserver 为 API 请求提供服务", - "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "", + "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cannot find directory {{.path}} for mount": "找不到用来挂载的 {{.path}} 目录", "Cannot use both --output and --format options": "不能同时使用 --output 和 --format 选项", @@ -95,10 +95,10 @@ "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "使用 'minikube logs' 确认您的互联网连接正常,并且您的虚拟机没有耗尽资源", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "使用 'Get-VMSwitch' 命令确认已经为 --hyperv-virtual-switch 提供了正确的值", "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", "Consider increasing Docker Desktop's memory size.": "", "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", "Could not get profile flag": "无法获取配置文件标志", "Could not process error from failed deletion": "无法处理删除失败的错误", "Could not process errors from failed deletion": "无法处理删除失败的错误", @@ -110,6 +110,7 @@ "Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "正在创建 {{.driver_name}} 虚拟机(CPUs={{.number_of_cpus}},Memory={{.memory_size}}MB, Disk={{.disk_size}}MB)...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", + "Current context is \"{{.context}}\"": "", "DEPRECATED, use `driver` instead.": "", "DEPRECATED: Replaced by --cni=bridge": "", "Default group id used for the mount": "用于挂载默认的 group id", @@ -127,6 +128,7 @@ "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "禁用在启动虚拟机之前检查硬件虚拟化的可用性(仅限 virtualbox 驱动程序)", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "禁用虚拟机管理器中的动态内存,或者使用 --memory 传入更大的值", "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "在 minikube 中禁用插件 w/ADDON_NAME(例如:minikube addons disable dashboard)。查看相关可用的插件列表,请使用:minikube addons list", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", "Disables the filesystem mounts provided by the hypervisors": "停用由管理程序提供的文件系统装载", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "分配给 minikube 虚拟机的磁盘大小(格式:\u003c数字\u003e[\u003c单位\u003e],其中单位 = b、k、m 或 g)", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "分配给 minikube 虚拟机的磁盘大小(格式:\u003c数字\u003e[\u003c单位\u003e],其中单位 = b、k、m 或 g)。", @@ -140,10 +142,9 @@ "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "虚拟机中的 Docker 不可用,尝试运行 'minikube delete' 来重置虚拟机。", - "Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "Docker is out of disk space! (/var is at {{.p}}% of capacity)": "", "Docs have been saved at - {{.path}}": "文档已保存在 - {{.path}}", "Documentation: {{.url}}": "文档:{{.url}}", "Done! kubectl is now configured to use \"{{.name}}\"": "完成!kubectl 已经配置至 \"{{.name}}\"", @@ -172,6 +173,7 @@ "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\\".": "启用默认 CNI 插件 (/etc/cni/net.d/k8s.conf)。与“--network-plugin=cni”结合使用。", "Enabled addons: {{.addons}}": "", "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "启动 minikube 插件 w/ADDON_NAME(例如:minikube addons enable dashboard)。查看相关可用的插件列表,请使用:minikube addons list", + "Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "", "Enabling '{{.name}}' returned an error: {{.error}}": "", "Enabling dashboard ...": "正在开启 dashboard ...", "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "确保 CRI-O 已安装且正常运行:执行 'sudo systemctl start crio' and 'journalctl -u crio'。或者使用 --container-runtime=docker", @@ -232,6 +234,7 @@ "Error starting mount": "开启 mount 时出错", "Error unsetting shell variables": "取消设置 shell 变量时出错", "Error while setting kubectl current context : {{.error}}": "设置 kubectl 上下文时出错 :{{.error}}", + "Error while setting kubectl current context: {{.error}}": "", "Error writing mount pid": "写入 mount pid 时出错", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", @@ -263,7 +266,6 @@ "Failed to download kubectl": "下载 kubectl 失败", "Failed to enable container runtime": "", "Failed to generate config": "无法生成配置", - "Failed to get API Server URL": "", "Failed to get bootstrapper": "获取 bootstrapper 失败", "Failed to get command runner": "", "Failed to get driver URL": "获取 driver URL 失败", @@ -300,6 +302,7 @@ "Format to print stdout in. Options include: [text,json]": "", "Found network options:": "找到的网络选项:", "Found {{.number}} invalid profile(s) !": "找到 {{.number}} 个无效的配置文件!", + "Found {{.number}} invalid profile(s) ! ": "", "Generate command completion for a shell": "", "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", "Generate unable to parse memory '{{.memory}}': {{.error}}": "", @@ -329,7 +332,7 @@ "If set, install addons. Defaults to true.": "", "If set, pause all namespaces": "", "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", + "If the above advice does not help, please let us know: ": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "如果为 true,请缓存当前引导程序的 docker 镜像并将其加载到机器中。在 --vm-driver=none 情况下始终为 false。", "If true, only download and cache files for later use - don't install or start anything.": "如果为 true,仅会下载和缓存文件以备后用 - 不会安装或启动任何项。", @@ -359,12 +362,14 @@ "List existing minikube nodes.": "", "List nodes.": "", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "应在主机上公开为套接字的访客 VSock 端口列表(仅限 hyperkit 驱动程序)", + "List of ports that should be exposed (docker and podman driver only)": "", "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", "Lists all minikube profiles.": "", "Lists all valid default values for PROPERTY_NAME": "", "Lists all valid minikube profiles and detects all possible invalid profiles.": "", "Lists the URLs for the services in your local cluster": "", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "通过 NFS 装载与访客共享的本地文件夹(仅限 hyperkit 驱动程序)", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "用于网络连接的 VPNKit 套接字的位置。如果为空,则停用 Hyperkit VPNKitSock;如果为“auto”,则将 Docker 用于 Mac VPNKit 连接;否则使用指定的 VSock(仅限 hyperkit 驱动程序)", "Location of the minikube iso": "minikube iso 的位置", "Locations to fetch the minikube ISO from.": "", @@ -383,7 +388,9 @@ "Multi-node clusters are currently experimental and might exhibit unintended behavior.": "", "Multiple errors deleting profiles": "删除配置文件时出现多个错误", "Multiple minikube profiles were found -": "发现了多个 minikube 配置文件 -", + "Multiple minikube profiles were found - ": "", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "网卡类型仅用于主机网络。Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM 之一,或 virtio(仅限 VirtualBox 驱动程序)", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "网络和连接命令:", "No changes required for the \"{{.context}}\" context": "", @@ -395,7 +402,6 @@ "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "您所在位置的已知存储库都无法访问。正在将 {{.image_repository_name}} 用作后备存储库。", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "已知存储库都无法访问。请考虑使用 --image-repository 标志指定备选镜像存储库", - "Not passing {{.name}}={{.value}} to docker env.": "", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", "Number of CPUs allocated to Kubernetes.": "", @@ -404,24 +410,25 @@ "OS release is {{.pretty_name}}": "", "One of 'yaml' or 'json'.": "", "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http": "", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "正通过默认浏览器打开服务 {{.namespace_name}}/{{.service_name}}...", "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", "Operations on nodes": "", "Options: {{.options}}": "", "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", "Pause": "暂停", "Paused kubelet and {{.count}} containers": "已暂停 kubelet 和 {{.count}} 个容器", "Paused kubelet and {{.count}} containers in: {{.namespaces}}": "已暂停 {{.namespaces}} 中的 kubelet 和 {{.count}} 个容器", "Paused {{.count}} containers": "", "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ...": "", + "Pausing node {{.name}} ... ": "", "Permissions: {{.octalMode}} ({{.writtenMode}})": "权限: {{.octalMode}} ({{.writtenMode}})", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", "Please enter a value:": "请输入一个值:", "Please free up disk or prune images.": "", @@ -429,12 +436,12 @@ "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", "Please see {{.documentation_url}} for more details": "", "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "请升级“{{.driver_executable}}”。{{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", "Populates the specified folder with documentation in markdown about minikube": "", "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", "Powering off \"{{.profile_name}}\" via SSH ...": "正在通过 SSH 关闭“{{.profile_name}}”…", @@ -445,6 +452,7 @@ "Print the version of minikube.": "打印 minikube 版本。", "Problems detected in {{.entry}}:": "在 {{.entry}} 中 检测到问题:", "Problems detected in {{.name}}:": "在 {{.name}} 中 检测到问题:", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", "Profile gets or sets the current minikube profile": "获取或设置当前的 minikube 配置文件", "Profile name \"{{.profilename}}\" is minikube keyword. To delete profile use command minikube delete -p \u003cprofile name\u003e": "配置文件名称 \"{{.profilename}}\" 是 minikube 的一个关键字。使用 minikube delete -p \u003cprofile name\u003e 命令 删除配置文件", "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", @@ -522,7 +530,7 @@ "Show only log entries which point to known problems": "", "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", "Sorry, completion support is not yet implemented for {{.name}}": "", "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", @@ -547,7 +555,7 @@ "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", "Stopping node \"{{.name}}\" ...": "", "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", "Stops a node in a cluster.": "", "Stops a running local Kubernetes cluster": "", "Stops a running local kubernetes cluster": "停止正在运行的本地 kubernetes 集群", @@ -643,7 +651,6 @@ "The value passed to --format is invalid: {{.error}}": "", "The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "", "The {{.driver_name}} driver should not be used with root privileges.": "不应以根权限使用 {{.driver_name}} 驱动程序。", - "There is no local cluster named \"{{.cluster}}\"": "", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "“{{.driver_executable}}”有一个新版本。请考虑升级。{{.documentation_url}}", "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", "These changes will take effect upon a minikube delete and then a minikube start": "", @@ -663,10 +670,10 @@ "To connect to this cluster, use: kubectl --context={{.name}}__1": "如需连接到此集群,请使用 kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To fix this, run: \"{{.command}}\"": "", "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", "To see addons list for other profiles use: `minikube addons -p name list`": "", "To set your Google Cloud project, run: \n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", + "To start a cluster, run: \"{{.command}}\"": "", "To start minikube with Hyper-V, Powershell must be in your PATH`": "", "To track progress on multi-node clusters, see https://github.com/kubernetes/minikube/issues/7538.": "", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "如需以您自己的用户身份使用 kubectl 或 minikube 命令,您可能需要重新定位该命令。例如,如需覆盖您的自定义设置,请运行:", @@ -675,6 +682,7 @@ "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", "Trying to delete invalid profile {{.profile}}": "尝试删除无效的配置文件 {{.profile}}", "Unable to bind flags": "无法绑定标志", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", "Unable to determine a default driver to use. Try specifying --vm-driver, or see https://minikube.sigs.k8s.io/docs/start/": "无法确定要使用的默认驱动。尝试通过 --vm-dirver 指定,或者查阅 https://minikube.sigs.k8s.io/docs/start/", "Unable to enable dashboard": "", "Unable to fetch latest version info": "", @@ -708,12 +716,12 @@ "Unable to stop VM": "无法停止虚拟机", "Unable to update {{.driver}} driver: {{.error}}": "", "Unable to verify SSH connectivity: {{.error}}. Will retry...": "无法验证 SSH 连接: {{.error}}。即将重试...", - "Unfortunately, could not download the base image {{.image_name}}": "", + "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "正在使用 {{.bootstrapper_name}} 卸载 Kubernetes {{.kubernetes_version}}…", "Unmounting {{.path}} ...": "", "Unpaused {{.count}} containers": "", "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ...": "", + "Unpausing node {{.name}} ... ": "", "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", "Unset variables instead of setting them": "", "Update kubeconfig in case of an IP or port change": "", @@ -738,7 +746,7 @@ "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", "User ID: {{.userID}}": "用户 ID: {{.userID}}", "Userspace file server is shutdown": "", - "Userspace file server:": "", + "Userspace file server: ": "", "Using image repository {{.name}}": "正在使用镜像存储库 {{.name}}", "Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "同时使用 'none' 驱动以及 '{{.runtime}}' 运行时是未经测试过的配置!", @@ -773,9 +781,10 @@ "Warning: Your kubectl is pointing to stale minikube-vm.\\nTo fix the kubectl context, run `minikube update-context`": "警告:您的 kubectl 指向了过时的 minikube-vm。执行 `minikube update-context` 来修复 kubectl 上下文。", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "NFS 共享的根目录位置,默认为 /nfsshares(仅限 hyperkit 驱动程序)", "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "您似乎正在使用代理,但您的 NO_PROXY 环境不包含 minikube IP ({{.ip_address}})。如需了解详情,请参阅 {{.documentation_url}}", - "You can delete them using the following command(s):": "", + "You can delete them using the following command(s): ": "", "You can force an unsupported Kubernetes version via the --force flag": "", "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", "You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "", @@ -789,16 +798,17 @@ "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", "Your minikube vm is not running, try minikube start.": "", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", "addon enable failed": "启用插件失败", "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "插件使用诸如 \"minikube addons enable dashboard\" 的子命令修改 minikube 的插件文件", "bash completion failed": "", "call with cleanup=true to remove old tunnels": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "", "config view failed": "", "dashboard service is not running: {{.error}}": "", + "delete ctx": "", "deleting node": "", "disable failed": "禁用失败", "dry-run mode. Validates configuration, but does not mutate system state": "", @@ -828,15 +838,14 @@ "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", "kubectl proxy": "", "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "", - "logdir set failed": "", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", "max time to wait per Kubernetes core services to be healthy.": "每个 Kubernetes 核心服务保持健康所需的最长时间。", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is exiting due to an error. If the above message is not useful, open an issue:": "由于出错 minikube 正在退出。如果以上信息没有帮助,请提交问题反馈:", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", "minikube is unable to connect to the VM: {{.error}}\n\nThis is likely due to one of two reasons:\n\n- VPN or firewall interference\n- {{.hypervisor}} network configuration issue\n\nSuggested workarounds:\n\n- Disable your local VPN or firewall software\n- Configure your local VPN or firewall to allow access to {{.ip}}\n- Restart or reinstall {{.hypervisor}}\n- Use an alternative --vm-driver": "minikube 无法连接到虚拟机:{{.error}}\n\n可能是由于以下两个原因之一导致:\n\n-VPN 或防火墙冲突\n- {{.hypervisor}} 网络配置问题\n建议的方案:\n\n- 禁用本地的 VPN 或者防火墙软件\n- 配置本地 VPN 或防火墙软件,放行 {{.ip}}\n- 重启或者重装 {{.hypervisor}}\n- 使用另外的 --vm-driver", "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", @@ -854,6 +863,7 @@ "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", "pause containers": "暂停容器", + "preload extraction failed: \\\"No space left on device\\\"": "", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "", "provisioning host for node": "", "reload cached images.": "重新加载缓存的镜像", @@ -868,7 +878,6 @@ "tunnel makes services of type LoadBalancer accessible on localhost": "隧道使本地主机上可以访问 LoadBalancer 类型的服务", "unable to bind flags": "", "unable to delete minikube config folder": "无法删除 minikube 配置目录", - "unable to set logtostderr": "", "unpause Kubernetes": "恢复 Kubernetes", "unset failed": "", "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", @@ -887,6 +896,7 @@ "version yaml failure": "", "zsh completion failed": "", "{{ .name }}: {{ .rejection }}": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", "{{.count}} nodes stopped.": "", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "", @@ -899,6 +909,8 @@ "{{.name}} has no available configuration options": "", "{{.name}} is already running": "", "{{.name}} was successfully configured": "", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", "{{.path}} is version {{.client_version}}, and is incompatible with Kubernetes {{.cluster_version}}. You will need to update {{.path}} or use 'minikube kubectl' to connect with this cluster": "{{.path}} 的版本是 {{.client_version}},且与 Kubernetes {{.cluster_version}} 不兼容。您需要更新 {{.path}} 或者使用 'minikube kubectl' 连接到这个集群", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "",