feat: add managed flannel overlay networking - #102
Merged
Conversation
This was referenced Jul 20, 2026
bugkeep
force-pushed
the
feat/worker-overlay-network
branch
3 times, most recently
from
July 21, 2026 15:19
cea0388 to
686356e
Compare
bugkeep
force-pushed
the
feat/worker-overlay-network
branch
from
July 21, 2026 16:13
686356e to
e00ed22
Compare
This was referenced Jul 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
10-casos-bridge.conflistatomically while retaining thecasos-bridgeIPAM network namedocker.1ms.runimages and add critical priority, resource bounds, and rolling updatesv1so controller-created platform Pods are not rejected by av1tov1beta1conversion3.6.11watch-progress support to kube-apiserverRoot cause
Workers previously used node-local bridge networking without a cluster-wide Pod network, so cross-node Pod routing was not reliable. The first version of this PR also duplicated PodCIDR allocation in the deployer even though the controller-manager already runs with
--allocate-node-cidrs=trueand--cluster-cidr=10.244.0.0/16. That introduced two writers for Node PodCIDRs and could leave a pre-created, permanently NotReady Node when a later SSH or Flannel step failed.The worker now starts kubelet, waits for the controller-manager's NodeIPAM allocation, then waits for the host-networked Flannel pod to install the plugin and formal CNI configuration before requiring Node Ready. Flannel readiness failures therefore retain the existing pod diagnostics instead of being hidden behind a generic Node Ready timeout.
Kubernetes 1.36's stale-controller consistency check correctly defers DaemonSet reconciliation until informer reads catch up with controller writes. The repeated Flannel message was not a Kine revision rollback:
casosorg/kinev0.16.2-r2 already serializes revision appends. It repeated because kube-apiserver defaulted the authorization webhook tov1beta1while the CasOS webhook servesauthorization.k8s.io/v1, causing controller-created Pod authorization to fail and the DaemonSet status to be written again. CasOS now selects authorization webhookv1explicitly. The embedded Kine server also reports the same etcd3.6.11version as Kine's CLI default so kube-apiserver enables the watch-progress capability Kine already implements.Upgrade behavior
/opt/cni/bin/flannelon every selected node, including nodes created before this change10-flannel.conflistcasos-bridgenetwork name so existing host-local IPAM allocations remain in the same storeDependency
Base:
master. No preceding PR dependency. The former Kine dependency is already included incasosorg/kinev0.16.2-r2 on current CasOS master. Follow-up #107 depends on this PR and fixes the admission boundary needed for managed platform Pods in the complete issue #101 series.Validation
go test ./...go test ./server ./deploywith local-only regression tests for NodeIPAM reads, CNI migration, plugin delivery, DaemonSet quality, selector preservation, and no-op reconciliationgo build -buildvcs=false ./...go vet ./deploygo test ./serverand local-only regression checks for authorization webhookv1and Kine watch-progress advertisementgo build ./...andgo vet ./...node web/scripts/select-ui-tests-check.jsdocker.1ms.run/flannel/flannel:v0.27.4anddocker.1ms.run/flannel/flannel-cni-plugin:v1.8.0-flannel1Fix: #101