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
13a355c8
Commit
13a355c8
authored
Jul 31, 2017
by
Di Xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor method to pkg/util/node
parent
21062657
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
59 deletions
+27
-59
node_controller.go
pkg/controller/cloud/node_controller.go
+1
-1
BUILD
pkg/controller/volume/attachdetach/statusupdater/BUILD
+1
-1
node_status_updater.go
.../volume/attachdetach/statusupdater/node_status_updater.go
+4
-42
kubelet_node_status.go
pkg/kubelet/kubelet_node_status.go
+3
-5
node.go
pkg/util/node/node.go
+18
-10
No files found.
pkg/controller/cloud/node_controller.go
View file @
13a355c8
...
@@ -183,7 +183,7 @@ func (cnc *CloudNodeController) updateNodeAddress(node *v1.Node, instances cloud
...
@@ -183,7 +183,7 @@ func (cnc *CloudNodeController) updateNodeAddress(node *v1.Node, instances cloud
if
!
nodeAddressesChangeDetected
(
node
.
Status
.
Addresses
,
newNode
.
Status
.
Addresses
)
{
if
!
nodeAddressesChangeDetected
(
node
.
Status
.
Addresses
,
newNode
.
Status
.
Addresses
)
{
return
return
}
}
_
,
err
=
nodeutil
.
PatchNodeStatus
(
cnc
.
kubeClient
.
CoreV1
(),
types
.
NodeName
(
node
.
Name
),
node
,
newNode
)
_
,
_
,
err
=
nodeutil
.
PatchNodeStatus
(
cnc
.
kubeClient
.
CoreV1
(),
types
.
NodeName
(
node
.
Name
),
node
,
newNode
)
if
err
!=
nil
{
if
err
!=
nil
{
glog
.
Errorf
(
"Error patching node with cloud ip addresses = [%v]"
,
err
)
glog
.
Errorf
(
"Error patching node with cloud ip addresses = [%v]"
,
err
)
}
}
...
...
pkg/controller/volume/attachdetach/statusupdater/BUILD
View file @
13a355c8
...
@@ -14,11 +14,11 @@ go_library(
...
@@ -14,11 +14,11 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater",
importpath = "k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater",
deps = [
deps = [
"//pkg/controller/volume/attachdetach/cache:go_default_library",
"//pkg/controller/volume/attachdetach/cache:go_default_library",
"//pkg/util/node:go_default_library",
"//vendor/github.com/golang/glog: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/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors: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/strategicpatch:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
],
],
...
...
pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go
View file @
13a355c8
...
@@ -19,18 +19,15 @@ limitations under the License.
...
@@ -19,18 +19,15 @@ limitations under the License.
package
statusupdater
package
statusupdater
import
(
import
(
"encoding/json"
"fmt"
"github.com/golang/glog"
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
nodeutil
"k8s.io/kubernetes/pkg/util/node"
)
)
// NodeStatusUpdater defines a set of operations for updating the
// NodeStatusUpdater defines a set of operations for updating the
...
@@ -100,47 +97,12 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error {
...
@@ -100,47 +97,12 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error {
func
(
nsu
*
nodeStatusUpdater
)
updateNodeStatus
(
nodeName
types
.
NodeName
,
nodeObj
*
v1
.
Node
,
attachedVolumes
[]
v1
.
AttachedVolume
)
error
{
func
(
nsu
*
nodeStatusUpdater
)
updateNodeStatus
(
nodeName
types
.
NodeName
,
nodeObj
*
v1
.
Node
,
attachedVolumes
[]
v1
.
AttachedVolume
)
error
{
node
:=
nodeObj
.
DeepCopy
()
node
:=
nodeObj
.
DeepCopy
()
// TODO: Change to pkg/util/node.UpdateNodeStatus.
oldData
,
err
:=
json
.
Marshal
(
node
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to Marshal oldData for node %q. %v"
,
nodeName
,
err
)
}
node
.
Status
.
VolumesAttached
=
attachedVolumes
node
.
Status
.
VolumesAttached
=
attachedVolumes
_
,
patchBytes
,
err
:=
nodeutil
.
PatchNodeStatus
(
nsu
.
kubeClient
.
CoreV1
(),
nodeName
,
nodeObj
,
node
)
newData
,
err
:=
json
.
Marshal
(
node
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to Marshal newData for node %q. %v"
,
nodeName
,
err
)
}
patchBytes
,
err
:=
strategicpatch
.
CreateTwoWayMergePatch
(
oldData
,
newData
,
node
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to CreateTwoWayMergePatch for node %q. %v"
,
nodeName
,
err
)
}
_
,
err
=
nsu
.
kubeClient
.
CoreV1
()
.
Nodes
()
.
PatchStatus
(
string
(
nodeName
),
patchBytes
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
return
err
"failed to kubeClient.CoreV1().Nodes().Patch for node %q. %v"
,
nodeName
,
err
)
}
}
glog
.
V
(
4
)
.
Infof
(
"Updating status for node %q succeeded. patchBytes: %q VolumesAttached: %v"
,
nodeName
,
string
(
patchBytes
),
node
.
Status
.
VolumesAttached
)
glog
.
V
(
4
)
.
Infof
(
"Updating status %q for node %q succeeded. VolumesAttached: %v"
,
patchBytes
,
nodeName
,
attachedVolumes
)
return
nil
return
nil
}
}
pkg/kubelet/kubelet_node_status.go
View file @
13a355c8
...
@@ -132,8 +132,7 @@ func (kl *Kubelet) tryRegisterWithAPIServer(node *v1.Node) bool {
...
@@ -132,8 +132,7 @@ func (kl *Kubelet) tryRegisterWithAPIServer(node *v1.Node) bool {
requiresUpdate
:=
kl
.
reconcileCMADAnnotationWithExistingNode
(
node
,
existingNode
)
requiresUpdate
:=
kl
.
reconcileCMADAnnotationWithExistingNode
(
node
,
existingNode
)
requiresUpdate
=
kl
.
updateDefaultLabels
(
node
,
existingNode
)
||
requiresUpdate
requiresUpdate
=
kl
.
updateDefaultLabels
(
node
,
existingNode
)
||
requiresUpdate
if
requiresUpdate
{
if
requiresUpdate
{
if
_
,
err
:=
nodeutil
.
PatchNodeStatus
(
kl
.
kubeClient
.
CoreV1
(),
types
.
NodeName
(
kl
.
nodeName
),
if
_
,
_
,
err
:=
nodeutil
.
PatchNodeStatus
(
kl
.
kubeClient
.
CoreV1
(),
types
.
NodeName
(
kl
.
nodeName
),
originalNode
,
existingNode
);
err
!=
nil
{
originalNode
,
existingNode
);
err
!=
nil
{
glog
.
Errorf
(
"Unable to reconcile node %q with API server: error updating node: %v"
,
kl
.
nodeName
,
err
)
glog
.
Errorf
(
"Unable to reconcile node %q with API server: error updating node: %v"
,
kl
.
nodeName
,
err
)
return
false
return
false
}
}
...
@@ -142,8 +141,7 @@ func (kl *Kubelet) tryRegisterWithAPIServer(node *v1.Node) bool {
...
@@ -142,8 +141,7 @@ func (kl *Kubelet) tryRegisterWithAPIServer(node *v1.Node) bool {
return
true
return
true
}
}
glog
.
Errorf
(
glog
.
Errorf
(
"Previously node %q had externalID %q; now it is %q; will delete and recreate."
,
"Previously node %q had externalID %q; now it is %q; will delete and recreate."
,
kl
.
nodeName
,
node
.
Spec
.
ExternalID
,
existingNode
.
Spec
.
ExternalID
,
kl
.
nodeName
,
node
.
Spec
.
ExternalID
,
existingNode
.
Spec
.
ExternalID
,
)
)
if
err
:=
kl
.
kubeClient
.
CoreV1
()
.
Nodes
()
.
Delete
(
node
.
Name
,
nil
);
err
!=
nil
{
if
err
:=
kl
.
kubeClient
.
CoreV1
()
.
Nodes
()
.
Delete
(
node
.
Name
,
nil
);
err
!=
nil
{
...
@@ -415,7 +413,7 @@ func (kl *Kubelet) tryUpdateNodeStatus(tryNumber int) error {
...
@@ -415,7 +413,7 @@ func (kl *Kubelet) tryUpdateNodeStatus(tryNumber int) error {
kl
.
setNodeStatus
(
node
)
kl
.
setNodeStatus
(
node
)
// Patch the current status on the API server
// Patch the current status on the API server
updatedNode
,
err
:=
nodeutil
.
PatchNodeStatus
(
kl
.
heartbeatClient
,
types
.
NodeName
(
kl
.
nodeName
),
originalNode
,
node
)
updatedNode
,
_
,
err
:=
nodeutil
.
PatchNodeStatus
(
kl
.
heartbeatClient
,
types
.
NodeName
(
kl
.
nodeName
),
originalNode
,
node
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
pkg/util/node/node.go
View file @
13a355c8
...
@@ -151,10 +151,23 @@ func SetNodeCondition(c clientset.Interface, node types.NodeName, condition v1.N
...
@@ -151,10 +151,23 @@ func SetNodeCondition(c clientset.Interface, node types.NodeName, condition v1.N
}
}
// PatchNodeStatus patches node status.
// PatchNodeStatus patches node status.
func
PatchNodeStatus
(
c
v1core
.
CoreV1Interface
,
nodeName
types
.
NodeName
,
oldNode
*
v1
.
Node
,
newNode
*
v1
.
Node
)
(
*
v1
.
Node
,
error
)
{
func
PatchNodeStatus
(
c
v1core
.
CoreV1Interface
,
nodeName
types
.
NodeName
,
oldNode
*
v1
.
Node
,
newNode
*
v1
.
Node
)
(
*
v1
.
Node
,
[]
byte
,
error
)
{
patchBytes
,
err
:=
preparePatchBytesforNodeStatus
(
nodeName
,
oldNode
,
newNode
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
updatedNode
,
err
:=
c
.
Nodes
()
.
Patch
(
string
(
nodeName
),
types
.
StrategicMergePatchType
,
patchBytes
,
"status"
)
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"failed to patch status %q for node %q: %v"
,
patchBytes
,
nodeName
,
err
)
}
return
updatedNode
,
patchBytes
,
nil
}
func
preparePatchBytesforNodeStatus
(
nodeName
types
.
NodeName
,
oldNode
*
v1
.
Node
,
newNode
*
v1
.
Node
)
([]
byte
,
error
)
{
oldData
,
err
:=
json
.
Marshal
(
oldNode
)
oldData
,
err
:=
json
.
Marshal
(
oldNode
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to
marshal old node %#v for node %q: %v"
,
oldNode
,
nodeName
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to
Marshal oldData for node %q: %v"
,
nodeName
,
err
)
}
}
// Reset spec to make sure only patch for Status or ObjectMeta is generated.
// Reset spec to make sure only patch for Status or ObjectMeta is generated.
...
@@ -164,17 +177,12 @@ func PatchNodeStatus(c v1core.CoreV1Interface, nodeName types.NodeName, oldNode
...
@@ -164,17 +177,12 @@ func PatchNodeStatus(c v1core.CoreV1Interface, nodeName types.NodeName, oldNode
newNode
.
Spec
=
oldNode
.
Spec
newNode
.
Spec
=
oldNode
.
Spec
newData
,
err
:=
json
.
Marshal
(
newNode
)
newData
,
err
:=
json
.
Marshal
(
newNode
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to
marshal new node %#v for node %q: %v"
,
newNode
,
nodeName
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to
Marshal newData for node %q: %v"
,
nodeName
,
err
)
}
}
patchBytes
,
err
:=
strategicpatch
.
CreateTwoWayMergePatch
(
oldData
,
newData
,
v1
.
Node
{})
patchBytes
,
err
:=
strategicpatch
.
CreateTwoWayMergePatch
(
oldData
,
newData
,
v1
.
Node
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create patch for node %q: %v"
,
nodeName
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to CreateTwoWayMergePatch for node %q: %v"
,
nodeName
,
err
)
}
updatedNode
,
err
:=
c
.
Nodes
()
.
Patch
(
string
(
nodeName
),
types
.
StrategicMergePatchType
,
patchBytes
,
"status"
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to patch status %q for node %q: %v"
,
patchBytes
,
nodeName
,
err
)
}
}
return
updatedNode
,
nil
return
patchBytes
,
nil
}
}
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