Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dual-Stack support for Kubeadm #1612

Closed
12 of 14 tasks
Arvinderpal opened this issue Jun 14, 2019 · 43 comments
Closed
12 of 14 tasks

Dual-Stack support for Kubeadm #1612

Arvinderpal opened this issue Jun 14, 2019 · 43 comments
Assignees
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. kind/tracking-issue lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. sig/network Categorizes an issue or PR as relevant to SIG Network.

Comments

@Arvinderpal
Copy link

Arvinderpal commented Jun 14, 2019

Is this a BUG REPORT or FEATURE REQUEST?

FEATURE REQUEST

In order to support the forthcoming dual-stack work, certain changes must be made to kubeadm so that it can create dual-stack clusters. The dual-stack KEP (kubernetes/enhancements#808) has a section on changes required in kubeadm.

Phase-1 Tasks:

Phase-2 Tasks:

Additional Tasks:

GA (1.23):

post-GA (1.24)

@neolit123 neolit123 added priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. sig/network Categorizes an issue or PR as relevant to SIG Network. labels Jun 14, 2019
@neolit123
Copy link
Member

thanks for logging the ticket @Arvinderpal
@aojea has been interested in implementing IPV6 support in kind, which uses kubeadm under the hood and adding testing signal for that.

@aojea please take a look and communicate with @Arvinderpal who wishes to add dual stack support in kubeadm.

/assign @aojea @Arvinderpal

@k8s-ci-robot
Copy link
Contributor

@neolit123: GitHub didn't allow me to assign the following users: aojea.

Note that only kubernetes members and repo collaborators can be assigned and that issues/PRs can only have 10 assignees at the same time.
For more information please see the contributor guide

In response to this:

thanks for logging the ticket @Arvinderpal
@aojea has been interested in implementing IPV6 support in kind, which uses kubeadm under the hood and adding testing signal for that.

@aojea please take a look and communicate with @Arvinderpal who wishes to add dual stack support in kubeadm.

/assign @aojea @Arvinderpal

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.

@neolit123
Copy link
Member

neolit123 commented Jun 21, 2019

the IPV6 PRs merged in kind.
kubernetes-sigs/kind#636
also for test signal:
kubernetes/test-infra#13123
(should appear here https://k8s-testgrid.appspot.com/sig-testing-kind#kind%20(IPv6),%20master%20(dev))

@BenTheElder
Copy link
Member

been keeping an eye on the dual stack work for exactly this @neolit123 👀

@aojea
Copy link
Member

aojea commented Jul 20, 2019

/cc

Arvinderpal added a commit to Nordix/kubernetes that referenced this issue Jul 30, 2019
progagates the kubeadm FG to the individual k8scomponents
on the control-plane node.

* Note: Users who want to join worker nodes to the cluster
will have to specify the dual-stack FG to kubelet using the
nodeRegistration.kubeletExtraArgs option as part of their
join config. Alternatively, they can use KUBELET_EXTRA_ARGS.

kubeadm FG: kubernetes/kubeadm#1612
@neolit123 neolit123 added this to the v1.16 milestone Aug 4, 2019
@neolit123 neolit123 added kind/feature Categorizes issue or PR as related to a new feature. kind/tracking-issue labels Sep 10, 2019
@neolit123 neolit123 removed this from the v1.16 milestone Sep 10, 2019
@pacoxu
Copy link
Member

pacoxu commented Feb 25, 2021

@neolit123 @aojea
Should we support multi node IPs in kubeadm init and join?

  • auto-detect or with a flag --node-ips
  • if dual-stack is true, detect both; if single-stack, prefer ipv4 or detect from pod-cidr first.

> --node-ip string IP address (or comma-separated dual-stack IP addresses) of the node. If unset, kubelet will use the node's default IPv4 address, if any, or its default IPv6 address if it has no IPv4 addresses. You can pass '::' to make it prefer the default IPv6 address rather than the default IPv4 address.

@aojea
Copy link
Member

aojea commented Feb 25, 2021

great catch, I think so, or your hostnetwork pods will be single-stack, that can be a problem ...

@neolit123
Copy link
Member

neolit123 commented Feb 25, 2021

well, given kubeadm already supports passing kubelet config / flags we should just document how users can do that (KubeletConfiguration == preferred).
i don't think we should expose this is a wrapper in the kubeadm config or kubeadm flags.

arguably the kubeadm flag --node-name should not exist for similar reasons, but it's already there.

@aojea
Copy link
Member

aojea commented Feb 25, 2021

documentation is fine, I didn't want to mean to create a new option

@pacoxu
Copy link
Member

pacoxu commented Feb 26, 2021

@neolit123 node-ips auto detect should be a kubelet feature in my mind.
Currently, we can add it to the docs for reminding users.

@aojea
Copy link
Member

aojea commented Feb 26, 2021

@neolit123 node-ips auto detect should be a kubelet feature in my mind.
Currently, we can add it to the docs for reminding users.

the user has to specify the IP addresses of each family, separated by comma, there is no autodetect for dual-stack

@neolit123 neolit123 added the lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. label Mar 9, 2021
@neolit123 neolit123 modified the milestones: v1.21, v1.22 Apr 12, 2021
@pacoxu
Copy link
Member

pacoxu commented Jun 7, 2021

Per kubernetes/enhancements#563 (comment), it will wait to 1.23

@neolit123 neolit123 modified the milestones: v1.22, v1.23 Jul 5, 2021
@neolit123 neolit123 added priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. and removed priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. labels Aug 23, 2021
@neolit123
Copy link
Member

neolit123 commented Aug 31, 2021

looks like the FG is moving to GA in 1.23:
kubernetes/kubernetes#104691

this mean we can remove the kubeadm FG + handling in kubeadm in 1.24 or later.

@pacoxu
Copy link
Member

pacoxu commented Sep 1, 2021

In 1.23 kubeadm, we may change the FG to hidden like below after kubernetes/kubernetes#104691 is merged.

IPv6DualStack:   {FeatureSpec: featuregate.FeatureSpec{Default: true, PreRelease: featuregate.GA}, HiddenInHelpText: true},

@khenidak
Copy link

khenidak commented Sep 1, 2021

Folks -- Do you want me to address gate removal in PR kubernetes/kubernetes#104691 - or do you want to take care of it separatly?

@neolit123 @pacoxu @aojea

@neolit123
Copy link
Member

for 1.23 in kubeadm we should just change this line:
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/features/features.go#L42

to be exactly this:

IPv6DualStack:   {FeatureSpec: featuregate.FeatureSpec{Default: true, LockToDefault: true, PreRelease: featuregate.GA}, HiddenInHelpText: true},

^ LockToDefault is true, i'm assuming this also has to happen for the core feature gate - i.e. when the FG goes GA we are going to lock it to true.
it also includes HiddenInHelpText: true as @pacoxu pointed out above (this is a kubeadm specific FG property).
you can do that in the kubernetes/kubernetes#104691 PR.

IMO, the cleanup of logic around the IPv6DualStack feature gate checks in kubeadm can be done when the kubeadm FG is removed. we can do that in 1.24 (one release after the FG goes GA).
not sure what the core maintainers prefer for the core logic, but making the kubeadm changes in 1.24 and separate PR seems like less noise.

seems like core generally prefers to remove the FG logic when a FG goes GA and not when the FG is removed - e.g.:
kubernetes/kubernetes#97543
(@pacoxu you did this change for LegacyNodeRoleBehavior)

@pacoxu
Copy link
Member

pacoxu commented Sep 2, 2021

seems like core generally prefers to remove the FG logic when a FG goes GA and not when the FG is removed

Yes. Either is ok(in 1.23 or 1.24).

@khenidak As Lubomir points out, you can just update the cmd/kubeadm/app/features/features.go#L42.

The removal of the FG logic in kubeadm can be done in your PR or a separate PR which is just a cleanup. Either is OK.

@khenidak
Copy link

khenidak commented Sep 2, 2021

Ok - I will update the feature file. But will not touch the rest. Thank you.

@neolit123
Copy link
Member

we cleaned up the feature gate from kubeadm (1.24):
kubernetes/kubernetes#106648

thanks everyone for helping with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/feature Categorizes issue or PR as related to a new feature. kind/tracking-issue lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. sig/network Categorizes an issue or PR as relevant to SIG Network.
Projects
None yet
Development

No branches or pull requests