mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Merge pull request #47819 from verult/AlphaStorageStatus
Automatic merge from submit-queue (batch tested with PRs 34515, 47236, 46694, 47819, 47792) Adding alpha feature gate to node statuses from local storage capacity isolation. **What this PR does / why we need it**: The Capacity.storage node attribute should not be exposed since it's part of an alpha feature. Added an feature gate. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #47809 There should be a test for new statuses in the alpha feature. Will include in a different PR.
This commit is contained in:
commit
2f4df7ffa6
@ -37,7 +37,7 @@ func CapacityFromMachineInfo(info *cadvisorapi.MachineInfo) v1.ResourceList {
|
|||||||
|
|
||||||
func StorageScratchCapacityFromFsInfo(info cadvisorapi2.FsInfo) v1.ResourceList {
|
func StorageScratchCapacityFromFsInfo(info cadvisorapi2.FsInfo) v1.ResourceList {
|
||||||
c := v1.ResourceList{
|
c := v1.ResourceList{
|
||||||
v1.ResourceStorage: *resource.NewQuantity(
|
v1.ResourceStorageScratch: *resource.NewQuantity(
|
||||||
int64(info.Capacity),
|
int64(info.Capacity),
|
||||||
resource.BinarySI),
|
resource.BinarySI),
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,11 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/conversion"
|
"k8s.io/apimachinery/pkg/conversion"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
|
v1helper "k8s.io/kubernetes/pkg/api/v1/helper"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
|
"k8s.io/kubernetes/pkg/features"
|
||||||
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/events"
|
"k8s.io/kubernetes/pkg/kubelet/events"
|
||||||
@ -553,24 +555,26 @@ func (kl *Kubelet) setNodeStatusMachineInfo(node *v1.Node) {
|
|||||||
node.Status.NodeInfo.BootID = info.BootID
|
node.Status.NodeInfo.BootID = info.BootID
|
||||||
}
|
}
|
||||||
|
|
||||||
rootfs, err := kl.GetCachedRootFsInfo()
|
if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) {
|
||||||
if err != nil {
|
rootfs, err := kl.GetCachedRootFsInfo()
|
||||||
node.Status.Capacity[v1.ResourceStorage] = resource.MustParse("0Gi")
|
|
||||||
} else {
|
|
||||||
for rName, rCap := range cadvisor.StorageScratchCapacityFromFsInfo(rootfs) {
|
|
||||||
node.Status.Capacity[rName] = rCap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if hasDedicatedImageFs, _ := kl.HasDedicatedImageFs(); hasDedicatedImageFs {
|
|
||||||
imagesfs, err := kl.ImagesFsInfo()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
node.Status.Capacity[v1.ResourceStorageOverlay] = resource.MustParse("0Gi")
|
node.Status.Capacity[v1.ResourceStorageScratch] = resource.MustParse("0Gi")
|
||||||
} else {
|
} else {
|
||||||
for rName, rCap := range cadvisor.StorageOverlayCapacityFromFsInfo(imagesfs) {
|
for rName, rCap := range cadvisor.StorageScratchCapacityFromFsInfo(rootfs) {
|
||||||
node.Status.Capacity[rName] = rCap
|
node.Status.Capacity[rName] = rCap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if hasDedicatedImageFs, _ := kl.HasDedicatedImageFs(); hasDedicatedImageFs {
|
||||||
|
imagesfs, err := kl.ImagesFsInfo()
|
||||||
|
if err != nil {
|
||||||
|
node.Status.Capacity[v1.ResourceStorageOverlay] = resource.MustParse("0Gi")
|
||||||
|
} else {
|
||||||
|
for rName, rCap := range cadvisor.StorageOverlayCapacityFromFsInfo(imagesfs) {
|
||||||
|
node.Status.Capacity[rName] = rCap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Allocatable.
|
// Set Allocatable.
|
||||||
|
@ -208,16 +208,14 @@ func TestUpdateNewNodeStatus(t *testing.T) {
|
|||||||
KubeProxyVersion: version.Get().String(),
|
KubeProxyVersion: version.Get().String(),
|
||||||
},
|
},
|
||||||
Capacity: v1.ResourceList{
|
Capacity: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Allocatable: v1.ResourceList{
|
Allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(9900E6, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(9900E6, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
||||||
@ -363,16 +361,14 @@ func TestUpdateExistingNodeStatus(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Capacity: v1.ResourceList{
|
Capacity: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(3000, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(3000, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(20E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(20E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Allocatable: v1.ResourceList{
|
Allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(2800, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(2800, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(19900E6, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(19900E6, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -448,16 +444,14 @@ func TestUpdateExistingNodeStatus(t *testing.T) {
|
|||||||
KubeProxyVersion: version.Get().String(),
|
KubeProxyVersion: version.Get().String(),
|
||||||
},
|
},
|
||||||
Capacity: v1.ResourceList{
|
Capacity: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(20E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(20E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Allocatable: v1.ResourceList{
|
Allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(19900E6, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(19900E6, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
||||||
@ -661,9 +655,8 @@ func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) {
|
|||||||
kubelet.containerManager = &localCM{
|
kubelet.containerManager = &localCM{
|
||||||
ContainerManager: cm.NewStubContainerManager(),
|
ContainerManager: cm.NewStubContainerManager(),
|
||||||
allocatable: v1.ResourceList{
|
allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(200, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(200, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(100E6, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(100E6, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(200*mb, resource.BinarySI),
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -734,16 +727,14 @@ func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) {
|
|||||||
KubeProxyVersion: version.Get().String(),
|
KubeProxyVersion: version.Get().String(),
|
||||||
},
|
},
|
||||||
Capacity: v1.ResourceList{
|
Capacity: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Allocatable: v1.ResourceList{
|
Allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(1800, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(9900E6, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(9900E6, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(300*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Addresses: []v1.NodeAddress{
|
Addresses: []v1.NodeAddress{
|
||||||
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
{Type: v1.NodeInternalIP, Address: "127.0.0.1"},
|
||||||
@ -1150,16 +1141,14 @@ func TestUpdateNewNodeStatusTooLargeReservation(t *testing.T) {
|
|||||||
Spec: v1.NodeSpec{},
|
Spec: v1.NodeSpec{},
|
||||||
Status: v1.NodeStatus{
|
Status: v1.NodeStatus{
|
||||||
Capacity: v1.ResourceList{
|
Capacity: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(2000, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
Allocatable: v1.ResourceList{
|
Allocatable: v1.ResourceList{
|
||||||
v1.ResourceCPU: *resource.NewMilliQuantity(0, resource.DecimalSI),
|
v1.ResourceCPU: *resource.NewMilliQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
v1.ResourceMemory: *resource.NewQuantity(10E9, resource.BinarySI),
|
||||||
v1.ResourceStorage: *resource.NewQuantity(500*mb, resource.BinarySI),
|
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
||||||
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user