Skip to content

ipv6 dual stack (Phase 1 - ALPHA)#73977

Merged
k8s-ci-robot merged 10 commits intokubernetes:masterfrom
khenidak:ipv6dualstack
Jul 3, 2019
Merged

ipv6 dual stack (Phase 1 - ALPHA)#73977
k8s-ci-robot merged 10 commits intokubernetes:masterfrom
khenidak:ipv6dualstack

Conversation

@khenidak
Copy link
Copy Markdown
Contributor

@khenidak khenidak commented Feb 12, 2019

What type of PR is this?
/kind api-change

/kind feature

Implements: kubernetes/enhancements#808
Included:

  • Types modification.
  • Conversions.
  • new conversion unit tests.
  • (updated existing unit tests to match the type changes).
  • node ipam controller that supports multi cidrs.
  • unit tests: node ipam mutli cidr.
  • azure cloud provider support for mutli routes per node.
  • unit tests: azure cloud provider support for mutli routes per node.
  • kubenet support for dual-stack.
  • revise host networking for dual-stack (v1.16).
  • unit tests: kubenet support for dual-stack.
  • e2e tests (as a stand alone PR referenced below).
To configure controller manager to use ipv6dual stack:
use --cluster-cidr="<cidr1>,<cidr2>".

Notes:
 
1. Only the first two cidrs are used (soft limits for Alpha, might be lifted later on). 
2. Only the "RangeAllocator" (default) is allowed as a value for --cidr-allocator-type . Cloud allocators are not compatible with ipv6dualstack 

CC @lachie83 @thockin

What is in the box? (alpha status)

  • Node ipam controller now supports multi-cidr per node (node.Spec.PodCIDRs).
  • Pod.PodStatus.PodIPs supports multiple IPs.
  • Route Controller now supports creating routes per node's cidr.
  • kubenet now supports dualstack.
  • Azure support Route() interface implementation for dualstack.
  • Known issue: kubenet will always force reporting ipv4, ipv6 (irrespective of podCIDRs order).
  • updates to CRI to support reporting multiple IPs per PodSandBox.

Known Issues

  • Cluster ipv6 CIDRS mask bigger than 24 will fail
  • ipv6 cidr assignment is using the default ipv4 cidr /24 (Future: add controls over v6 cidr size)
  • kubenet forces v4,v6 reporting of IPs, users who mustv6,v4 as --cluster-cidr
  • Masquerading is not done by kubenet. Users will have to use ip-masq-agent to perform masquerading correctly for ipv6. A standing PR has been created to support this feature Support for IPv6 kubernetes-sigs/ip-masq-agent#45

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. needs-priority Indicates a PR lacks a `priority/foo` label and requires one. sig/apps Categorizes an issue or PR as relevant to SIG Apps. sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Feb 12, 2019
@k8s-ci-robot k8s-ci-robot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/network Categorizes an issue or PR as relevant to SIG Network. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Apr 15, 2019
@k8s-ci-robot k8s-ci-robot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. area/kubelet sig/node Categorizes an issue or PR as relevant to SIG Node. sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels May 6, 2019
@chrisohaver
Copy link
Copy Markdown
Contributor

@chrisohaver

@k8s-ci-robot k8s-ci-robot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. area/cloudprovider sig/cloud-provider Categorizes an issue or PR as relevant to SIG Cloud Provider. labels May 9, 2019
@k8s-ci-robot
Copy link
Copy Markdown
Contributor

k8s-ci-robot commented Jul 2, 2019

@khenidak: The following test failed, say /retest to rerun them all:

Test name Commit Details Rerun command
pull-kubernetes-cross 0af3d67874958e209ad14a95d1015a60146bafc6 link /test pull-kubernetes-cross

Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@dims
Copy link
Copy Markdown
Member

dims commented Jul 2, 2019

/test pull-kubernetes-local-e2e

@thockin
Copy link
Copy Markdown
Member

thockin commented Jul 2, 2019

Thanks!

/lgtm
/approve

@k8s-ci-robot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: dcbw, feiskyer, khenidak, thockin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

1 similar comment
@k8s-ci-robot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: dcbw, feiskyer, khenidak, thockin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

return nil, false, fmt.Errorf("len of ClusterCIDRs==%v and they are not configured as dual stack (at least one from each IPFamily", len(clusterCIDRs))
}

// failure: more than cidrs is not allowed even with dual stack
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

more than cidrs is -> more than two cidrs are

return nil, false, err
}

// failure: more than one cidr and dual stack is not enabled
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems the following code is almost the same as the check in core.go

Consider consolidating the code into a helper.

@saschagrunert
Copy link
Copy Markdown
Member

saschagrunert commented Jul 15, 2019

@khenidak Do you think that we can change the release notes for this PR?

It would be awesome if we could state all user-facing changes within the release-notes block, like the dual stack support of kubenet. We can also add an additional docs block now, where we could link the related KEP.

@khenidak
Copy link
Copy Markdown
Contributor Author

@saschagrunert sure. Do you have a template i can follow?

@saschagrunert
Copy link
Copy Markdown
Member

@saschagrunert sure. Do you have a template i can follow?

Thanks, the only template we have is in the pull request template:https://raw.githubusercontent.com/kubernetes/kubernetes/master/.github/PULL_REQUEST_TEMPLATE.md

So it would be nice if we can add the documentation (KEP) as well.

@kcmartin
Copy link
Copy Markdown

@khenidak Hi! I'm following up for sig-release re: @saschagrunert 's above request:

#73977 (comment)

Where do we stand on getting a release note with user-facing changes?
Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/apiserver area/cloudprovider area/code-generation area/dependency Issues or PRs related to dependency changes area/kubectl area/kubelet area/release-eng Issues or PRs related to the Release Engineering subproject area/test cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. release-note Denotes a PR that will be considered when it comes time to generate release notes. sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. sig/apps Categorizes an issue or PR as relevant to SIG Apps. sig/architecture Categorizes an issue or PR as relevant to SIG Architecture. sig/cli Categorizes an issue or PR as relevant to SIG CLI. sig/cloud-provider Categorizes an issue or PR as relevant to SIG Cloud Provider. sig/cluster-lifecycle Categorizes an issue or PR as relevant to SIG Cluster Lifecycle. sig/network Categorizes an issue or PR as relevant to SIG Network. sig/node Categorizes an issue or PR as relevant to SIG Node. sig/release Categorizes an issue or PR as relevant to SIG Release. sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. sig/testing Categorizes an issue or PR as relevant to SIG Testing. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.