Skip to content

Releases: leblancd/kubernetes

Kubernetes IPv6 Version v1.9.0-beta.0.ipv6.2

30 Nov 21:54
1602708
Compare
Choose a tag to compare

This release is a fork of Kubernetes based on a tag that was placed shortly after the change for PR kubernetes#56544 ("Add brackets around IPv6 kube-dns liveness probe addrs") was merged into upstream master. This version of Kubernetes should support instantiation of IPv6-only Kubernetes clusters using kube-proxy in ip6tables mode, and using the CNI bridge plugin (version 0.6.0).

This release includes a hyperkube docker image and Kubernetes amd64 binaries that have been compiled from Kubernetes code based on this release tag.

Associated Hyperkube Container Image

The following hyperkube image was build from Kubernetes code based on this release tag, and should be used with the binaries that are included in this release (kubelet, kubeadm, kubectl, see "Downloads" section below).

diverdane/hyperkube-amd64:v1.9.0-beta.0.ipv6.2

CNI Version 0.6.0 Network Plugins

The binaries that are linked to this release should be used with version 0.6.0 of the CNI network plugin binaries, since these versions support IPv6 addresses on Kubernetes pods. Version 0.6.0 of these plugins can be downloaded from the containernetworking/cni 0.6.0 release page:
https://github.com/containernetworking/cni/releases/tag/v0.6.0

Setup Guidelines for Instantiating an IPv6-Only Kubernetes Cluster

For instructions on how to use this release to stand up an IPv6-only Kubernetes cluster, refer to the kube-v6 github document.

Example kubeadm Configuration File (for Running 'kubeadm init')

After downloading and installing the kubectl, kubeadm, and kubelet binaries for this IPv6-enabled release, the following kubeadm configuration file can be used to direct kubeadm to load the IPv6-enabled hyperkube and kube-dns container images described above.

Copy the following config to a file with name e.g. kubeadm_v6.cfg:


apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: fd00::100
networking:
  serviceSubnet: fd00:1234::/110
unifiedControlPlaneImage: diverdane/hyperkube-amd64:v1.9.0-beta.0.ipv6.2
tokenTTL: 0s
nodeName: kube-master

Then, when starting up the cluster on the Kubernetes master node, run:

kubeadm init --config=kubeadm_v6.cfg

IPv6 End-to-End (e2e) Testing

To run an IPv6 e2e test suite on an IPv6-only cluster, you will need to cherry pick PR kubernetes#52748 into the code base from which you plan on running e2e tests. To include the change for this PR, you can use:

For example, you can use the following to cherry pick this change:

if ! git remote | grep leblancd > /dev/null; then
  git remote add leblancd https://github.com/leblancd/kubernetes.git
  git remote set-url --push leblancd no_push
fi
git fetch leblancd v6_e2e_host_port && git cherry-pick FETCH_HEAD

After including the above PR, please refer to the kube-v6-test github document, specifically the Running the IPv6 Multi-node e2e Test Suite section.

Kubernetes IPv6 Version v1.9.0-alpha.1.ipv6.1b

20 Oct 14:49
Compare
Choose a tag to compare

This release is a fork of Kubernetes with some cherry-picked, not-yet-merged pull requests that are critical to running a cluster in IPv6-only mode using the CNI bridge plugin and using kube-proxy in iptables/ip6tables mode.

This release includes a hyperkube docker image and Kubernetes binaries that have been compiled with the necessary IPv6 changes, and can be used to start up a Kubernetes cluster in IPv6-only mode. This should allow someone to try out Kubernetes IPv6 without having to cherry pick and compile binaries and container images.

Cherry Picked Kubernetes Changes

  • PR #50929 "Add kubeadm config for setting kube-proxy bind address" (REQUIRED FOR
    IPv6 e2e TEST SUITE)
  • PR #53484 "Adds Support for Configurable Kubeadm Probes"
  • PR #45551 "Adds Support for Node Resource IPv6 Addressing"
  • PR #53148 "ip6tables should be set in the noop plugin"
  • PR #53014 "Kubeadm should check for bridge-nf-call-ip6tables"
  • PR #52180 "Updating kubenet for CNI with IPv6"
  • PR #45792 "Updating NewCIDRSet return a value"
  • PR #53569 "Fallback to internal addrs in e2e tests when no external addrs available" (REQUIRED FOR
    IPv6 e2e TEST SUITE)
  • PR #53555 "Add IPv6 and negative UT test cases for proxier's deleteEndpointConnections"
  • PR #52748 "Add brackets around IPv6 addrs in e2e test IP:port endpoints" (REQUIRED FOR
    IPv6 e2e TEST SUITE)
  • TEMP hack for Issue #53329 "Hack to leave conntrack max per core zero, so that later..."
  • TEMP combo of PR #51378 and kubernetes/dns PR #148 "kube-dns IPv6 changes and use
    type SRV sidecar probes" (REQUIRED FOR IPv6 e2e TEST SUITE)

Associated IPv6-Enabled Hyperkube Container Image

The binaries that are included in this release (kubelet, kubeadm, kubectl, see "Downloads" section below) should be used with the following IPv6-enabled hyperkube container image. If you are using kubeadm to bring up a cluster, you can use the kubeadm config file show below to instruct kubeadm to use this IPv6-enabled hyperkube image for your cluster's control plane pods.

diverdane/hyperkube-amd64:v1.9.0-alpha.1.ipv6.1

IPv6-Enabled Kube-DNS Container Images

You should use the following IPv6-enabled kube-dns container images with this release. If you are using the kubeadm binary that is included in this release (see "Downloads" section below) to bring up your cluster, then kubeadm will automatically use these IPv6-enabled kube-dns images when instantiating the kube-dns pods.

diverdane/k8s-dns-sidecar-amd64:1.14.6-v6
diverdane/k8s-dns-kube-dns-amd64:1.14.6-v6
diverdane/k8s-dns-dnsmasq-nanny-amd64:1.14.6-v6

These kube-dns container images include the following IPv6-related fix:
PR #148

CNI Version 0.6.0 Network Plugins

The binaries that are linked to this release should be used with version 0.6.0 of the CNI network plugin binaries, since these versions support IPv6 addresses on Kubernetes pods. Version 0.6.0 of these plugins can be downloaded from the containernetworking/cni 0.6.0 release page:
https://github.com/containernetworking/cni/releases/tag/v0.6.0

Setup Guidelines for Instantiating an IPv6-Only Kubernetes Cluster

For instructions on how to use this release to stand up an IPv6-only Kubernetes cluster, refer to the kube-v6 github document.

Example kubeadm Configuration File (for Running 'kubeadm init')

After downloading and installing the kubectl, kubeadm, and kubelet binaries for this IPv6-enabled release, the following kubeadm configuration file can be used to direct kubeadm to load the IPv6-enabled hyperkube and kube-dns container images described above.

Copy the following config to a file with name e.g. kubeadm_v6.cfg:


apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: fd00::100
kubeProxy:
  bindAddress: "::"
etcd:
  image: diverdane/etcd-amd64:3.0.17
networking:
  serviceSubnet: fd00:1234::/110
unifiedControlPlaneImage: diverdane/hyperkube-amd64:v1.9.0-alpha.1.ipv6.1
tokenTTL: 0s
nodeName: kube-master

Then, when starting up the cluster on the Kubernetes master node, run:

kubeadm init --config=kubeadm_v6.cfg

IPv6 End-to-End (e2e) Testing

To run an IPv6 e2e test suite on an IPv6-only cluster, refer to the kube-v6-test github document, specifically the Running the IPv6 Multi-node e2e Test Suite section.

Build Your Own Binaries and Docker Images from This Release

After cloning this Kubernetes release code base, you can make modifications and build your own binaries and docker images using the following script, after modifying the "KUBE_DOCKER_REGISTRY" to point to your own DockerHub registry:

#!/bin/bash

################################################################
# Shell script for building Kubernetes Binaries and Images and
# pushing the hyperkube container image to a Dockerhub registry.
#
# This utility assumes that $GOPATH is set for proper Go
# compilation and that Kubernetes project
# (https://github.com/kubernetes/kubernetes) has been cloned
# to $GOPATH/src/k8s.io/kubernetes.
################################################################

set -o errexit
set -o nounset
set -o pipefail

################################################################
###   MODIFY THE FOLLOWING TO POINT TO YOUR OWN DOCKERHUB    ###
###       REGISTRY AND TO USE A CUSTOM VERSION TAG!!!        ###
################################################################
export KUBE_DOCKER_REGISTRY=diverdane
export BASE_VERSION=v1.9.0-alpha.1
export KUBE_DOCKER_IMAGE_TAG=$BASE_VERSION.ipv6.1

# Do a fast build of Kubernetes binaries and images
export KUBE_RELEASE_RUN_TESTS=n
export KUBE_FASTBUILD=true
export KUBE_BUILD_HYPERKUBE=y

cd $GOPATH/src/k8s.io/kubernetes
./build/make-clean.sh
./build/run.sh make
./build/release.sh

# Push hyperkube image to Dockerhub
docker images | grep hyperkube | grep $BASE_VERSION | while read x;
do
IMAGE=$(echo $x | awk '{print $1}';)
NAME=${IMAGE##*/}
TAG=$(echo $x | awk '{print $2}';)
docker tag $IMAGE:$TAG $KUBE_DOCKER_REGISTRY/$NAME:$KUBE_DOCKER_IMAGE_TAG
docker push $KUBE_DOCKER_REGISTRY/$NAME:$KUBE_DOCKER_IMAGE_TAG
done

Kubernetes IPv6 Version v1.9.0-alpha.0.ipv6.0

25 Sep 22:13
Compare
Choose a tag to compare

This release is a fork of Kubernetes with some cherry-picked, not-yet-merged pull requests
that are critical to running a cluster in IPv6-only mode using the CNI bridge plugin and
using kube-proxy in iptables/ip6tables mode. This release includes some binaries that have
been compiled with the necessary IPv6 changes, and can be used to start up a Kubernetes
cluster in IPv6-only mode, so that someone can try out Kubernetes IPv6 without having to cherry pick
and compile binaries and container images.

Cherry Picked Kubernetes Changes

PR #47621 "Updates RangeSize error message and tests for IPv6"
PR #48551 "Add IPv6 support to iptables proxier"
PR #50929 "Add kubeadm config for setting kube-proxy bind address"
PR #50478 "Fix kube-proxy to use proper iptables commands for IPv6"
PR #52028 "Add required family flag for conntrack IPv6 operation"
PR #52033 "Removed the IPv6 prefix size limit for cluster-cidr"

The following is a temporary change that points kubeadm to use special IPv6-enabled kube-dns images:
"kube-dns IPv6 changes and use type SRV sidecar probes"
https://github.com/leblancd/kubernetes
Branch: v6_dns_probes

Associated Kubernetes Container Images

The binaries that are linked to this release should be used with the following Kubernetes container images. These docker images were built using the same version of Kubernetes code as the binaries:

diverdane/kube-apiserver-amd64:v1.9.0-alpha.0.ipv6.0
diverdane/kube-controller-manager-amd64:v1.9.0-alpha.0.ipv6.0
diverdane/kube-scheduler-amd64:v1.9.0-alpha.0.ipv6.0
diverdane/kube-proxy-amd64:v1.9.0-alpha.0.ipv6.0

IPv6-Enabled Kube-DNS Container Images

The binaries that are linked to this release should be used with the following kube-dns container images. The kube-dns is built from a separate github project (kubernetes/dns) than other Kubernetes code. The following image contains a couple of IPv6 fixes required for kube-dns to work in an IPv6-only cluster:

diverdane/k8s-dns-sidecar-amd64:1.14.4
diverdane/k8s-dns-kube-dns-amd64:1.14.4
diverdane/k8s-dns-dnsmasq-nanny-amd64:1.14.4

These kube-dns container images include the following IPv6-related fixes:
PR #148
PR #151

CNI Version 0.6.0 Network Plugins

The binaries that are linked to this release should be used with version 0.6.0 of the CNI network plugin binaries, since these versions support IPv6 addresses on Kubernetes pods. Version 0.6.0 of these plugins can be downloaded from the containernetworking/cni 0.6.0 release page:
https://github.com/containernetworking/cni/releases/tag/v0.6.0

Example kubeadm Configuration File (for Running 'kubeadm init')

After downloading and installing the kubectl, kubeadm, and kubelet binaries for this IPv6-enabled release, the following kubeadm configuration file can be used to direct kubeadm to load the Kubernetes container images listed above.

Copy the following config to a file with name e.g. kubeadm_v6.cfg:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: fd00::100
kubeProxy:
  bindAddress: "::"
etcd:
  image: diverdane/etcd-amd64:3.0.17
networking:
  serviceSubnet: fd00:1234::/110
imageRepository: diverdane
kubernetesVersion: v1.9.0-alpha.0.ipv6.0
tokenTTL: 0s
nodeName: kube-master

Then, when starting up the cluster on the Kubernetes master node, run:

kubeadm init --config=kubeadm_v6.cfg