Skip to content

Commit 4bf3fc4

Browse files
authored
Add docker run-time for kic driver (#6436)
* Add docker container run time for kic
1 parent eeb867f commit 4bf3fc4

File tree

6 files changed

+31
-11
lines changed

6 files changed

+31
-11
lines changed

Diff for: Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -494,8 +494,8 @@ storage-provisioner-image: out/storage-provisioner-$(GOARCH) ## Build storage-pr
494494

495495
.PHONY: kic-base-image
496496
kic-base-image: ## builds the base image used for kic.
497-
docker rmi -f $(REGISTRY)/kicbase:v0.0.2-snapshot || true
498-
docker build -f ./hack/images/kicbase.Dockerfile -t $(REGISTRY)/kicbase:v0.0.2-snapshot --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) .
497+
docker rmi -f $(REGISTRY)/kicbase:v0.0.3-snapshot || true
498+
docker build -f ./hack/images/kicbase.Dockerfile -t $(REGISTRY)/kicbase:v0.0.3-snapshot --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) .
499499

500500

501501

Diff for: hack/images/kicbase.Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ RUN apt-get update && apt-get install -y \
77
sudo \
88
dnsutils \
99
openssh-server \
10+
docker.io \
1011
&& apt-get clean -y
1112
# based on https://github.com/rastasheep/ubuntu-sshd/blob/master/18.04/Dockerfile
1213
# making SSH work for docker container
@@ -28,7 +29,7 @@ RUN rm -rf \
2829
/kind/bin/kubeadm /kind/bin/kubelet /kind/systemd /kind/images /kind/manifests
2930
RUN echo "kic! Build: ${COMMIT_SHA} Time :$(date)" > "/kic.txt"
3031
# for minikube ssh. to match VM using docker username
31-
RUN adduser --disabled-password --gecos '' docker
32+
RUN adduser --ingroup docker --disabled-password --gecos '' docker
3233
RUN adduser docker sudo
3334
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
3435
USER docker

Diff for: pkg/drivers/kic/kic.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const DefaultPodCIDR = "10.244.0.0/16"
4343
const DefaultBindIPV4 = "127.0.0.1"
4444

4545
// BaseImage is the base image is used to spin up kic containers created by kind.
46-
const BaseImage = "gcr.io/k8s-minikube/kicbase:v0.0.2@sha256:8f531b90901721a7bd4e67ceffbbc7ee6c4292b0e6d1a9d6eb59f117d57bc4e9"
46+
const BaseImage = "gcr.io/k8s-minikube/kicbase:v0.0.3@sha256:34db5e30f8830c0d5e49b62f3ea6b2844f805980592fe0084cbea799bfb12664"
4747

4848
// OverlayImage is the cni plugin used for overlay image, created by kind.
4949
const OverlayImage = "kindest/kindnetd:0.5.3"
@@ -109,6 +109,10 @@ func (d *Driver) Create() error {
109109
ListenAddress: DefaultBindIPV4,
110110
ContainerPort: constants.SSHPort,
111111
},
112+
oci.PortMapping{
113+
ListenAddress: DefaultBindIPV4,
114+
ContainerPort: constants.DockerDaemonPort,
115+
},
112116
)
113117
_, err := node.CreateNode(params)
114118
if err != nil {

Diff for: pkg/minikube/cluster/cluster.go

+20-6
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ import (
4747
"github.com/shirou/gopsutil/mem"
4848
"github.com/spf13/viper"
4949

50+
"k8s.io/minikube/pkg/drivers/kic"
51+
"k8s.io/minikube/pkg/drivers/kic/oci"
5052
"k8s.io/minikube/pkg/minikube/command"
5153
"k8s.io/minikube/pkg/minikube/config"
5254
"k8s.io/minikube/pkg/minikube/constants"
@@ -534,21 +536,33 @@ func createHost(api libmachine.API, cfg config.MachineConfig) (*host.Host, error
534536

535537
// GetHostDockerEnv gets the necessary docker env variables to allow the use of docker through minikube's vm
536538
func GetHostDockerEnv(api libmachine.API) (map[string]string, error) {
537-
host, err := CheckIfHostExistsAndLoad(api, viper.GetString(config.MachineProfile))
539+
pName := viper.GetString(config.MachineProfile)
540+
host, err := CheckIfHostExistsAndLoad(api, pName)
538541
if err != nil {
539542
return nil, errors.Wrap(err, "Error checking that api exists and loading it")
540543
}
541-
ip, err := host.Driver.GetIP()
542-
if err != nil {
543-
return nil, errors.Wrap(err, "Error getting ip from host")
544+
545+
ip := kic.DefaultBindIPV4
546+
if !driver.IsKIC(host.Driver.DriverName()) { // kic externally accessible ip is different that node ip
547+
ip, err = host.Driver.GetIP()
548+
if err != nil {
549+
return nil, errors.Wrap(err, "Error getting ip from host")
550+
}
551+
544552
}
545553

546554
tcpPrefix := "tcp://"
547-
port := "2376"
555+
port := constants.DockerDaemonPort
556+
if driver.IsKIC(host.Driver.DriverName()) { // for kic we need to find out what port docker allocated during creation
557+
port, err = oci.HostPortBinding(host.Driver.DriverName(), pName, constants.DockerDaemonPort)
558+
if err != nil {
559+
return nil, errors.Wrapf(err, "get hostbind port for %d", constants.DockerDaemonPort)
560+
}
561+
}
548562

549563
envMap := map[string]string{
550564
"DOCKER_TLS_VERIFY": "1",
551-
"DOCKER_HOST": tcpPrefix + net.JoinHostPort(ip, port),
565+
"DOCKER_HOST": tcpPrefix + net.JoinHostPort(ip, fmt.Sprint(port)),
552566
"DOCKER_CERT_PATH": localpath.MakeMiniPath("certs"),
553567
}
554568
return envMap, nil

Diff for: pkg/minikube/constants/constants.go

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727
)
2828

2929
const (
30+
// DockerDaemonPort is the port Docker daemon listening inside a minikube node (vm or container).
31+
DockerDaemonPort = 2376
3032
// SSHPort is the SSH serviceport on the node vm and container
3133
SSHPort = 22
3234
// APIServerPort is the default API server port

Diff for: pkg/minikube/driver/driver.go

-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ func FlagDefaults(name string) FlagHints {
108108
fh.CacheImages = true
109109
// only for kic, till other run-times are available we auto-set containerd.
110110
if name == Docker {
111-
fh.ContainerRuntime = "containerd"
112111
fh.ExtraOptions = append(fh.ExtraOptions, fmt.Sprintf("kubeadm.pod-network-cidr=%s", kic.DefaultPodCIDR))
113112
}
114113
return fh

0 commit comments

Comments
 (0)