fix: use ctr to remove containerd containers (#3144)
This commit is contained in:
Родитель
3c4ab35fbe
Коммит
369f5c75f6
|
@ -13,6 +13,8 @@ $global:CsiProxyEnabled = [System.Convert]::ToBoolean($Global:ClusterConfigurati
|
|||
$global:MasterSubnet = $Global:ClusterConfiguration.Kubernetes.ControlPlane.MasterSubnet
|
||||
$global:NetworkMode = "L2Bridge"
|
||||
$global:NetworkPlugin = $Global:ClusterConfiguration.Cni.Name
|
||||
$global:ContainerRuntime = $Global:ClusterConfiguration.Cri.Name
|
||||
$UseContainerD = ($global:ContainerRuntime -eq "containerd")
|
||||
|
||||
filter Timestamp { "$(Get-Date -Format o): $_" }
|
||||
|
||||
|
@ -45,7 +47,13 @@ if ($global:CsiProxyEnabled) {
|
|||
$hnsNetwork = Get-HnsNetwork | Where-Object Name -EQ azure
|
||||
if ($hnsNetwork) {
|
||||
Write-Log "Cleaning up containers"
|
||||
docker ps -q | ForEach-Object { docker rm $_ -f }
|
||||
if ($UseContainerD -eq $true) {
|
||||
ctr.exe -n k8s.io c ls -q | ForEach-Object { ctr -n k8s.io tasks kill $_ }
|
||||
ctr.exe -n k8s.io c ls -q | ForEach-Object { ctr -n k8s.io c rm $_ }
|
||||
}
|
||||
else {
|
||||
docker.exe ps -q | ForEach-Object { docker rm $_ -f }
|
||||
}
|
||||
|
||||
Write-Log "Removing old HNS network 'azure'"
|
||||
Remove-HnsNetwork $hnsNetwork
|
||||
|
@ -77,8 +85,8 @@ Get-HnsPolicyList | Remove-HnsPolicyList
|
|||
# Create required networks
|
||||
#
|
||||
|
||||
# If using kubenet create the HSN network here.
|
||||
# (The kubelet creates the HSN network when using azure-cni + azure cloud provider)
|
||||
# If using kubenet create the HNS network here.
|
||||
# (The kubelet creates the HNS network when using azure-cni + azure cloud provider)
|
||||
if ($global:NetworkPlugin -eq 'kubenet') {
|
||||
Write-Log "Creating new hns network: $($global:NetworkMode.ToLower())"
|
||||
$podCIDR = Get-PodCIDR
|
||||
|
|
|
@ -34705,6 +34705,8 @@ $global:CsiProxyEnabled = [System.Convert]::ToBoolean($Global:ClusterConfigurati
|
|||
$global:MasterSubnet = $Global:ClusterConfiguration.Kubernetes.ControlPlane.MasterSubnet
|
||||
$global:NetworkMode = "L2Bridge"
|
||||
$global:NetworkPlugin = $Global:ClusterConfiguration.Cni.Name
|
||||
$global:ContainerRuntime = $Global:ClusterConfiguration.Cri.Name
|
||||
$UseContainerD = ($global:ContainerRuntime -eq "containerd")
|
||||
|
||||
filter Timestamp { "$(Get-Date -Format o): $_" }
|
||||
|
||||
|
@ -34737,7 +34739,13 @@ if ($global:CsiProxyEnabled) {
|
|||
$hnsNetwork = Get-HnsNetwork | Where-Object Name -EQ azure
|
||||
if ($hnsNetwork) {
|
||||
Write-Log "Cleaning up containers"
|
||||
docker ps -q | ForEach-Object { docker rm $_ -f }
|
||||
if ($UseContainerD -eq $true) {
|
||||
ctr.exe -n k8s.io c ls -q | ForEach-Object { ctr -n k8s.io tasks kill $_ }
|
||||
ctr.exe -n k8s.io c ls -q | ForEach-Object { ctr -n k8s.io c rm $_ }
|
||||
}
|
||||
else {
|
||||
docker.exe ps -q | ForEach-Object { docker rm $_ -f }
|
||||
}
|
||||
|
||||
Write-Log "Removing old HNS network 'azure'"
|
||||
Remove-HnsNetwork $hnsNetwork
|
||||
|
@ -34769,8 +34777,8 @@ Get-HnsPolicyList | Remove-HnsPolicyList
|
|||
# Create required networks
|
||||
#
|
||||
|
||||
# If using kubenet create the HSN network here.
|
||||
# (The kubelet creates the HSN network when using azure-cni + azure cloud provider)
|
||||
# If using kubenet create the HNS network here.
|
||||
# (The kubelet creates the HNS network when using azure-cni + azure cloud provider)
|
||||
if ($global:NetworkPlugin -eq 'kubenet') {
|
||||
Write-Log "Creating new hns network: $($global:NetworkMode.ToLower())"
|
||||
$podCIDR = Get-PodCIDR
|
||||
|
|
|
@ -41,6 +41,7 @@ type Config struct {
|
|||
Timeout time.Duration `envconfig:"TIMEOUT" default:"20m"`
|
||||
LBTimeout time.Duration `envconfig:"LB_TIMEOUT" default:"20m"`
|
||||
CurrentWorkingDir string
|
||||
ResourceGroup string `envconfig:"RESOURCE_GROUP" default:""`
|
||||
SoakClusterName string `envconfig:"SOAK_CLUSTER_NAME" default:""`
|
||||
ForceDeploy bool `envconfig:"FORCE_DEPLOY" default:"false"`
|
||||
UseDeployCommand bool `envconfig:"USE_DEPLOY_COMMAND" default:"false"`
|
||||
|
@ -51,9 +52,12 @@ type Config struct {
|
|||
BlockSSHPort bool `envconfig:"BLOCK_SSH" default:"false"`
|
||||
AddNodePoolInput string `envconfig:"ADD_NODE_POOL_INPUT" default:""`
|
||||
TestPVC bool `envconfig:"TEST_PVC" default:"false"`
|
||||
SubscriptionID string `envconfig:"SUBSCRIPTION_ID"`
|
||||
ClientID string `envconfig:"CLIENT_ID"`
|
||||
ClientSecret string `envconfig:"CLIENT_SECRET"`
|
||||
}
|
||||
|
||||
// CustomCloudConfig holds configurations for custom clould
|
||||
// CustomCloudConfig holds configurations for custom cloud
|
||||
type CustomCloudConfig struct {
|
||||
ServiceManagementEndpoint string `envconfig:"SERVICE_MANAGEMENT_ENDPOINT" default:""`
|
||||
ResourceManagerEndpoint string `envconfig:"RESOURCE_MANAGER_ENDPOINT" default:""`
|
||||
|
|
|
@ -5,6 +5,7 @@ go 1.14
|
|||
require (
|
||||
github.com/Azure/aks-engine v0.43.0
|
||||
github.com/Azure/azure-sdk-for-go v41.0.0+incompatible
|
||||
github.com/Azure/go-autorest/autorest v0.9.6
|
||||
github.com/Azure/go-autorest/autorest/to v0.3.0
|
||||
github.com/influxdata/influxdb v1.7.9
|
||||
github.com/kelseyhightower/envconfig v1.4.0
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/Azure/azure-sdk-for-go v0.2.0-beta h1:wYBqYNMWr0WL2lcEZi+dlK9n+N0wJ0Pjs4BKeOnDjfQ=
|
||||
github.com/Azure/azure-sdk-for-go v41.0.0+incompatible h1:nQc4CAuBSr8rO0aZ90NvHoKyWYodhtzSAS4DPDrCtqo=
|
||||
github.com/Azure/azure-sdk-for-go v41.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||
github.com/Azure/azure-sdk-for-go v42.0.0+incompatible h1:yz6sFf5bHZ+gEOQVuK5JhPqTTAmv+OvSLSaqgzqaCwY=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0=
|
||||
github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
|
||||
|
@ -8,6 +10,7 @@ github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEg
|
|||
github.com/Azure/go-autorest/autorest/adal v0.6.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
|
||||
github.com/Azure/go-autorest/autorest/azure/cli v0.3.0 h1:5PAqnv+CSTwW9mlZWZAizmzrazFWEgZykEZXpr2hDtY=
|
||||
github.com/Azure/go-autorest/autorest/azure/cli v0.3.0/go.mod h1:rNYMNAefZMRowqCV0cVhr/YDW5dD7afFq9nXAXL4ykE=
|
||||
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
|
||||
github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM=
|
||||
|
@ -36,11 +39,14 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
|||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
|
||||
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
|
||||
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
|
||||
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
github.com/go-playground/locales v0.12.1 h1:2FITxuFt/xuCNP1Acdhv62OzaCiviiE4kotfhkmOqEc=
|
||||
|
@ -52,6 +58,7 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
|
|||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
|
@ -59,8 +66,10 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
|
|||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g=
|
||||
github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q=
|
||||
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
|
@ -91,6 +100,7 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
|
|||
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
|
||||
github.com/mattn/goveralls v0.0.5/go.mod h1:Xg2LHi51faXLyKXwsndxiW6uxEEQT9+3sjGzzwU4xy0=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
|
@ -104,12 +114,14 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
|
|||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
|
||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
||||
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
|
||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
|
||||
|
@ -139,6 +151,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2eP
|
|||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||
|
@ -154,6 +167,7 @@ golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6 h1:ZJUmhYTp8GbGC0ViZRc2U+MIY
|
|||
golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w=
|
||||
golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
|
@ -179,9 +193,11 @@ gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
|||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
k8s.io/api v0.0.0-20190222213804-5cb15d344471 h1:MzQGt8qWQCR+39kbYRd0uQqsvSidpYqJLFeWiJ9l4OE=
|
||||
k8s.io/api v0.0.0-20190222213804-5cb15d344471/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA=
|
||||
k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628 h1:UYfHH+KEF88OTg+GojQUwFTNxbxwmoktLwutUzR0GPg=
|
||||
k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
|
||||
k8s.io/client-go v10.0.0+incompatible h1:F1IqCqw7oMBzDkqlcBymRq1450wD0eNqLE9jzUrIi34=
|
||||
k8s.io/client-go v10.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s=
|
||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||
|
|
|
@ -6,6 +6,7 @@ package kubernetes
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
|
@ -19,10 +20,12 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/Azure/go-autorest/autorest/azure"
|
||||
"github.com/Azure/go-autorest/autorest/to"
|
||||
|
||||
"github.com/Azure/aks-engine/pkg/api"
|
||||
"github.com/Azure/aks-engine/pkg/api/common"
|
||||
"github.com/Azure/aks-engine/pkg/armhelpers"
|
||||
"github.com/Azure/aks-engine/test/e2e/config"
|
||||
"github.com/Azure/aks-engine/test/e2e/engine"
|
||||
"github.com/Azure/aks-engine/test/e2e/kubernetes/deployment"
|
||||
|
@ -39,6 +42,8 @@ import (
|
|||
"github.com/Azure/aks-engine/test/e2e/kubernetes/storageclass"
|
||||
"github.com/Azure/aks-engine/test/e2e/kubernetes/util"
|
||||
"github.com/Azure/aks-engine/test/e2e/remote"
|
||||
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
@ -72,6 +77,8 @@ var (
|
|||
deploymentReplicasCount int
|
||||
dnsAddonName string
|
||||
stabilityCommandTimeout time.Duration
|
||||
env azure.Environment
|
||||
azureClient *armhelpers.AzureClient
|
||||
)
|
||||
|
||||
var _ = BeforeSuite(func() {
|
||||
|
@ -157,6 +164,15 @@ var _ = BeforeSuite(func() {
|
|||
stabilityCommandTimeout = 10 * time.Second
|
||||
}
|
||||
Expect(dnsAddonName).NotTo(Equal(""))
|
||||
|
||||
env, err = azure.EnvironmentFromName("AzurePublicCloud") // TODO get this programmatically
|
||||
if err != nil {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
azureClient, err = armhelpers.NewAzureClientWithClientSecret(env, cfg.SubscriptionID, cfg.ClientID, cfg.ClientSecret)
|
||||
if err != nil {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
})
|
||||
|
||||
var _ = AfterSuite(func() {
|
||||
|
@ -2040,6 +2056,111 @@ var _ = Describe("Azure Container Cluster using the Kubernetes Orchestrator", fu
|
|||
Skip("No windows agent was provisioned for this Cluster Definition")
|
||||
}
|
||||
})
|
||||
// This test is not parallelizable due to tainting nodes with NoSchedule
|
||||
It("should expect containers to be recreated after node restart", func() {
|
||||
if eng.HasWindowsAgents() {
|
||||
for _, profile := range eng.ExpandedDefinition.Properties.AgentPoolProfiles {
|
||||
if profile.IsWindows() {
|
||||
if profile.AvailabilityProfile == api.AvailabilitySet {
|
||||
Skip("AvailabilitySet is configured for this Cluster Definition")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
windowsImages, err := eng.GetWindowsTestImages()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
deploymentPrefix := fmt.Sprintf("iis-%s", cfg.Name)
|
||||
deploymentName := fmt.Sprintf("%s-%v", deploymentPrefix, r.Intn(99999))
|
||||
By("Creating a deployment with 1 pod running IIS")
|
||||
iisDeploy, err := deployment.CreateWindowsDeployWithHostportDeleteIfExist(deploymentPrefix, windowsImages.IIS, deploymentName, "default", 80, -1)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Waiting on pod to be Ready")
|
||||
running, err := pod.WaitOnSuccesses(deploymentName, "default", 4, sleepBetweenRetriesWhenWaitingForPodReady, cfg.Timeout)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(running).To(Equal(true))
|
||||
|
||||
By("Exposing a LoadBalancer for the pod")
|
||||
err = iisDeploy.ExposeDeleteIfExist(deploymentPrefix, "default", "LoadBalancer", 80, 80)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
iisService, err := service.Get(deploymentName, "default")
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
err = iisService.WaitForIngress(cfg.LBTimeout, 5*time.Second)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Verifying that the service is reachable and returns the default IIS start page")
|
||||
err = iisService.ValidateWithRetry("(IIS Windows Server)", sleepBetweenRetriesWhenWaitingForPodReady, cfg.Timeout)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
pods, err := iisDeploy.Pods()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
nodeName := pods[0].Spec.NodeName
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 6000*time.Second)
|
||||
defer cancel()
|
||||
|
||||
By("Adding taint to all other Windows nodes")
|
||||
nodeList, err := node.Get()
|
||||
for _, n := range nodeList.Nodes {
|
||||
if n.IsWindows() && n.Metadata.Name != nodeName {
|
||||
n.AddTaint(node.Taint{Key: "key", Value: "value", Effect: "NoSchedule"})
|
||||
}
|
||||
}
|
||||
|
||||
// Removing taints
|
||||
defer func(nodeList *node.List, nodeName string) {
|
||||
for _, n := range nodeList.Nodes {
|
||||
if n.IsWindows() && n.Metadata.Name != nodeName {
|
||||
n.RemoveTaint(node.Taint{Key: "key", Value: "value", Effect: "NoSchedule"})
|
||||
}
|
||||
}
|
||||
}(nodeList, nodeName)
|
||||
|
||||
By("Restarting VM " + nodeName + " in resource group " + cfg.ResourceGroup)
|
||||
|
||||
// Getting vmss for the vm
|
||||
vmssPage, err := azureClient.ListVirtualMachineScaleSets(ctx, cfg.ResourceGroup)
|
||||
vmssList := vmssPage.Values()
|
||||
|
||||
// Name of VMSS of nodeName
|
||||
var vmssName string
|
||||
// InstanceID of VM in its VMSS
|
||||
var instanceID string
|
||||
for _, vmss := range vmssList {
|
||||
if !strings.Contains(nodeName, *vmss.Name) {
|
||||
continue
|
||||
}
|
||||
vmName := *vmss.Name + "_" + nodeName[len(nodeName)-1:]
|
||||
vmPage, err := azureClient.ListVirtualMachineScaleSetVMs(ctx, cfg.ResourceGroup, *vmss.Name)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
vmList := vmPage.Values()
|
||||
for _, vm := range vmList {
|
||||
if vmName == *vm.Name {
|
||||
vmssName = *vmss.Name
|
||||
instanceID = *vm.InstanceID
|
||||
break
|
||||
}
|
||||
}
|
||||
if instanceID != "" {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
instanceIDs := &compute.VirtualMachineScaleSetVMInstanceIDs{&[]string{instanceID}}
|
||||
err = azureClient.RestartVirtualMachineScaleSets(ctx, cfg.ResourceGroup, vmssName, instanceIDs)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
//Wait for VM to come up
|
||||
time.Sleep(30 * time.Second)
|
||||
|
||||
By("Verifying that the service is still reachable and returns the default IIS start page")
|
||||
err = iisService.ValidateWithRetry("(IIS Windows Server)", sleepBetweenRetriesWhenWaitingForPodReady, cfg.Timeout)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
} else {
|
||||
Skip("No windows agent was provisioned for this Cluster Definition")
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
Describe("after the cluster has been up for awhile", func() {
|
||||
|
|
|
@ -204,6 +204,24 @@ func (n *Node) Describe() error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Add taint to node
|
||||
func (n *Node) AddTaint(taint Taint) error {
|
||||
var commandTimeout time.Duration
|
||||
cmd := exec.Command("k", "taint", "nodes", n.Metadata.Name, taint.Key+"="+taint.Value+":"+taint.Effect)
|
||||
out, err := util.RunAndLogCommand(cmd, commandTimeout)
|
||||
log.Printf("\n%s\n", string(out))
|
||||
return err
|
||||
}
|
||||
|
||||
// Remove taint to node
|
||||
func (n *Node) RemoveTaint(taint Taint) error {
|
||||
var commandTimeout time.Duration
|
||||
cmd := exec.Command("k", "taint", "nodes", n.Metadata.Name, taint.Key+":"+taint.Effect+"-")
|
||||
out, err := util.RunAndLogCommand(cmd, commandTimeout)
|
||||
log.Printf("\n%s\n", string(out))
|
||||
return err
|
||||
}
|
||||
|
||||
// AreAllReady returns if all nodes are ready
|
||||
func AreAllReady() bool {
|
||||
list, _ := Get()
|
||||
|
|
|
@ -201,6 +201,22 @@ func main() {
|
|||
}
|
||||
|
||||
if !cfg.SkipTest {
|
||||
var resourceGroup string
|
||||
if cliProvisioner.Account.ResourceGroup.Name != "" {
|
||||
resourceGroup = cliProvisioner.Account.ResourceGroup.Name
|
||||
} else {
|
||||
resourceGroup = cfg.Name
|
||||
}
|
||||
|
||||
if resourceGroup == "" {
|
||||
if cfg.CleanUpIfFail {
|
||||
teardown()
|
||||
}
|
||||
log.Fatalf("Resource Group is empty")
|
||||
}
|
||||
|
||||
os.Setenv("RESOURCE_GROUP", resourceGroup)
|
||||
|
||||
g, err := runner.BuildGinkgoRunner(cfg, pt)
|
||||
if err != nil {
|
||||
if cfg.CleanUpIfFail {
|
||||
|
|
Загрузка…
Ссылка в новой задаче