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(
"//pkg/controller/job:go_default_library",
"//pkg/controller/namespace: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/metrics:go_default_library",
"//pkg/controller/podgc:go_default_library",
...
...
cmd/kube-controller-manager/app/core.go
View file @
27854fa0
...
...
@@ -42,6 +42,7 @@ import (
"k8s.io/kubernetes/pkg/controller/garbagecollector"
namespacecontroller
"k8s.io/kubernetes/pkg/controller/namespace"
nodecontroller
"k8s.io/kubernetes/pkg/controller/node"
"k8s.io/kubernetes/pkg/controller/node/ipam"
"k8s.io/kubernetes/pkg/controller/podgc"
replicationcontroller
"k8s.io/kubernetes/pkg/controller/replication"
resourcequotacontroller
"k8s.io/kubernetes/pkg/controller/resourcequota"
...
...
@@ -108,7 +109,7 @@ func startNodeController(ctx ControllerContext) (bool, error) {
serviceCIDR
,
int
(
ctx
.
Options
.
NodeCIDRMaskSize
),
ctx
.
Options
.
AllocateNodeCIDRs
,
nodecontroller
.
CIDRAllocatorType
(
ctx
.
Options
.
CIDRAllocatorType
),
ipam
.
CIDRAllocatorType
(
ctx
.
Options
.
CIDRAllocatorType
),
ctx
.
Options
.
EnableTaintManager
,
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
TaintBasedEvictions
),
)
...
...
pkg/controller/node/BUILD
View file @
27854fa0
...
...
@@ -10,25 +10,20 @@ load(
go_test(
name = "go_default_test",
srcs = [
"cidr_allocator_test.go",
"cidr_set_test.go",
"nodecontroller_test.go",
"rate_limited_queue_test.go",
"taint_controller_test.go",
"timed_workers_test.go",
],
srcs = ["nodecontroller_test.go"],
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/fake: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/kubelet/apis:go_default_library",
"//pkg/util/node: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/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
...
...
@@ -36,7 +31,6 @@ go_test(
"//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/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/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
...
...
@@ -44,35 +38,24 @@ go_test(
"//vendor/k8s.io/client-go/kubernetes: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 = [
"cidr_allocator.go",
"cidr_set.go",
"cloud_cidr_allocator.go",
"controller_utils.go",
"doc.go",
"metrics.go",
"node_controller.go",
"range_allocator.go",
"rate_limited_queue.go",
"taint_controller.go",
"timed_workers.go",
],
tags = ["automanaged"],
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/cloudprovider:go_default_library",
"//pkg/cloudprovider/providers/gce: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/node:go_default_library",
"//pkg/util/system:go_default_library",
...
...
@@ -88,9 +71,7 @@ go_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/errors: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/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library",
...
...
@@ -102,7 +83,6 @@ go_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/util/flowcontrol:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
],
)
...
...
@@ -115,6 +95,11 @@ filegroup(
filegroup(
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"],
)
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
limitations under the License.
*/
package
node
package
ipam
import
(
"errors"
"net"
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
{
cidr
*
net
.
IPNet
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
limitations under the License.
*/
package
node
package
ipam
import
(
"net"
...
...
@@ -143,7 +143,7 @@ func TestAllocateOrOccupyCIDRSuccess(t *testing.T) {
return
}
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
)
}
}
...
...
@@ -225,7 +225,7 @@ func TestAllocateOrOccupyCIDRFailure(t *testing.T) {
return
}
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
err
=
rangeAllocator
.
cidrs
.
o
ccupy
(
cidr
)
err
=
rangeAllocator
.
cidrs
.
O
ccupy
(
cidr
)
if
err
!=
nil
{
t
.
Fatalf
(
"%v: unexpected error when occupying CIDR %v: %v"
,
tc
.
description
,
allocated
,
err
)
}
...
...
@@ -337,7 +337,7 @@ func TestReleaseCIDRSuccess(t *testing.T) {
return
}
rangeAllocator
.
recorder
=
testutil
.
NewFakeRecorder
()
err
=
rangeAllocator
.
cidrs
.
o
ccupy
(
cidr
)
err
=
rangeAllocator
.
cidrs
.
O
ccupy
(
cidr
)
if
err
!=
nil
{
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
limitations under the License.
*/
package
node
package
cidrset
import
(
"encoding/binary"
"errors"
"fmt"
"math/big"
"net"
"sync"
)
type
c
idrSet
struct
{
type
C
idrSet
struct
{
sync
.
Mutex
clusterCIDR
*
net
.
IPNet
clusterIP
net
.
IP
...
...
@@ -44,7 +45,12 @@ const (
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
clusterMaskSize
,
_
:=
clusterMask
.
Size
()
...
...
@@ -54,7 +60,7 @@ func newCIDRSet(clusterCIDR *net.IPNet, subNetMaskSize int) *cidrSet {
}
else
{
maxCIDRs
=
1
<<
uint32
(
subNetMaskSize
-
clusterMaskSize
)
}
return
&
c
idrSet
{
return
&
C
idrSet
{
clusterCIDR
:
clusterCIDR
,
clusterIP
:
clusterCIDR
.
IP
,
clusterMaskSize
:
clusterMaskSize
,
...
...
@@ -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
mask
int
switch
/*v4 or v6*/
{
...
...
@@ -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
()
defer
s
.
Unlock
()
...
...
@@ -104,7 +110,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
}
}
if
nextUnused
==
-
1
{
return
nil
,
e
rrCIDRRangeNoCIDRsRemaining
return
nil
,
E
rrCIDRRangeNoCIDRsRemaining
}
s
.
nextCandidate
=
(
nextUnused
+
1
)
%
s
.
maxCIDRs
...
...
@@ -113,7 +119,7 @@ func (s *cidrSet) allocateNext() (*net.IPNet, error) {
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
cidrMask
:=
cidr
.
Mask
maskSize
,
_
:=
cidrMask
.
Size
()
...
...
@@ -160,7 +166,7 @@ func (s *cidrSet) getBeginingAndEndIndices(cidr *net.IPNet) (begin, end int, err
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
)
if
err
!=
nil
{
return
err
...
...
@@ -173,7 +179,7 @@ func (s *cidrSet) release(cidr *net.IPNet) error {
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
)
if
err
!=
nil
{
return
err
...
...
@@ -188,7 +194,7 @@ func (s *cidrSet) occupy(cidr *net.IPNet) (err error) {
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
if
cidr
.
IP
.
To4
()
!=
nil
{
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
limitations under the License.
*/
package
node
package
cidrset
import
(
"math/big"
...
...
@@ -47,9 +47,9 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
}
for
_
,
tc
:=
range
cases
{
_
,
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
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
...
...
@@ -58,14 +58,14 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
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
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
}
...
...
@@ -73,7 +73,7 @@ func TestCIDRSetFullyAllocated(t *testing.T) {
t
.
Fatalf
(
"unexpected allocated cidr: %v, expecting %v for %v"
,
p
.
String
(),
tc
.
expectedCIDR
,
tc
.
description
)
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
...
...
@@ -133,7 +133,7 @@ func TestIndexToCIDRBlock(t *testing.T) {
}
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
tc
.
subnetMaskSize
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
tc
.
subnetMaskSize
)
cidr
:=
a
.
indexToCIDRBlock
(
tc
.
index
)
if
cidr
.
String
()
!=
tc
.
CIDRBlock
{
t
.
Fatalf
(
"error for %v index %d %s"
,
tc
.
description
,
tc
.
index
,
cidr
.
String
())
...
...
@@ -157,12 +157,12 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
24
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
24
)
// allocate all the CIDRs
var
cidrs
[]
*
net
.
IPNet
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
)
}
else
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
...
...
@@ -170,25 +170,25 @@ func TestCIDRSet_RandomishAllocation(t *testing.T) {
}
var
err
error
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
// release them all
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
a
.
r
elease
(
cidrs
[
i
])
a
.
R
elease
(
cidrs
[
i
])
}
// allocate the CIDRs again
var
rcidrs
[]
*
net
.
IPNet
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
)
}
else
{
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
...
...
@@ -215,14 +215,14 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
for
_
,
tc
:=
range
cases
{
_
,
clusterCIDR
,
_
:=
net
.
ParseCIDR
(
tc
.
clusterCIDRStr
)
a
:=
n
ewCIDRSet
(
clusterCIDR
,
24
)
a
:=
N
ewCIDRSet
(
clusterCIDR
,
24
)
// allocate all the CIDRs
var
cidrs
[]
*
net
.
IPNet
var
num_cidrs
=
256
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
)
}
else
{
t
.
Fatalf
(
"unexpected error: %v for %v"
,
err
,
tc
.
description
)
...
...
@@ -230,29 +230,29 @@ func TestCIDRSet_AllocationOccupied(t *testing.T) {
}
var
err
error
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
// release them all
for
i
:=
0
;
i
<
len
(
cidrs
);
i
++
{
a
.
r
elease
(
cidrs
[
i
])
a
.
R
elease
(
cidrs
[
i
])
}
// occupy the last 128 CIDRs
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
var
rcidrs
[]
*
net
.
IPNet
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
)
}
else
{
t
.
Fatalf
(
"unexpected error: %d, %v for %v"
,
i
,
err
,
tc
.
description
)
}
}
_
,
err
=
a
.
a
llocateNext
()
_
,
err
=
a
.
A
llocateNext
()
if
err
==
nil
{
t
.
Fatalf
(
"expected error because of fully-allocated range for %v"
,
tc
.
description
)
}
...
...
@@ -394,7 +394,7 @@ func TestGetBitforCIDR(t *testing.T) {
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
)
if
err
!=
nil
{
...
...
@@ -562,14 +562,14 @@ func TestOccupy(t *testing.T) {
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
)
if
err
!=
nil
{
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
{
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
continue
...
...
@@ -629,9 +629,9 @@ func TestCIDRSetv6(t *testing.T) {
}
for
_
,
tc
:=
range
cases
{
_
,
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
{
t
.
Errorf
(
"expected error but got none for %v"
,
tc
.
description
)
continue
...
...
@@ -645,7 +645,7 @@ func TestCIDRSetv6(t *testing.T) {
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
p2
.
String
()
!=
tc
.
expectedCIDR2
{
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
limitations under the License.
*/
package
node
package
ipam
import
(
"fmt"
...
...
@@ -32,6 +32,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/controller/node/util"
nodeutil
"k8s.io/kubernetes/pkg/util/node"
)
...
...
@@ -79,12 +80,12 @@ func (ca *cloudCIDRAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
cidrs
,
err
:=
ca
.
cloud
.
AliasRanges
(
types
.
NodeName
(
node
.
Name
))
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
)
}
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
)
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
limitations under the License.
*/
package
node
package
ipam
import
(
"fmt"
"net"
"sync"
"github.com/golang/glog"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
...
...
@@ -31,7 +33,8 @@ import (
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
"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.
...
...
@@ -45,7 +48,7 @@ const (
type
rangeAllocator
struct
{
client
clientset
.
Interface
cidrs
*
cidrSet
cidrs
*
cidr
set
.
Cidr
Set
clusterCIDR
*
net
.
IPNet
maxCIDRs
int
// 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
ra
:=
&
rangeAllocator
{
client
:
client
,
cidrs
:
n
ewCIDRSet
(
clusterCIDR
,
subNetMaskSize
),
cidrs
:
cidrset
.
N
ewCIDRSet
(
clusterCIDR
,
subNetMaskSize
),
clusterCIDR
:
clusterCIDR
,
nodeCIDRUpdateChannel
:
make
(
chan
nodeAndCIDR
,
cidrUpdateQueueSize
),
recorder
:
recorder
,
...
...
@@ -150,7 +153,7 @@ func (r *rangeAllocator) occupyCIDR(node *v1.Node) error {
if
err
!=
nil
{
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
nil
...
...
@@ -169,10 +172,10 @@ func (r *rangeAllocator) AllocateOrOccupyCIDR(node *v1.Node) error {
if
node
.
Spec
.
PodCIDR
!=
""
{
return
r
.
occupyCIDR
(
node
)
}
podCIDR
,
err
:=
r
.
cidrs
.
a
llocateNext
()
podCIDR
,
err
:=
r
.
cidrs
.
A
llocateNext
()
if
err
!=
nil
{
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
)
}
...
...
@@ -194,7 +197,7 @@ func (r *rangeAllocator) ReleaseCIDR(node *v1.Node) error {
}
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
err
...
...
@@ -212,7 +215,7 @@ func (r *rangeAllocator) filterOutServiceRange(serviceCIDR *net.IPNet) {
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
)
}
}
...
...
@@ -232,7 +235,7 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
if
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
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
())
}
}
...
...
@@ -246,13 +249,13 @@ func (r *rangeAllocator) updateCIDRAllocation(data nodeAndCIDR) error {
}
}
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
// them in case when we don't know if request went through.
// NodeController restart will return all falsely allocated CIDRs to the pool.
if
!
apierrors
.
IsServerTimeout
(
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
)
}
}
...
...
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 (
"k8s.io/kubernetes/pkg/cloudprovider"
fakecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
"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"
kubeletapis
"k8s.io/kubernetes/pkg/kubelet/apis"
"k8s.io/kubernetes/pkg/util/node"
...
...
@@ -103,7 +106,7 @@ func NewNodeControllerFromClient(
serviceCIDR
,
nodeCIDRMaskSize
,
allocateNodeCIDRs
,
RangeAllocatorType
,
ipam
.
RangeAllocatorType
,
useTaints
,
useTaints
,
)
...
...
@@ -637,9 +640,9 @@ func TestMonitorNodeStatusEvictPods(t *testing.T) {
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
for
_
,
zone
:=
range
zones
{
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
)
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
})
}
else
{
...
...
@@ -782,9 +785,9 @@ func TestPodStatusChange(t *testing.T) {
}
zones
:=
testutil
.
GetZones
(
item
.
fakeNodeHandler
)
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
)
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
})
}
...
...
@@ -1337,9 +1340,9 @@ func (nc *nodeController) doEviction(fakeNodeHandler *testutil.FakeNodeHandler)
var
podEvicted
bool
zones
:=
testutil
.
GetZones
(
fakeNodeHandler
)
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
)
d
eletePods
(
fakeNodeHandler
,
nc
.
recorder
,
value
.
Value
,
uid
,
nc
.
daemonSetStore
)
util
.
D
eletePods
(
fakeNodeHandler
,
nc
.
recorder
,
value
.
Value
,
uid
,
nc
.
daemonSetStore
)
return
true
,
0
})
}
...
...
@@ -2310,7 +2313,7 @@ func TestCheckNodeKubeletVersionParsing(t *testing.T) {
},
},
}
isOutdated
:=
n
odeRunningOutdatedKubelet
(
n
)
isOutdated
:=
util
.
N
odeRunningOutdatedKubelet
(
n
)
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
)
}
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
limitations under the License.
*/
package
node
package
scheduler
import
(
"container/heap"
...
...
@@ -27,6 +27,15 @@ import (
"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.
type
TimedValue
struct
{
Value
string
...
...
@@ -260,7 +269,7 @@ func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32) {
if
newQPS
<=
0
{
newLimiter
=
flowcontrol
.
NewFakeNeverRateLimiter
()
}
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
// 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
limitations under the License.
*/
package
node
package
scheduler
import
(
"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
limitations under the License.
*/
package
node
package
scheduler
import
(
"fmt"
...
...
@@ -122,7 +122,7 @@ func getPodsAssignedToNode(c clientset.Interface, nodeName string) ([]v1.Pod, er
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
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
}
...
...
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
limitations under the License.
*/
package
node
package
scheduler
import
(
"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
limitations under the License.
*/
package
node
package
scheduler
import
(
"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
limitations under the License.
*/
package
node
package
scheduler
import
(
"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