Set Kubernetes NodeNetworkUnavailable to false when starting
This commit is contained in:
1 parent
48aaac90fb
commit
9b0d1bd054
3 files changed
+46
-5
No files matched your search
+14
-5
@@ -176,14 +176,16 @@ func reclaimRemovedPeers(weave *weaveapi.Client, cml *configMapAnnotations, node
|
||||
|
||||
func main() {
|
||||
var (
|
||||
justReclaim bool
|
||||
justCheck bool
|
||||
peerName string
|
||||
nodeName string
|
||||
logLevel string
|
||||
justReclaim bool
|
||||
justCheck bool
|
||||
justSetNodeStatus bool
|
||||
peerName string
|
||||
nodeName string
|
||||
logLevel string
|
||||
)
|
||||
flag.BoolVar(&justReclaim, "reclaim", false, "reclaim IP space from dead peers")
|
||||
flag.BoolVar(&justCheck, "check-peer-new", false, "return success if peer name is not stored in annotation")
|
||||
flag.BoolVar(&justSetNodeStatus, "set-node-status", false, "set NodeNetworkUnavailable to false")
|
||||
flag.StringVar(&peerName, "peer-name", "unknown", "name of this Weave Net peer")
|
||||
flag.StringVar(&nodeName, "node-name", "unknown", "name of this Kubernetes node")
|
||||
flag.StringVar(&logLevel, "log-level", "info", "logging level (debug, info, warning, error)")
|
||||
@@ -210,6 +212,13 @@ func main() {
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
if justSetNodeStatus {
|
||||
err := setNodeNetworkUnavailableFalse(c, nodeName)
|
||||
if err != nil {
|
||||
common.Log.Fatalf("[kube-peers] could not set node status: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
peers, err := getKubePeers(c)
|
||||
if err != nil {
|
||||
common.Log.Fatalf("[kube-peers] Could not get peers: %v", err)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
// based on k8s.io/kubernetes/pkg/controller/nodeipam/ipam/adapter.go
|
||||
func setNodeNetworkUnavailableFalse(c *kubernetes.Clientset, nodeName string) error {
|
||||
condition := v1.NodeCondition{
|
||||
Type: v1.NodeNetworkUnavailable,
|
||||
Status: v1.ConditionFalse,
|
||||
Reason: "WeaveIsUp",
|
||||
Message: "Weave pod has set this",
|
||||
LastTransitionTime: metav1.Now(),
|
||||
LastHeartbeatTime: metav1.Now(),
|
||||
}
|
||||
raw, err := json.Marshal(&[]v1.NodeCondition{condition})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
patch := []byte(fmt.Sprintf(`{"status":{"conditions":%s}}`, raw))
|
||||
_, err = c.CoreV1().Nodes().PatchStatus(nodeName, patch)
|
||||
return err
|
||||
}
|
||||
@@ -143,6 +143,9 @@ post_start_actions() {
|
||||
|
||||
# Expose the weave network so host processes can communicate with pods
|
||||
/home/weave/weave --local expose $WEAVE_EXPOSE_IP
|
||||
|
||||
# Mark network as up
|
||||
/home/weave/kube-peers -set-node-status -node-name="$HOSTNAME"
|
||||
}
|
||||
|
||||
post_start_actions &
|
||||
|
||||
Reference in new issue
Block a user