Merge pull request #3441 from brb/2907-no-cni-conf-by-default
Do not include the default CNI config by defaultpull/3534/head
commit
3aa83674a9
|
|
@ -60,6 +60,7 @@ const (
|
||||||
containerRuntime = "container-runtime"
|
containerRuntime = "container-runtime"
|
||||||
criSocket = "cri-socket"
|
criSocket = "cri-socket"
|
||||||
networkPlugin = "network-plugin"
|
networkPlugin = "network-plugin"
|
||||||
|
enableDefaultCNI = "enable-default-cni"
|
||||||
hypervVirtualSwitch = "hyperv-virtual-switch"
|
hypervVirtualSwitch = "hyperv-virtual-switch"
|
||||||
kvmNetwork = "kvm-network"
|
kvmNetwork = "kvm-network"
|
||||||
keepContext = "keep-context"
|
keepContext = "keep-context"
|
||||||
|
|
@ -240,6 +241,7 @@ func runStart(cmd *cobra.Command, args []string) {
|
||||||
ServiceCIDR: viper.GetString(serviceCIDR),
|
ServiceCIDR: viper.GetString(serviceCIDR),
|
||||||
ExtraOptions: extraOptions,
|
ExtraOptions: extraOptions,
|
||||||
ShouldLoadCachedImages: shouldCacheImages,
|
ShouldLoadCachedImages: shouldCacheImages,
|
||||||
|
EnableDefaultCNI: viper.GetBool(enableDefaultCNI),
|
||||||
}
|
}
|
||||||
|
|
||||||
k8sBootstrapper, err := GetClusterBootstrapper(api, clusterBootstrapper)
|
k8sBootstrapper, err := GetClusterBootstrapper(api, clusterBootstrapper)
|
||||||
|
|
@ -486,6 +488,7 @@ func init() {
|
||||||
startCmd.Flags().String(criSocket, "", "The cri socket path to be used")
|
startCmd.Flags().String(criSocket, "", "The cri socket path to be used")
|
||||||
startCmd.Flags().String(kubernetesVersion, constants.DefaultKubernetesVersion, "The kubernetes version that the minikube VM will use (ex: v1.2.3)")
|
startCmd.Flags().String(kubernetesVersion, constants.DefaultKubernetesVersion, "The kubernetes version that the minikube VM will use (ex: v1.2.3)")
|
||||||
startCmd.Flags().String(networkPlugin, "", "The name of the network plugin")
|
startCmd.Flags().String(networkPlugin, "", "The name of the network plugin")
|
||||||
|
startCmd.Flags().Bool(enableDefaultCNI, false, "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \"--network-plugin=cni\"")
|
||||||
startCmd.Flags().String(featureGates, "", "A set of key=value pairs that describe feature gates for alpha/experimental features.")
|
startCmd.Flags().String(featureGates, "", "A set of key=value pairs that describe feature gates for alpha/experimental features.")
|
||||||
startCmd.Flags().Bool(cacheImages, false, "If true, cache docker images for the current bootstrapper and load them into the machine.")
|
startCmd.Flags().Bool(cacheImages, false, "If true, cache docker images for the current bootstrapper and load them into the machine.")
|
||||||
startCmd.Flags().Var(&extraOptions, "extra-config",
|
startCmd.Flags().Var(&extraOptions, "extra-config",
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ When starting minikube, specify the following flags, along with any additional d
|
||||||
```shell
|
```shell
|
||||||
$ minikube start --container-runtime=containerd \
|
$ minikube start --container-runtime=containerd \
|
||||||
--docker-opt containerd=/var/run/containerd/containerd.sock \
|
--docker-opt containerd=/var/run/containerd/containerd.sock \
|
||||||
--network-plugin=cni
|
--network-plugin=cni --enable-default-cni
|
||||||
```
|
```
|
||||||
|
|
||||||
### Enabling gVisor
|
### Enabling gVisor
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../../../usr/libexec/kubernetes/kubelet-plugins/net/exec/k8s.conf
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
"name": "rkt.kubernetes.io",
|
|
||||||
"type": "bridge",
|
|
||||||
"bridge": "mybridge",
|
|
||||||
"mtu": 1460,
|
|
||||||
"addIf": "true",
|
|
||||||
"isGateway": true,
|
|
||||||
"ipMasq": true,
|
|
||||||
"ipam": {
|
|
||||||
"type": "host-local",
|
|
||||||
"subnet": "10.1.0.0/16",
|
|
||||||
"gateway": "10.1.0.1",
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"dst": "0.0.0.0/0"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
"name": "rkt.kubernetes.io",
|
|
||||||
"type": "bridge",
|
|
||||||
"bridge": "mybridge",
|
|
||||||
"mtu": 1460,
|
|
||||||
"addIf": "true",
|
|
||||||
"isGateway": true,
|
|
||||||
"ipMasq": true,
|
|
||||||
"ipam": {
|
|
||||||
"type": "host-local",
|
|
||||||
"subnet": "10.1.0.0/16",
|
|
||||||
"gateway": "10.1.0.1",
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"dst": "0.0.0.0/0"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -5,6 +5,7 @@ To use [rkt](https://github.com/coreos/rkt) as the container runtime run:
|
||||||
```shell
|
```shell
|
||||||
$ minikube start \
|
$ minikube start \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--container-runtime=rkt
|
--container-runtime=rkt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -16,6 +17,7 @@ To use [CRI-O](https://github.com/kubernetes-incubator/cri-o) as the container r
|
||||||
```shell
|
```shell
|
||||||
$ minikube start \
|
$ minikube start \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--container-runtime=cri-o
|
--container-runtime=cri-o
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -24,6 +26,7 @@ Or you can use the extended version:
|
||||||
```shell
|
```shell
|
||||||
$ minikube start \
|
$ minikube start \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--cri-socket=/var/run/crio/crio.sock \
|
--cri-socket=/var/run/crio/crio.sock \
|
||||||
--extra-config=kubelet.container-runtime=remote \
|
--extra-config=kubelet.container-runtime=remote \
|
||||||
--extra-config=kubelet.container-runtime-endpoint=unix:///var/run/crio/crio.sock \
|
--extra-config=kubelet.container-runtime-endpoint=unix:///var/run/crio/crio.sock \
|
||||||
|
|
@ -37,6 +40,7 @@ To use [containerd](https://github.com/containerd/containerd) as the container r
|
||||||
```shell
|
```shell
|
||||||
$ minikube start \
|
$ minikube start \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--container-runtime=containerd
|
--container-runtime=containerd
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -45,6 +49,7 @@ Or you can use the extended version:
|
||||||
```shell
|
```shell
|
||||||
$ minikube start \
|
$ minikube start \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--cri-socket=/run/containerd/containerd.sock \
|
--cri-socket=/run/containerd/containerd.sock \
|
||||||
--extra-config=kubelet.container-runtime=remote \
|
--extra-config=kubelet.container-runtime=remote \
|
||||||
--extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \
|
--extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ The bootable ISO image will be available in `out/minikube.iso`.
|
||||||
$ ./out/minikube start \
|
$ ./out/minikube start \
|
||||||
--container-runtime=rkt \
|
--container-runtime=rkt \
|
||||||
--network-plugin=cni \
|
--network-plugin=cni \
|
||||||
|
--enable-default-cni \
|
||||||
--iso-url=file://$GOPATH/src/k8s.io/minikube/out/minikube.iso
|
--iso-url=file://$GOPATH/src/k8s.io/minikube/out/minikube.iso
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 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 kubeadm
|
||||||
|
|
||||||
|
// defaultCNIConfig is the CNI config which is provisioned when --enable-default-cni
|
||||||
|
// has been passed to `minikube start`.
|
||||||
|
//
|
||||||
|
// The config is being written to /etc/cni/net.d/k8s.conf and /etc/rkt/net.d/k8s.conf.
|
||||||
|
const defaultCNIConfig = `
|
||||||
|
{
|
||||||
|
"name": "rkt.kubernetes.io",
|
||||||
|
"type": "bridge",
|
||||||
|
"bridge": "mybridge",
|
||||||
|
"mtu": 1460,
|
||||||
|
"addIf": "true",
|
||||||
|
"isGateway": true,
|
||||||
|
"ipMasq": true,
|
||||||
|
"ipam": {
|
||||||
|
"type": "host-local",
|
||||||
|
"subnet": "10.1.0.0/16",
|
||||||
|
"gateway": "10.1.0.1",
|
||||||
|
"routes": [
|
||||||
|
{
|
||||||
|
"dst": "0.0.0.0/0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
@ -363,6 +363,15 @@ func (k *KubeadmBootstrapper) UpdateCluster(cfg config.KubernetesConfig) error {
|
||||||
assets.NewMemoryAssetTarget([]byte(kubeadmCfg), constants.KubeadmConfigFile, "0640"),
|
assets.NewMemoryAssetTarget([]byte(kubeadmCfg), constants.KubeadmConfigFile, "0640"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy the default CNI config (k8s.conf), so that kubelet can successfully
|
||||||
|
// start a Pod in the case a user hasn't manually installed any CNI plugin
|
||||||
|
// and minikube was started with "--extra-config=kubelet.network-plugin=cni".
|
||||||
|
if cfg.EnableDefaultCNI {
|
||||||
|
files = append(files,
|
||||||
|
assets.NewMemoryAssetTarget([]byte(defaultCNIConfig), constants.DefaultCNIConfigPath, "0644"),
|
||||||
|
assets.NewMemoryAssetTarget([]byte(defaultCNIConfig), constants.DefaultRktNetConfigPath, "0644"))
|
||||||
|
}
|
||||||
|
|
||||||
var g errgroup.Group
|
var g errgroup.Group
|
||||||
for _, bin := range []string{"kubelet", "kubeadm"} {
|
for _, bin := range []string{"kubelet", "kubeadm"} {
|
||||||
bin := bin
|
bin := bin
|
||||||
|
|
|
||||||
|
|
@ -72,4 +72,5 @@ type KubernetesConfig struct {
|
||||||
ExtraOptions util.ExtraOptionSlice
|
ExtraOptions util.ExtraOptionSlice
|
||||||
|
|
||||||
ShouldLoadCachedImages bool
|
ShouldLoadCachedImages bool
|
||||||
|
EnableDefaultCNI bool
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -147,9 +147,11 @@ const AddonsPath = "/etc/kubernetes/addons"
|
||||||
const FilesPath = "/files"
|
const FilesPath = "/files"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
KubeletServiceFile = "/lib/systemd/system/kubelet.service"
|
KubeletServiceFile = "/lib/systemd/system/kubelet.service"
|
||||||
KubeletSystemdConfFile = "/etc/systemd/system/kubelet.service.d/10-kubeadm.conf"
|
KubeletSystemdConfFile = "/etc/systemd/system/kubelet.service.d/10-kubeadm.conf"
|
||||||
KubeadmConfigFile = "/var/lib/kubeadm.yaml"
|
KubeadmConfigFile = "/var/lib/kubeadm.yaml"
|
||||||
|
DefaultCNIConfigPath = "/etc/cni/net.d/k8s.conf"
|
||||||
|
DefaultRktNetConfigPath = "/etc/rkt/net.d/k8s.conf"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Preflights = []string{
|
var Preflights = []string{
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@ func (m *MinikubeRunner) SSH(command string) (string, error) {
|
||||||
func (m *MinikubeRunner) Start() {
|
func (m *MinikubeRunner) Start() {
|
||||||
switch r := m.Runtime; r {
|
switch r := m.Runtime; r {
|
||||||
case constants.ContainerdRuntime:
|
case constants.ContainerdRuntime:
|
||||||
containerdFlags := "--container-runtime=containerd --network-plugin=cni --docker-opt containerd=/var/run/containerd/containerd.sock"
|
containerdFlags := "--container-runtime=containerd --network-plugin=cni --enable-default-cni --docker-opt containerd=/var/run/containerd/containerd.sock"
|
||||||
m.RunCommand(fmt.Sprintf("start %s %s %s --alsologtostderr --v=5", m.StartArgs, m.Args, containerdFlags), true)
|
m.RunCommand(fmt.Sprintf("start %s %s %s --alsologtostderr --v=5", m.StartArgs, m.Args, containerdFlags), true)
|
||||||
default:
|
default:
|
||||||
m.RunCommand(fmt.Sprintf("start %s %s --alsologtostderr --v=5", m.StartArgs, m.Args), true)
|
m.RunCommand(fmt.Sprintf("start %s %s --alsologtostderr --v=5", m.StartArgs, m.Args), true)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue