Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
27854fa0
Commit
27854fa0
authored
Aug 08, 2017
by
Bowei Du
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Break up node controller into packages
This change does NO actual code changes other than moving constituent parts into packages.
parent
c9d142d7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
372 additions
and
182 deletions
+372
-182
BUILD
cmd/kube-controller-manager/app/BUILD
+1
-0
core.go
cmd/kube-controller-manager/app/core.go
+2
-1
BUILD
pkg/controller/node/BUILD
+13
-28
BUILD
pkg/controller/node/ipam/BUILD
+68
-0
OWNERS
pkg/controller/node/ipam/OWNERS
+7
-0
cidr_allocator.go
pkg/controller/node/ipam/cidr_allocator.go
+1
-5
cidr_allocator_test.go
pkg/controller/node/ipam/cidr_allocator_test.go
+4
-4
BUILD
pkg/controller/node/ipam/cidrset/BUILD
+36
-0
cidr_set.go
pkg/controller/node/ipam/cidrset/cidr_set.go
+17
-11
cidr_set_test.go
pkg/controller/node/ipam/cidrset/cidr_set_test.go
+27
-27
cloud_cidr_allocator.go
pkg/controller/node/ipam/cloud_cidr_allocator.go
+4
-3
range_allocator.go
pkg/controller/node/ipam/range_allocator.go
+15
-12
node_controller.go
pkg/controller/node/node_controller.go
+0
-0
nodecontroller_test.go
pkg/controller/node/nodecontroller_test.go
+11
-8
BUILD
pkg/controller/node/scheduler/BUILD
+69
-0
rate_limited_queue.go
pkg/controller/node/scheduler/rate_limited_queue.go
+11
-2
rate_limited_queue_test.go
pkg/controller/node/scheduler/rate_limited_queue_test.go
+1
-1
taint_controller.go
pkg/controller/node/scheduler/taint_controller.go
+2
-2
taint_controller_test.go
pkg/controller/node/scheduler/taint_controller_test.go
+1
-1
timed_workers.go
pkg/controller/node/scheduler/timed_workers.go
+1
-1
timed_workers_test.go
pkg/controller/node/scheduler/timed_workers_test.go
+1
-1
BUILD
pkg/controller/node/util/BUILD
+48
-0
controller_utils.go
pkg/controller/node/util/controller_utils.go
+32
-75
No files found.
cmd/kube-controller-manager/app/BUILD
View file @
27854fa0
...
@@ -63,6 +63,7 @@ go_library(
...
@@ -63,6 +63,7 @@ go_library(
"//pkg/controller/job:go_default_library",
"//pkg/controller/job:go_default_library",
"//pkg/controller/namespace:go_default_library",
"//pkg/controller/namespace:go_default_library",
"//pkg/controller/node:go_default_library",
"//pkg/controller/node:go_default_library",
"//pkg/controller/node/ipam:go_default_library",
"//pkg/controller/podautoscaler:go_default_library",
"//pkg/controller/podautoscaler:go_default_library",
"//pkg/controller/podautoscaler/metrics:go_default_library",
"//pkg/controller/podautoscaler/metrics:go_default_library",
"//pkg/controller/podgc:go_default_library",
"//pkg/controller/podgc:go_default_library",
...
...
cmd/kube-controller-manager/app/core.go
View file @
27854fa0
...
@@ -42,6 +42,7 @@ import (
...
@@ -42,6 +42,7 @@ import (
"k8s.io/kubernetes/pkg/controller/garbagecollector"
"k8s.io/kubernetes/pkg/controller/garbagecollector"
namespacecontroller
"k8s.io/kubernetes/pkg/controller/namespace"
namespacecontroller
"k8s.io/kubernetes/pkg/controller/namespace"
nodecontroller
"k8s.io/kubernetes/pkg/controller/node"
nodecontroller
"k8s.io/kubernetes/pkg/controller/node"
"k8s.io/kubernetes/pkg/controller/node/ipam"
"k8s.io/kubernetes/pkg/controller/podgc"
"k8s.io/kubernetes/pkg/controller/podgc"
replicationcontroller
"k8s.io/kubernetes/pkg/controller/replication"
replicationcontroller
"k8s.io/kubernetes/pkg/controller/replication"
resourcequotacontroller
"k8s.io/kubernetes/pkg/controller/resourcequota"
resourcequotacontroller
"k8s.io/kubernetes/pkg/controller/resourcequota"
...
@@ -108,7 +109,7 @@ func startNodeController(ctx ControllerContext) (bool, error) {
...
@@ -108,7 +109,7 @@ func startNodeController(ctx ControllerContext) (bool, error) {
serviceCIDR
,
serviceCIDR
,
int
(
ctx
.
Options
.
NodeCIDRMaskSize
),
int
(
ctx
.
Options
.
NodeCIDRMaskSize
),
ctx
.
Options
.
AllocateNodeCIDRs
,
ctx
.
Options
.
AllocateNodeCIDRs
,
nodecontroller
.
CIDRAllocatorType
(
ctx
.
Options
.
CIDRAllocatorType
),
ipam
.
CIDRAllocatorType
(
ctx
.
Options
.
CIDRAllocatorType
),
ctx
.
Options
.
EnableTaintManager
,
ctx
.
Options
.
EnableTaintManager
,
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
TaintBasedEvictions
),
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
TaintBasedEvictions
),
)
)
...
...
pkg/controller/node/BUILD
View file @
27854fa0
...
@@ -10,25 +10,20 @@ load(
...
@@ -10,25 +10,20 @@ load(
go_test(
go_test(
name = "go_default_test",
name = "go_default_test",
srcs = [
srcs = ["nodecontroller_test.go"],
"cidr_allocator_test.go",
"cidr_set_test.go",
"nodecontroller_test.go",
"rate_limited_queue_test.go",
"taint_controller_test.go",
"timed_workers_test.go",
],
library = ":go_default_library",
library = ":go_default_library",
tags = ["automanaged"],
tags = ["automanaged"],
deps = [
deps = [
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/fake:go_default_library",
"//pkg/cloudprovider/providers/fake:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/node/ipam:go_default_library",
"//pkg/controller/node/scheduler:go_default_library",
"//pkg/controller/node/util:go_default_library",
"//pkg/controller/testutil:go_default_library",
"//pkg/controller/testutil:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//pkg/kubelet/apis:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/taints:go_default_library",
"//pkg/util/taints:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
...
@@ -36,7 +31,6 @@ go_test(
...
@@ -36,7 +31,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
...
@@ -44,35 +38,24 @@ go_test(
...
@@ -44,35 +38,24 @@ go_test(
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
],
],
)
)
go_library(
go_library(
name = "go_default_library",
name = "go_default_library",
srcs = [
srcs = [
"cidr_allocator.go",
"cidr_set.go",
"cloud_cidr_allocator.go",
"controller_utils.go",
"doc.go",
"doc.go",
"metrics.go",
"metrics.go",
"node_controller.go",
"node_controller.go",
"range_allocator.go",
"rate_limited_queue.go",
"taint_controller.go",
"timed_workers.go",
],
],
tags = ["automanaged"],
tags = ["automanaged"],
deps = [
deps = [
"//pkg/api:go_default_library",
"//pkg/api/helper:go_default_library",
"//pkg/api/v1/helper:go_default_library",
"//pkg/api/v1/node:go_default_library",
"//pkg/api/v1/node:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubelet/util/format:go_default_library",
"//pkg/controller/node/ipam:go_default_library",
"//pkg/controller/node/scheduler:go_default_library",
"//pkg/controller/node/util:go_default_library",
"//pkg/util/metrics:go_default_library",
"//pkg/util/metrics:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/system:go_default_library",
"//pkg/util/system:go_default_library",
...
@@ -88,9 +71,7 @@ go_library(
...
@@ -88,9 +71,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library",
...
@@ -102,7 +83,6 @@ go_library(
...
@@ -102,7 +83,6 @@ go_library(
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
],
],
)
)
...
@@ -115,6 +95,11 @@ filegroup(
...
@@ -115,6 +95,11 @@ filegroup(
filegroup(
filegroup(
name = "all-srcs",
name = "all-srcs",
srcs = [":package-srcs"],
srcs = [
":package-srcs",
"//pkg/controller/node/ipam:all-srcs",
"//pkg/controller/node/scheduler:all-srcs",
"//pkg/controller/node/util:all-srcs",
],
tags = ["automanaged"],
tags = ["automanaged"],
)
)
pkg/controller/node/ipam/BUILD
0 → 100644
View file @
27854fa0
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_test(
name = "go_default_test",
srcs = ["cidr_allocator_test.go"],
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/controller/testutil:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"cidr_allocator.go",
"cloud_cidr_allocator.go",
"range_allocator.go",
],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/gce:go_default_library",
"//pkg/controller/node/ipam/cidrset:go_default_library",
"//pkg/controller/node/util:go_default_library",
"//pkg/util/node:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//pkg/controller/node/ipam/cidrset:all-srcs",
],
tags = ["automanaged"],
)
pkg/controller/node/ipam/OWNERS
0 → 100755
View file @
27854fa0
approvers:
- bowei
- dnardo
reviewers:
- bowei
- dnardo
- freehan
pkg/controller/node/cidr_allocator.go
→
pkg/controller/node/
ipam/
cidr_allocator.go
View file @
27854fa0
...
@@ -14,18 +14,14 @@ See the License for the specific language governing permissions and
...
@@ -14,18 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
ipam
import
(
import
(
"errors"
"net"
"net"
v1
"k8s.io/api/core/v1"
v1
"k8s.io/api/core/v1"
)
)
var
errCIDRRangeNoCIDRsRemaining
=
errors
.
New
(
"CIDR allocation failed; there are no remaining CIDRs left to allocate in the accepted range"
)
type
nodeAndCIDR
struct
{
type
nodeAndCIDR
struct
{
cidr
*
net
.
IPNet
cidr
*
net
.
IPNet
nodeName
string
nodeName
string
...
...
pkg/controller/node/cidr_allocator_test.go
→
pkg/controller/node/
ipam/
cidr_allocator_test.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
ipam
import
(
import
(
"net"
"net"
...
@@ -143,7 +143,7 @@ func TestAllocateOrOccupyCIDRSuccess(t *testing.T) {
...
@@ -143,7 +143,7 @@ func TestAllocateOrOccupyCIDRSuccess(t *testing.T) {
return
return
}
}
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
if
err
=
rangeAllocator
.
cidrs
.
o
ccupy
(
cidr
);
err
!=
nil
{
if
err
=
rangeAllocator
.
cidrs
.
O
ccupy
(
cidr
);
err
!=
nil
{
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
}
}
}
}
...
@@ -225,7 +225,7 @@ func TestAllocateOrOccupyCIDRFailure(t *testing.T) {
...
@@ -225,7 +225,7 @@ func TestAllocateOrOccupyCIDRFailure(t *testing.T) {
return
return
}
}
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
err
=
rangeAllocator
.
cidrs
.
o
ccupy
(
cidr
)
err
=
rangeAllocator
.
cidrs
.
O
ccupy
(
cidr
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
}
}
...
@@ -337,7 +337,7 @@ func TestReleaseCIDRSuccess(t *testing.T) {
...
@@ -337,7 +337,7 @@ func TestReleaseCIDRSuccess(t *testing.T) {
return
return
}
}
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
err
=
rangeAllocator
.
cidrs
.
o
ccupy
(
cidr
)
err
=
rangeAllocator
.
cidrs
.
O
ccupy
(
cidr
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
}
}
...
...
pkg/controller/node/ipam/cidrset/BUILD
0 → 100644
View file @
27854fa0
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_test(
name = "go_default_test",
srcs = ["cidr_set_test.go"],
library = ":go_default_library",
tags = ["automanaged"],
deps = ["//vendor/github.com/golang/glog:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = ["cidr_set.go"],
tags = ["automanaged"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
pkg/controller/node/cidr_set.go
→
pkg/controller/node/
ipam/cidrset/
cidr_set.go
View file @
27854fa0
...
@@ -14,17 +14,18 @@ See the License for the specific language governing permissions and
...
@@ -14,17 +14,18 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
cidrset
import
(
import
(
"encoding/binary"
"encoding/binary"
"errors"
"fmt"
"fmt"
"math/big"
"math/big"
"net"
"net"
"sync"
"sync"
)
)
type
c
idrSet
struct
{
type
C
idrSet
struct
{
sync
.
Mutex
sync
.
Mutex
clusterCIDR
*
net
.
IPNet
clusterCIDR
*
net
.
IPNet
clusterIP
net
.
IP
clusterIP
net
.
IP
...
@@ -44,7 +45,12 @@ const (
...
@@ -44,7 +45,12 @@ const (
maxPrefixLength
=
64
maxPrefixLength
=
64
)
)
func
newCIDRSet
(
clusterCIDR
*
net
.
IPNet
,
subNetMaskSize
int
)
*
cidrSet
{
var
(
ErrCIDRRangeNoCIDRsRemaining
=
errors
.
New
(
"CIDR allocation failed; there are no remaining CIDRs left to allocate in the accepted range"
)
)
func
NewCIDRSet
(
clusterCIDR
*
net
.
IPNet
,
subNetMaskSize
int
)
*
CidrSet
{
clusterMask
:=
clusterCIDR
.
Mask
clusterMask
:=
clusterCIDR
.
Mask
clusterMaskSize
,
_
:=
clusterMask
.
Size
()
clusterMaskSize
,
_
:=
clusterMask
.
Size
()
...
@@ -54,7 +60,7 @@ func newCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *cidrSet {
...
@@ -54,7 +60,7 @@ func newCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *cidrSet {
}
else
{
}
else
{
maxCIDRs
=
1
<<
uint32
(
subNetMaskSize
-
clusterMaskSize
)
maxCIDRs
=
1
<<
uint32
(
subNetMaskSize
-
clusterMaskSize
)
}
}
return
&
c
idrSet
{
return
&
C
idrSet
{
clusterCIDR
:
clusterCIDR
,
clusterCIDR
:
clusterCIDR
,
clusterIP
:
clusterCIDR
.
IP
,
clusterIP
:
clusterCIDR
.
IP
,
clusterMaskSize
:
clusterMaskSize
,
clusterMaskSize
:
clusterMaskSize
,
...
@@ -63,7 +69,7 @@ func newCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *cidrSet {
...
@@ -63,7 +69,7 @@ func newCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *cidrSet {
}
}
}
}
func
(
s
*
c
idrSet
)
indexToCIDRBlock
(
index
int
)
*
net
.
IPNet
{
func
(
s
*
C
idrSet
)
indexToCIDRBlock
(
index
int
)
*
net
.
IPNet
{
var
ip
[]
byte
var
ip
[]
byte
var
mask
int
var
mask
int
switch
/*v4 or v6*/
{
switch
/*v4 or v6*/
{
...
@@ -91,7 +97,7 @@ func (s *cidrSet) indexToCIDRBlock(index int) *net.IPNet {
...
@@ -91,7 +97,7 @@ func (s *cidrSet) indexToCIDRBlock(index int) *net.IPNet {
}
}
}
}
func
(
s
*
cidrSet
)
a
llocateNext
()
(
*
net
.
IPNet
,
error
)
{
func
(
s
*
CidrSet
)
A
llocateNext
()
(
*
net
.
IPNet
,
error
)
{
s
.
Lock
()
s
.
Lock
()
defer
s
.
Unlock
()
defer
s
.
Unlock
()
...
@@ -104,7 +110,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
...
@@ -104,7 +110,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
}
}
}
}
if
nextUnused
==
-
1
{
if
nextUnused
==
-
1
{
return
nil
,
e
rrCIDRRangeNoCIDRsRemaining
return
nil
,
E
rrCIDRRangeNoCIDRsRemaining
}
}
s
.
nextCandidate
=
(
nextUnused
+
1
)
%
s
.
maxCIDRs
s
.
nextCandidate
=
(
nextUnused
+
1
)
%
s
.
maxCIDRs
...
@@ -113,7 +119,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
...
@@ -113,7 +119,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
return
s
.
indexToCIDRBlock
(
nextUnused
),
nil
return
s
.
indexToCIDRBlock
(
nextUnused
),
nil
}
}
func
(
s
*
c
idrSet
)
getBeginingAndEndIndices
(
cidr
*
net
.
IPNet
)
(
begin
,
end
int
,
err
error
)
{
func
(
s
*
C
idrSet
)
getBeginingAndEndIndices
(
cidr
*
net
.
IPNet
)
(
begin
,
end
int
,
err
error
)
{
begin
,
end
=
0
,
s
.
maxCIDRs
-
1
begin
,
end
=
0
,
s
.
maxCIDRs
-
1
cidrMask
:=
cidr
.
Mask
cidrMask
:=
cidr
.
Mask
maskSize
,
_
:=
cidrMask
.
Size
()
maskSize
,
_
:=
cidrMask
.
Size
()
...
@@ -160,7 +166,7 @@ func (s *cidrSet) getBeginingAndEndIndices(cidr *net.IPNet) (begin, end int, err
...
@@ -160,7 +166,7 @@ func (s *cidrSet) getBeginingAndEndIndices(cidr *net.IPNet) (begin, end int, err
return
begin
,
end
,
nil
return
begin
,
end
,
nil
}
}
func
(
s
*
cidrSet
)
r
elease
(
cidr
*
net
.
IPNet
)
error
{
func
(
s
*
CidrSet
)
R
elease
(
cidr
*
net
.
IPNet
)
error
{
begin
,
end
,
err
:=
s
.
getBeginingAndEndIndices
(
cidr
)
begin
,
end
,
err
:=
s
.
getBeginingAndEndIndices
(
cidr
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -173,7 +179,7 @@ func (s *cidrSet) release(cidr *net.IPNet) error {
...
@@ -173,7 +179,7 @@ func (s *cidrSet) release(cidr *net.IPNet) error {
return
nil
return
nil
}
}
func
(
s
*
cidrSet
)
o
ccupy
(
cidr
*
net
.
IPNet
)
(
err
error
)
{
func
(
s
*
CidrSet
)
O
ccupy
(
cidr
*
net
.
IPNet
)
(
err
error
)
{
begin
,
end
,
err
:=
s
.
getBeginingAndEndIndices
(
cidr
)
begin
,
end
,
err
:=
s
.
getBeginingAndEndIndices
(
cidr
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -188,7 +194,7 @@ func (s *cidrSet) occupy(cidr *net.IPNet) (err error) {
...
@@ -188,7 +194,7 @@ func (s *cidrSet) occupy(cidr *net.IPNet) (err error) {
return
nil
return
nil
}
}
func
(
s
*
c
idrSet
)
getIndexForCIDR
(
cidr
*
net
.
IPNet
)
(
int
,
error
)
{
func
(
s
*
C
idrSet
)
getIndexForCIDR
(
cidr
*
net
.
IPNet
)
(
int
,
error
)
{
var
cidrIndex
uint32
var
cidrIndex
uint32
if
cidr
.
IP
.
To4
()
!=
nil
{
if
cidr
.
IP
.
To4
()
!=
nil
{
cidrIndex
=
(
binary
.
BigEndian
.
Uint32
(
s
.
clusterIP
)
^
binary
.
BigEndian
.
Uint32
(
cidr
.
IP
.
To4
()))
>>
uint32
(
32
-
s
.
subNetMaskSize
)
cidrIndex
=
(
binary
.
BigEndian
.
Uint32
(
s
.
clusterIP
)
^
binary
.
BigEndian
.
Uint32
(
cidr
.
IP
.
To4
()))
>>
uint32
(
32
-
s
.
subNetMaskSize
)
...
...
pkg/controller/node/cidr_set_test.go
→
pkg/controller/node/
ipam/cidrset/
cidr_set_test.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
cidrset
import
(
import
(
"math/big"
"math/big"
...
@@ -47,9 +47,9 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
...
@@ -47,9 +47,9 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
}
}
for
_
,
tc
:=
range
cases
{
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
p
,
err
:=
a
.
a
llocateNext
()
p
,
err
:=
a
.
A
llocateNext
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
}
...
@@ -58,14 +58,14 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
...
@@ -58,14 +58,14 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
a
.
r
elease
(
p
)
a
.
R
elease
(
p
)
p
,
err
=
a
.
a
llocateNext
()
p
,
err
=
a
.
A
llocateNext
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
}
...
@@ -73,7 +73,7 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
...
@@ -73,7 +73,7 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
t
.
Fatalf
(
"unexpected allocated cidr: %v, expecting %v for %v"
,
t
.
Fatalf
(
"unexpected allocated cidr: %v, expecting %v for %v"
,
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
...
@@ -133,7 +133,7 @@ func TestIndexToCIDRBlock(t *testing.T) {
...
@@ -133,7 +133,7 @@ func TestIndexToCIDRBlock(t *testing.T) {
}
}
for
_
,
tc
:=
range
cases
{
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subnetMaskSize
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subnetMaskSize
)
cidr
:=
a
.
indexToCIDRBlock
(
tc
.
index
)
cidr
:=
a
.
indexToCIDRBlock
(
tc
.
index
)
if
cidr
.
String
()
!=
tc
.
CIDRBlock
{
if
cidr
.
String
()
!=
tc
.
CIDRBlock
{
t
.
Fatalf
(
"error for %v index %d %s"
,
tc
.
description
,
tc
.
index
,
cidr
.
String
())
t
.
Fatalf
(
"error for %v index %d %s"
,
tc
.
description
,
tc
.
index
,
cidr
.
String
())
...
@@ -157,12 +157,12 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
...
@@ -157,12 +157,12 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
}
for
_
,
tc
:=
range
cases
{
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
24
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
24
)
// allocate all the CIDRs
// allocate all the CIDRs
var
cidrs
[]
*
net
.
IPNet
var
cidrs
[]
*
net
.
IPNet
for
i
:=
0
;
i
<
256
;
i
++
{
for
i
:=
0
;
i
<
256
;
i
++
{
if
c
,
err
:=
a
.
a
llocateNext
();
err
==
nil
{
if
c
,
err
:=
a
.
A
llocateNext
();
err
==
nil
{
cidrs
=
append
(
cidrs
,
c
)
cidrs
=
append
(
cidrs
,
c
)
}
else
{
}
else
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
...
@@ -170,25 +170,25 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
...
@@ -170,25 +170,25 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
}
var
err
error
var
err
error
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
// release them all
// release them all
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
a
.
r
elease
(
cidrs
[
i
])
a
.
R
elease
(
cidrs
[
i
])
}
}
// allocate the CIDRs again
// allocate the CIDRs again
var
rcidrs
[]
*
net
.
IPNet
var
rcidrs
[]
*
net
.
IPNet
for
i
:=
0
;
i
<
256
;
i
++
{
for
i
:=
0
;
i
<
256
;
i
++
{
if
c
,
err
:=
a
.
a
llocateNext
();
err
==
nil
{
if
c
,
err
:=
a
.
A
llocateNext
();
err
==
nil
{
rcidrs
=
append
(
rcidrs
,
c
)
rcidrs
=
append
(
rcidrs
,
c
)
}
else
{
}
else
{
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
}
}
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
...
@@ -215,14 +215,14 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
...
@@ -215,14 +215,14 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
}
for
_
,
tc
:=
range
cases
{
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
24
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
24
)
// allocate all the CIDRs
// allocate all the CIDRs
var
cidrs
[]
*
net
.
IPNet
var
cidrs
[]
*
net
.
IPNet
var
num_cidrs
=
256
var
num_cidrs
=
256
for
i
:=
0
;
i
<
num_cidrs
;
i
++
{
for
i
:=
0
;
i
<
num_cidrs
;
i
++
{
if
c
,
err
:=
a
.
a
llocateNext
();
err
==
nil
{
if
c
,
err
:=
a
.
A
llocateNext
();
err
==
nil
{
cidrs
=
append
(
cidrs
,
c
)
cidrs
=
append
(
cidrs
,
c
)
}
else
{
}
else
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
...
@@ -230,29 +230,29 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
...
@@ -230,29 +230,29 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
}
var
err
error
var
err
error
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
// release them all
// release them all
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
a
.
r
elease
(
cidrs
[
i
])
a
.
R
elease
(
cidrs
[
i
])
}
}
// occupy the last 128 CIDRs
// occupy the last 128 CIDRs
for
i
:=
num_cidrs
/
2
;
i
<
num_cidrs
;
i
++
{
for
i
:=
num_cidrs
/
2
;
i
<
num_cidrs
;
i
++
{
a
.
o
ccupy
(
cidrs
[
i
])
a
.
O
ccupy
(
cidrs
[
i
])
}
}
// allocate the first 128 CIDRs again
// allocate the first 128 CIDRs again
var
rcidrs
[]
*
net
.
IPNet
var
rcidrs
[]
*
net
.
IPNet
for
i
:=
0
;
i
<
num_cidrs
/
2
;
i
++
{
for
i
:=
0
;
i
<
num_cidrs
/
2
;
i
++
{
if
c
,
err
:=
a
.
a
llocateNext
();
err
==
nil
{
if
c
,
err
:=
a
.
A
llocateNext
();
err
==
nil
{
rcidrs
=
append
(
rcidrs
,
c
)
rcidrs
=
append
(
rcidrs
,
c
)
}
else
{
}
else
{
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
}
}
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
}
...
@@ -394,7 +394,7 @@ func TestGetBitforCIDR(t *testing.T) {
...
@@ -394,7 +394,7 @@ func TestGetBitforCIDR(t *testing.T) {
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
}
cs
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
cs
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
_
,
subnetCIDR
,
err
:=
net
.
ParseCIDR
(
tc
.
subNetCIDRStr
)
_
,
subnetCIDR
,
err
:=
net
.
ParseCIDR
(
tc
.
subNetCIDRStr
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -562,14 +562,14 @@ func TestOccupy(t *testing.T) {
...
@@ -562,14 +562,14 @@ func TestOccupy(t *testing.T) {
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
}
cs
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
cs
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
_
,
subnetCIDR
,
err
:=
net
.
ParseCIDR
(
tc
.
subNetCIDRStr
)
_
,
subnetCIDR
,
err
:=
net
.
ParseCIDR
(
tc
.
subNetCIDRStr
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
}
err
=
cs
.
o
ccupy
(
subnetCIDR
)
err
=
cs
.
O
ccupy
(
subnetCIDR
)
if
err
==
nil
&&
tc
.
expectErr
{
if
err
==
nil
&&
tc
.
expectErr
{
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
continue
continue
...
@@ -629,9 +629,9 @@ func TestCIDRSetv6(t *testing.T) {
...
@@ -629,9 +629,9 @@ func TestCIDRSetv6(t *testing.T) {
}
}
for
_
,
tc
:=
range
cases
{
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subNetMaskSize
)
p
,
err
:=
a
.
a
llocateNext
()
p
,
err
:=
a
.
A
llocateNext
()
if
err
==
nil
&&
tc
.
expectErr
{
if
err
==
nil
&&
tc
.
expectErr
{
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
continue
continue
...
@@ -645,7 +645,7 @@ func TestCIDRSetv6(t *testing.T) {
...
@@ -645,7 +645,7 @@ func TestCIDRSetv6(t *testing.T) {
t
.
Fatalf
(
"unexpected allocated cidr: %s for %v"
,
p
.
String
(),
tc
.
description
)
t
.
Fatalf
(
"unexpected allocated cidr: %s for %v"
,
p
.
String
(),
tc
.
description
)
}
}
}
}
p2
,
err
:=
a
.
a
llocateNext
()
p2
,
err
:=
a
.
A
llocateNext
()
if
!
tc
.
expectErr
{
if
!
tc
.
expectErr
{
if
p2
.
String
()
!=
tc
.
expectedCIDR2
{
if
p2
.
String
()
!=
tc
.
expectedCIDR2
{
t
.
Fatalf
(
"unexpected allocated cidr: %s for %v"
,
p2
.
String
(),
tc
.
description
)
t
.
Fatalf
(
"unexpected allocated cidr: %s for %v"
,
p2
.
String
(),
tc
.
description
)
...
...
pkg/controller/node/cloud_cidr_allocator.go
→
pkg/controller/node/
ipam/
cloud_cidr_allocator.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
ipam
import
(
import
(
"fmt"
"fmt"
...
@@ -32,6 +32,7 @@ import (
...
@@ -32,6 +32,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/controller/node/util"
nodeutil
"k8s.io/kubernetes/pkg/util/node"
nodeutil
"k8s.io/kubernetes/pkg/util/node"
)
)
...
@@ -79,12 +80,12 @@ func (ca *cloudCIDRAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
...
@@ -79,12 +80,12 @@ func (ca *cloudCIDRAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
cidrs
,
err
:=
ca
.
cloud
.
AliasRanges
(
types
.
NodeName
(
node
.
Name
))
cidrs
,
err
:=
ca
.
cloud
.
AliasRanges
(
types
.
NodeName
(
node
.
Name
))
if
err
!=
nil
{
if
err
!=
nil
{
r
ecordNodeStatusChange
(
ca
.
recorder
,
node
,
"CIDRNotAvailable"
)
util
.
R
ecordNodeStatusChange
(
ca
.
recorder
,
node
,
"CIDRNotAvailable"
)
return
fmt
.
Errorf
(
"failed to allocate cidr: %v"
,
err
)
return
fmt
.
Errorf
(
"failed to allocate cidr: %v"
,
err
)
}
}
if
len
(
cidrs
)
==
0
{
if
len
(
cidrs
)
==
0
{
r
ecordNodeStatusChange
(
ca
.
recorder
,
node
,
"CIDRNotAvailable"
)
util
.
R
ecordNodeStatusChange
(
ca
.
recorder
,
node
,
"CIDRNotAvailable"
)
glog
.
V
(
2
)
.
Infof
(
"Node %v has no CIDRs"
,
node
.
Name
)
glog
.
V
(
2
)
.
Infof
(
"Node %v has no CIDRs"
,
node
.
Name
)
return
fmt
.
Errorf
(
"failed to allocate cidr (none exist)"
)
return
fmt
.
Errorf
(
"failed to allocate cidr (none exist)"
)
}
}
...
...
pkg/controller/node/range_allocator.go
→
pkg/controller/node/
ipam/
range_allocator.go
View file @
27854fa0
...
@@ -14,13 +14,15 @@ See the License for the specific language governing permissions and
...
@@ -14,13 +14,15 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
ipam
import
(
import
(
"fmt"
"fmt"
"net"
"net"
"sync"
"sync"
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
...
@@ -31,7 +33,8 @@ import (
...
@@ -31,7 +33,8 @@ import (
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/controller/node/ipam/cidrset"
"k8s.io/kubernetes/pkg/controller/node/util"
)
)
// TODO: figure out the good setting for those constants.
// TODO: figure out the good setting for those constants.
...
@@ -45,7 +48,7 @@ const (
...
@@ -45,7 +48,7 @@ const (
type
rangeAllocator
struct
{
type
rangeAllocator
struct
{
client
clientset
.
Interface
client
clientset
.
Interface
cidrs
*
cidrSet
cidrs
*
cidr
set
.
Cidr
Set
clusterCIDR
*
net
.
IPNet
clusterCIDR
*
net
.
IPNet
maxCIDRs
int
maxCIDRs
int
// Channel that is used to pass updating Nodes with assigned CIDRs to the background
// Channel that is used to pass updating Nodes with assigned CIDRs to the background
...
@@ -74,7 +77,7 @@ func NewCIDRRangeAllocator(client clientset.Interface, clusterCIDR *net.IPNet, s
...
@@ -74,7 +77,7 @@ func NewCIDRRangeAllocator(client clientset.Interface, clusterCIDR *net.IPNet, s
ra
:=
&
rangeAllocator
{
ra
:=
&
rangeAllocator
{
client
:
client
,
client
:
client
,
cidrs
:
n
ewCIDRSet
(
clusterCIDR
,
subNetMaskSize
),
cidrs
:
cidrset
.
N
ewCIDRSet
(
clusterCIDR
,
subNetMaskSize
),
clusterCIDR
:
clusterCIDR
,
clusterCIDR
:
clusterCIDR
,
nodeCIDRUpdateChannel
:
make
(
chan
nodeAndCIDR
,
cidrUpdateQueueSize
),
nodeCIDRUpdateChannel
:
make
(
chan
nodeAndCIDR
,
cidrUpdateQueueSize
),
recorder
:
recorder
,
recorder
:
recorder
,
...
@@ -150,7 +153,7 @@ func (r *rangeAllocator) occupyCIDR(node *v1.Node) error {
...
@@ -150,7 +153,7 @@ func (r *rangeAllocator) occupyCIDR(node *v1.Node) error {
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to parse node %s, CIDR %s"
,
node
.
Name
,
node
.
Spec
.
PodCIDR
)
return
fmt
.
Errorf
(
"failed to parse node %s, CIDR %s"
,
node
.
Name
,
node
.
Spec
.
PodCIDR
)
}
}
if
err
:=
r
.
cidrs
.
o
ccupy
(
podCIDR
);
err
!=
nil
{
if
err
:=
r
.
cidrs
.
O
ccupy
(
podCIDR
);
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to mark cidr as occupied: %v"
,
err
)
return
fmt
.
Errorf
(
"failed to mark cidr as occupied: %v"
,
err
)
}
}
return
nil
return
nil
...
@@ -169,10 +172,10 @@ func (r *rangeAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
...
@@ -169,10 +172,10 @@ func (r *rangeAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
if
node
.
Spec
.
PodCIDR
!=
""
{
if
node
.
Spec
.
PodCIDR
!=
""
{
return
r
.
occupyCIDR
(
node
)
return
r
.
occupyCIDR
(
node
)
}
}
podCIDR
,
err
:=
r
.
cidrs
.
a
llocateNext
()
podCIDR
,
err
:=
r
.
cidrs
.
A
llocateNext
()
if
err
!=
nil
{
if
err
!=
nil
{
r
.
removeNodeFromProcessing
(
node
.
Name
)
r
.
removeNodeFromProcessing
(
node
.
Name
)
r
ecordNodeStatusChange
(
r
.
recorder
,
node
,
"CIDRNotAvailable"
)
util
.
R
ecordNodeStatusChange
(
r
.
recorder
,
node
,
"CIDRNotAvailable"
)
return
fmt
.
Errorf
(
"failed to allocate cidr: %v"
,
err
)
return
fmt
.
Errorf
(
"failed to allocate cidr: %v"
,
err
)
}
}
...
@@ -194,7 +197,7 @@ func (r *rangeAllocator) ReleaseCIDR(node *v1.Node) error {
...
@@ -194,7 +197,7 @@ func (r *rangeAllocator) ReleaseCIDR(node *v1.Node) error {
}
}
glog
.
V
(
4
)
.
Infof
(
"release CIDR %s"
,
node
.
Spec
.
PodCIDR
)
glog
.
V
(
4
)
.
Infof
(
"release CIDR %s"
,
node
.
Spec
.
PodCIDR
)
if
err
=
r
.
cidrs
.
r
elease
(
podCIDR
);
err
!=
nil
{
if
err
=
r
.
cidrs
.
R
elease
(
podCIDR
);
err
!=
nil
{
return
fmt
.
Errorf
(
"Error when releasing CIDR %v: %v"
,
node
.
Spec
.
PodCIDR
,
err
)
return
fmt
.
Errorf
(
"Error when releasing CIDR %v: %v"
,
node
.
Spec
.
PodCIDR
,
err
)
}
}
return
err
return
err
...
@@ -212,7 +215,7 @@ func (r *rangeAllocator) filterOutServiceRange(serviceCIDR *net.IPNet) {
...
@@ -212,7 +215,7 @@ func (r *rangeAllocator) filterOutServiceRange(serviceCIDR *net.IPNet) {
return
return
}
}
if
err
:=
r
.
cidrs
.
o
ccupy
(
serviceCIDR
);
err
!=
nil
{
if
err
:=
r
.
cidrs
.
O
ccupy
(
serviceCIDR
);
err
!=
nil
{
glog
.
Errorf
(
"Error filtering out service cidr %v: %v"
,
serviceCIDR
,
err
)
glog
.
Errorf
(
"Error filtering out service cidr %v: %v"
,
serviceCIDR
,
err
)
}
}
}
}
...
@@ -232,7 +235,7 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
...
@@ -232,7 +235,7 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
if
node
.
Spec
.
PodCIDR
!=
""
{
if
node
.
Spec
.
PodCIDR
!=
""
{
glog
.
Errorf
(
"Node %v already has allocated CIDR %v. Releasing assigned one if different."
,
node
.
Name
,
node
.
Spec
.
PodCIDR
)
glog
.
Errorf
(
"Node %v already has allocated CIDR %v. Releasing assigned one if different."
,
node
.
Name
,
node
.
Spec
.
PodCIDR
)
if
node
.
Spec
.
PodCIDR
!=
data
.
cidr
.
String
()
{
if
node
.
Spec
.
PodCIDR
!=
data
.
cidr
.
String
()
{
if
err
:=
r
.
cidrs
.
r
elease
(
data
.
cidr
);
err
!=
nil
{
if
err
:=
r
.
cidrs
.
R
elease
(
data
.
cidr
);
err
!=
nil
{
glog
.
Errorf
(
"Error when releasing CIDR %v"
,
data
.
cidr
.
String
())
glog
.
Errorf
(
"Error when releasing CIDR %v"
,
data
.
cidr
.
String
())
}
}
}
}
...
@@ -246,13 +249,13 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
...
@@ -246,13 +249,13 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
}
}
}
}
if
err
!=
nil
{
if
err
!=
nil
{
r
ecordNodeStatusChange
(
r
.
recorder
,
node
,
"CIDRAssignmentFailed"
)
util
.
R
ecordNodeStatusChange
(
r
.
recorder
,
node
,
"CIDRAssignmentFailed"
)
// We accept the fact that we may leek CIDRs here. This is safer than releasing
// We accept the fact that we may leek CIDRs here. This is safer than releasing
// them in case when we don't know if request went through.
// them in case when we don't know if request went through.
// NodeController restart will return all falsely allocated CIDRs to the pool.
// NodeController restart will return all falsely allocated CIDRs to the pool.
if
!
apierrors
.
IsServerTimeout
(
err
)
{
if
!
apierrors
.
IsServerTimeout
(
err
)
{
glog
.
Errorf
(
"CIDR assignment for node %v failed: %v. Releasing allocated CIDR"
,
data
.
nodeName
,
err
)
glog
.
Errorf
(
"CIDR assignment for node %v failed: %v. Releasing allocated CIDR"
,
data
.
nodeName
,
err
)
if
releaseErr
:=
r
.
cidrs
.
r
elease
(
data
.
cidr
);
releaseErr
!=
nil
{
if
releaseErr
:=
r
.
cidrs
.
R
elease
(
data
.
cidr
);
releaseErr
!=
nil
{
glog
.
Errorf
(
"Error releasing allocated CIDR for node %v: %v"
,
data
.
nodeName
,
releaseErr
)
glog
.
Errorf
(
"Error releasing allocated CIDR for node %v: %v"
,
data
.
nodeName
,
releaseErr
)
}
}
}
}
...
...
pkg/controller/node/node_controller.go
View file @
27854fa0
This diff is collapsed.
Click to expand it.
pkg/controller/node/nodecontroller_test.go
View file @
27854fa0
...
@@ -39,6 +39,9 @@ import (
...
@@ -39,6 +39,9 @@ import (
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider"
fakecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
fakecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/node/ipam"
"k8s.io/kubernetes/pkg/controller/node/scheduler"
"k8s.io/kubernetes/pkg/controller/node/util"
"k8s.io/kubernetes/pkg/controller/testutil"
"k8s.io/kubernetes/pkg/controller/testutil"
kubeletapis
"k8s.io/kubernetes/pkg/kubelet/apis"
kubeletapis
"k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/pkg/util/node"
"k8s.io/kubernetes/pkg/util/node"
...
@@ -103,7 +106,7 @@ func NewNodeControllerFromClient(
...
@@ -103,7 +106,7 @@ func NewNodeControllerFromClient(
serviceCIDR
,
serviceCIDR
,
nodeCIDRMaskSize
,
nodeCIDRMaskSize
,
allocateNodeCIDRs
,
allocateNodeCIDRs
,
RangeAllocatorType
,
ipam
.
RangeAllocatorType
,
useTaints
,
useTaints
,
useTaints
,
useTaints
,
)
)
...
@@ -637,9 +640,9 @@ func TestMonitorNodeStatusEvictPods(t *testing.T) {
...
@@ -637,9 +640,9 @@ func TestMonitorNodeStatusEvictPods(t *testing.T) {
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
for
_
,
zone
:=
range
zones
{
for
_
,
zone
:=
range
zones
{
if
_
,
ok
:=
nodeController
.
zonePodEvictor
[
zone
];
ok
{
if
_
,
ok
:=
nodeController
.
zonePodEvictor
[
zone
];
ok
{
nodeController
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
TimedValue
)
(
bool
,
time
.
Duration
)
{
nodeController
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
scheduler
.
TimedValue
)
(
bool
,
time
.
Duration
)
{
nodeUid
,
_
:=
value
.
UID
.
(
string
)
nodeUid
,
_
:=
value
.
UID
.
(
string
)
d
eletePods
(
item
.
fakeNodeHandler
,
nodeController
.
recorder
,
value
.
Value
,
nodeUid
,
nodeController
.
daemonSetInformer
.
Lister
())
util
.
D
eletePods
(
item
.
fakeNodeHandler
,
nodeController
.
recorder
,
value
.
Value
,
nodeUid
,
nodeController
.
daemonSetInformer
.
Lister
())
return
true
,
0
return
true
,
0
})
})
}
else
{
}
else
{
...
@@ -782,9 +785,9 @@ func TestPodStatusChange(t *testing.T) {
...
@@ -782,9 +785,9 @@ func TestPodStatusChange(t *testing.T) {
}
}
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
for
_
,
zone
:=
range
zones
{
for
_
,
zone
:=
range
zones
{
nodeController
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
TimedValue
)
(
bool
,
time
.
Duration
)
{
nodeController
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
scheduler
.
TimedValue
)
(
bool
,
time
.
Duration
)
{
nodeUid
,
_
:=
value
.
UID
.
(
string
)
nodeUid
,
_
:=
value
.
UID
.
(
string
)
d
eletePods
(
item
.
fakeNodeHandler
,
nodeController
.
recorder
,
value
.
Value
,
nodeUid
,
nodeController
.
daemonSetStore
)
util
.
D
eletePods
(
item
.
fakeNodeHandler
,
nodeController
.
recorder
,
value
.
Value
,
nodeUid
,
nodeController
.
daemonSetStore
)
return
true
,
0
return
true
,
0
})
})
}
}
...
@@ -1337,9 +1340,9 @@ func (nc *nodeController) doEviction(fakeNodeHandler *testutil.FakeNodeHandler)
...
@@ -1337,9 +1340,9 @@ func (nc *nodeController) doEviction(fakeNodeHandler *testutil.FakeNodeHandler)
var
podEvicted
bool
var
podEvicted
bool
zones
:=
testutil
.
GetZones
(
fakeNodeHandler
)
zones
:=
testutil
.
GetZones
(
fakeNodeHandler
)
for
_
,
zone
:=
range
zones
{
for
_
,
zone
:=
range
zones
{
nc
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
TimedValue
)
(
bool
,
time
.
Duration
)
{
nc
.
zonePodEvictor
[
zone
]
.
Try
(
func
(
value
scheduler
.
TimedValue
)
(
bool
,
time
.
Duration
)
{
uid
,
_
:=
value
.
UID
.
(
string
)
uid
,
_
:=
value
.
UID
.
(
string
)
d
eletePods
(
fakeNodeHandler
,
nc
.
recorder
,
value
.
Value
,
uid
,
nc
.
daemonSetStore
)
util
.
D
eletePods
(
fakeNodeHandler
,
nc
.
recorder
,
value
.
Value
,
uid
,
nc
.
daemonSetStore
)
return
true
,
0
return
true
,
0
})
})
}
}
...
@@ -2310,7 +2313,7 @@ func TestCheckNodeKubeletVersionParsing(t *testing.T) {
...
@@ -2310,7 +2313,7 @@ func TestCheckNodeKubeletVersionParsing(t *testing.T) {
},
},
},
},
}
}
isOutdated
:=
n
odeRunningOutdatedKubelet
(
n
)
isOutdated
:=
util
.
N
odeRunningOutdatedKubelet
(
n
)
if
ov
.
outdated
!=
isOutdated
{
if
ov
.
outdated
!=
isOutdated
{
t
.
Errorf
(
"Version %v doesn't match test expectation. Expected outdated %v got %v"
,
n
.
Status
.
NodeInfo
.
KubeletVersion
,
ov
.
outdated
,
isOutdated
)
t
.
Errorf
(
"Version %v doesn't match test expectation. Expected outdated %v got %v"
,
n
.
Status
.
NodeInfo
.
KubeletVersion
,
ov
.
outdated
,
isOutdated
)
}
else
{
}
else
{
...
...
pkg/controller/node/scheduler/BUILD
0 → 100644
View file @
27854fa0
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_test(
name = "go_default_test",
srcs = [
"rate_limited_queue_test.go",
"taint_controller_test.go",
"timed_workers_test.go",
],
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/controller/testutil:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"rate_limited_queue.go",
"taint_controller.go",
"timed_workers.go",
],
tags = ["automanaged"],
deps = [
"//pkg/api/helper:go_default_library",
"//pkg/api/v1/helper:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
pkg/controller/node/rate_limited_queue.go
→
pkg/controller/node/
scheduler/
rate_limited_queue.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"container/heap"
"container/heap"
...
@@ -27,6 +27,15 @@ import (
...
@@ -27,6 +27,15 @@ import (
"github.com/golang/glog"
"github.com/golang/glog"
)
)
const
(
// nodeStatusUpdateRetry controls the number of retries of writing NodeStatus update.
NodeStatusUpdateRetry
=
5
// controls how often NodeController will try to evict Pods from non-responsive Nodes.
NodeEvictionPeriod
=
100
*
time
.
Millisecond
// Burst value for all eviction rate limiters
EvictionRateLimiterBurst
=
1
)
// TimedValue is a value that should be processed at a designated time.
// TimedValue is a value that should be processed at a designated time.
type
TimedValue
struct
{
type
TimedValue
struct
{
Value
string
Value
string
...
@@ -260,7 +269,7 @@ func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32) {
...
@@ -260,7 +269,7 @@ func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32) {
if
newQPS
<=
0
{
if
newQPS
<=
0
{
newLimiter
=
flowcontrol
.
NewFakeNeverRateLimiter
()
newLimiter
=
flowcontrol
.
NewFakeNeverRateLimiter
()
}
else
{
}
else
{
newLimiter
=
flowcontrol
.
NewTokenBucketRateLimiter
(
newQPS
,
e
victionRateLimiterBurst
)
newLimiter
=
flowcontrol
.
NewTokenBucketRateLimiter
(
newQPS
,
E
victionRateLimiterBurst
)
}
}
// If we're currently waiting on limiter, we drain the new one - this is a good approach when Burst value is 1
// If we're currently waiting on limiter, we drain the new one - this is a good approach when Burst value is 1
// TODO: figure out if we need to support higher Burst values and decide on the drain logic, should we keep:
// TODO: figure out if we need to support higher Burst values and decide on the drain logic, should we keep:
...
...
pkg/controller/node/rate_limited_queue_test.go
→
pkg/controller/node/
scheduler/
rate_limited_queue_test.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"reflect"
"reflect"
...
...
pkg/controller/node/taint_controller.go
→
pkg/controller/node/
scheduler/
taint_controller.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"fmt"
"fmt"
...
@@ -122,7 +122,7 @@ func getPodsAssignedToNode(c clientset.Interface, nodeName string) ([]v1.Pod, er
...
@@ -122,7 +122,7 @@ func getPodsAssignedToNode(c clientset.Interface, nodeName string) ([]v1.Pod, er
time
.
Sleep
(
100
*
time
.
Millisecond
)
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
}
if
err
!=
nil
{
if
err
!=
nil
{
return
[]
v1
.
Pod
{},
fmt
.
Errorf
(
"
Failed to get Pods assigned to node %v. Skipping update.
"
,
nodeName
)
return
[]
v1
.
Pod
{},
fmt
.
Errorf
(
"
failed to get Pods assigned to node %v
"
,
nodeName
)
}
}
return
pods
.
Items
,
nil
return
pods
.
Items
,
nil
}
}
...
...
pkg/controller/node/taint_controller_test.go
→
pkg/controller/node/
scheduler/
taint_controller_test.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"fmt"
"fmt"
...
...
pkg/controller/node/timed_workers.go
→
pkg/controller/node/
scheduler/
timed_workers.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"sync"
"sync"
...
...
pkg/controller/node/timed_workers_test.go
→
pkg/controller/node/
scheduler/
timed_workers_test.go
View file @
27854fa0
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
*/
*/
package
node
package
scheduler
import
(
import
(
"sync"
"sync"
...
...
pkg/controller/node/util/BUILD
0 → 100644
View file @
27854fa0
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = ["controller_utils.go"],
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/cloudprovider:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/kubelet/util/format:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/version:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
pkg/controller/node/controller_utils.go
→
pkg/controller/node/
util/
controller_utils.go
View file @
27854fa0
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment