Repository: kubernetes-sigs/cloud-provider-azure
Pull request #5131 (2023-12-06 17:26:30)

chore(deps): bump actions/setup-go from 4 to 5
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/setup-go/releases">actions/setup-go's releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<p>In scope of this release, we change Nodejs runtime from node16 to node20 (<a href="https://redirect.github.com/actions/setup-go/pull/421">actions/setup-go#421</a>). Moreover, we update some dependencies to the latest versions (<a href="https://redirect.github.com/actions/setup-go/pull/445">actions/setup-go#445</a>).</p>
<p>Besides, this release contains such changes as:</p>
<ul>
<li>Fix hosted tool cache usage on windows by <a href="https://github.com/galargh"><code>@​galargh</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/411">actions/setup-go#411</a></li>
<li>Improve documentation regarding dependencies caching by <a href="https://github.com/artemgavrilov"><code>@​artemgavrilov</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/417">actions/setup-go#417</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/galargh"><code>@​galargh</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/411">actions/setup-go#411</a></li>
<li><a href="https://github.com/artemgavrilov"><code>@​artemgavrilov</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/417">actions/setup-go#417</a></li>
<li><a href="https://github.com/chenrui333"><code>@​chenrui333</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/421">actions/setup-go#421</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-go/compare/v4...v5.0.0">https://github.com/actions/setup-go/compare/v4...v5.0.0</a></p>
<h2>v4.1.0</h2>
<h2>What's Changed</h2>
<p>In scope of this release, slow installation on Windows was fixed by <a href="https://github.com/dsame"><code>@​dsame</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/393">actions/setup-go#393</a> and OS version was added to <code>primaryKey</code> for Ubuntu runners to avoid conflicts (<a href="https://redirect.github.com/actions/setup-go/pull/383">actions/setup-go#383</a>)</p>
<p>This release also includes the following changes:</p>
<ul>
<li>Remove implicit dependencies by <a href="https://github.com/nikolai-laevskii"><code>@​nikolai-laevskii</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/378">actions/setup-go#378</a></li>
<li>Update action.yml by <a href="https://github.com/mkelly"><code>@​mkelly</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/379">actions/setup-go#379</a></li>
<li>Added a description that go-version should be specified as a string type by <a href="https://github.com/n3xem"><code>@​n3xem</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/367">actions/setup-go#367</a></li>
<li>Add note about YAML parsing versions by <a href="https://github.com/dmitry-shibanov"><code>@​dmitry-shibanov</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/382">actions/setup-go#382</a></li>
<li>Automatic update of configuration files from 05/23/2023 by <a href="https://github.com/github-actions"><code>@​github-actions</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/377">actions/setup-go#377</a></li>
<li>Bump tough-cookie and <code>@​azure/ms-rest-js</code> by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/392">actions/setup-go#392</a></li>
<li>Bump word-wrap from 1.2.3 to 1.2.4 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/397">actions/setup-go#397</a></li>
<li>Bump semver from 6.3.0 to 6.3.1 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/396">actions/setup-go#396</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mkelly"><code>@​mkelly</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/379">actions/setup-go#379</a></li>
<li><a href="https://github.com/n3xem"><code>@​n3xem</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/367">actions/setup-go#367</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-go/compare/v4...v4.1.0">https://github.com/actions/setup-go/compare/v4...v4.1.0</a></p>
<h2>v4.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update documentation for <code>v4</code> by <a href="https://github.com/dsame"><code>@​dsame</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/354">actions/setup-go#354</a></li>
<li>Fix glob bug in the package.json scripts section by <a href="https://github.com/IvanZosimov"><code>@​IvanZosimov</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/359">actions/setup-go#359</a></li>
<li>Bump <code>xml2js</code> dependency by <a href="https://github.com/dmitry-shibanov"><code>@​dmitry-shibanov</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/370">actions/setup-go#370</a></li>
<li>Bump <code>@actions/cache</code> dependency to v3.2.1 by <a href="https://github.com/nikolai-laevskii"><code>@​nikolai-laevskii</code></a> in <a href="https://redirect.github.com/actions/setup-go/pull/374">actions/setup-go#374</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/nikolai-laevskii"><code>@​nikolai-laevskii</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-go/pull/374">actions/setup-go#374</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-go/compare/v4...v4.0.1">https://github.com/actions/setup-go/compare/v4...v4.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/actions/setup-go/commit/0c52d547c9bc32b1aa3301fd7a9cb496313a4491"><code>0c52d54</code></a> Update dependencies for node20 (<a href="https://redirect.github.com/actions/setup-go/issues/445">#445</a>)</li>
<li><a href="https://github.com/actions/setup-go/commit/bfd2fb341f32be7281829126376a12a780ca79fc"><code>bfd2fb3</code></a> Merge pull request <a href="https://redirect.github.com/actions/setup-go/issues/421">#421</a> from chenrui333/node20-runtime</li>
<li><a href="https://github.com/actions/setup-go/commit/3d65fa57fcbfe4a359b6b71a6c65e6eec12984eb"><code>3d65fa5</code></a> feat: bump to use actions/checkout@v4</li>
<li><a href="https://github.com/actions/setup-go/commit/8a505c9cf2e2726eda7f3268d6992e386a12da52"><code>8a505c9</code></a> feat: bump to use node20 runtime</li>
<li><a href="https://github.com/actions/setup-go/commit/883490dfd06f396ebe0b738bc313a53cf9d851e5"><code>883490d</code></a> Merge pull request <a href="https://redirect.github.com/actions/setup-go/issues/417">#417</a> from artemgavrilov/main</li>
<li><a href="https://github.com/actions/setup-go/commit/d45ebba0ce181dc5604aaf69ce5a0bdcbd3b1807"><code>d45ebba</code></a> Rephrase sentence</li>
<li><a href="https://github.com/actions/setup-go/commit/317c6617fa9e4e67f1e5e20ad8bc98bf298a0f8f"><code>317c661</code></a> Replace <code>wildcards</code> term with <code>globs</code>.</li>
<li><a href="https://github.com/actions/setup-go/commit/f90673ad641a19d0689fba58b5c79adc54be5d81"><code>f90673a</code></a> Merge pull request <a href="https://redirect.github.com/actions/setup-go/issues/1">#1</a> from artemgavrilov/caching-docs-improvement</li>
<li><a href="https://github.com/actions/setup-go/commit/801823434715e45aa48743a38182d33b33675d02"><code>8018234</code></a> Improve documentation regarding dependencies cachin</li>
<li><a href="https://github.com/actions/setup-go/commit/d085b4fe57b6e17262cbebc67b4d2d341d8938c2"><code>d085b4f</code></a> Merge pull request <a href="https://redirect.github.com/actions/setup-go/issues/411">#411</a> from galargh/fix/windows-hostedtoolcache</li>
<li>Additional commits viewable in <a href="https://github.com/actions/setup-go/compare/v4...v5">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-go&package-manager=github_actions&previous-version=4&new-version=5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.


Patch:
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 6f64baede..eeaa2e3ee 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -54,7 +54,7 @@ jobs:
     - name: Checkout repository
       uses: actions/checkout@v4
     - name: Set up Go 1.x
-      uses: actions/setup-go@v4
+      uses: actions/setup-go@v5
       with:
         go-version: '>=1.20'
         check-latest: true
@@ -62,7 +62,7 @@ jobs:
 
     # Initializes the CodeQL tools for scanning.
     - name: Initialize CodeQL
-      uses: github/codeql-action/init@v3
+      uses: github/codeql-action/init@v2
       with:
         languages: ${{ matrix.language }}
         # If you wish to specify custom queries, you can do so here or in a config file.
@@ -85,4 +85,4 @@ jobs:
         $(go env GOPATH)/bin/goveralls -coverprofile=profile.cov -service=github
     
     - name: Perform CodeQL Analysis
-      uses: github/codeql-action/analyze@v3
+      uses: github/codeql-action/analyze@v2
diff --git a/.github/workflows/codespell.yaml b/.github/workflows/codespell.yaml
index 9d90bbe2c..99c1668a8 100644
--- a/.github/workflows/codespell.yaml
+++ b/.github/workflows/codespell.yaml
@@ -12,7 +12,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Harden Runner
-        uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
+        uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1
         with:
           egress-policy: audit
 
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
index 4f4aad215..2f69bbec5 100644
--- a/.github/workflows/lint.yaml
+++ b/.github/workflows/lint.yaml
@@ -7,19 +7,18 @@ on:
 
 jobs:
   Lint:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Setup Golang
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
-          go-version: '1.20'
+          go-version: '>=1.20'
           check-latest: true
       - name: golangci-lint
         uses: golangci/golangci-lint-action@v3
         with:
           # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
-          version: v1.51.2
-          args: -v --concurrency=1
+          version: v1.51
           only-new-issues: true
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index d60f740eb..657be15ce 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -25,7 +25,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Setup Golang
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
           go-version-file: go.mod
       - name: Build binary
@@ -33,7 +33,7 @@ jobs:
           rm -rf ./bin
           ARCH=${{ matrix.arch }} make bin/azure-cloud-controller-manager
           mv bin/azure-cloud-controller-manager bin/azure-cloud-controller-manager-${{ matrix.os }}-${{ matrix.arch }}
-      - uses: actions/upload-artifact@v4
+      - uses: actions/upload-artifact@v3
         with:
           name: cloud-controller-manager-${{ matrix.os }}-${{ matrix.arch }}
           path: bin/azure-cloud-controller-manager-${{ matrix.os }}-${{ matrix.arch }}
@@ -56,7 +56,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Setup Golang
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
           go-version-file: go.mod
       - name: Build binary for linux
@@ -73,13 +73,13 @@ jobs:
           mv bin/azure-cloud-node-manager-${{ matrix.arch }}.exe bin/azure-cloud-node-manager-${{ matrix.os }}-${{ matrix.arch }}.exe
       - name: Upload artifact for linux
         if: matrix.os == 'linux'
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v3
         with:
           name: cloud-node-manager-${{ matrix.os }}-${{ matrix.arch }}
           path: bin/azure-cloud-node-manager-${{ matrix.os }}-${{ matrix.arch }}
       - name: Upload artifact for windows
         if: matrix.os == 'windows'
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v3
         with:
           name: cloud-node-manager-${{ matrix.os }}-${{ matrix.arch }}
           path: bin/azure-cloud-node-manager-${{ matrix.os }}-${{ matrix.arch }}.exe
@@ -102,7 +102,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: Setup Golang
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
           go-version-file: go.mod
       - name: Build binary for linux
@@ -119,13 +119,13 @@ jobs:
           mv bin/azure-acr-credential-provider.exe bin/azure-acr-credential-provider-${{ matrix.os }}-${{ matrix.arch }}.exe
       - name: Upload artifact for linux
         if: matrix.os == 'linux'
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v3
         with:
           name: acr-credential-provider-${{ matrix.os }}-${{ matrix.arch }}
           path: bin/azure-acr-credential-provider-${{ matrix.os }}-${{ matrix.arch }}
       - name: Upload artifact for windows
         if: matrix.os == 'windows'
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@v3
         with:
           name: acr-credential-provider-${{ matrix.os }}-${{ matrix.arch }}
           path: bin/azure-acr-credential-provider-${{ matrix.os }}-${{ matrix.arch }}.exe
@@ -147,7 +147,7 @@ jobs:
           ref: documentation
           fetch-depth: 0
       - name: Setup Golang
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
           go-version-file: go.mod
       - name: Generate release note
@@ -156,7 +156,7 @@ jobs:
         run: |
           ./hack/generate-release-note.sh ${GITHUB_REF_NAME} release-notes.md true
       - name: Download artifacts
-        uses: actions/download-artifact@v4
+        uses: actions/download-artifact@v3
         with:
           path: ./artifacts
       - name: Publish release
@@ -168,7 +168,7 @@ jobs:
             ./artifacts/cloud-controller-manager-*-*/*
             ./artifacts/acr-credential-provider-*-*/*
       - name: Update site release note
-        uses: peter-evans/create-pull-request@v6
+        uses: peter-evans/create-pull-request@v5
         with:
           branch: doc/release-note-${{github.ref_name}}
           delete-branch: true
diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml
index 8494fa8a8..f6fe67286 100644
--- a/.github/workflows/trivy.yaml
+++ b/.github/workflows/trivy.yaml
@@ -26,7 +26,7 @@ jobs:
       - name: Checkout code
         uses: actions/checkout@v4
       - name: Set up Go 1.x
-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
         with:
           go-version: '>=1.20'
           check-latest: true
diff --git a/.github/workflows/update-vendor-license.yml b/.github/workflows/update-vendor-license.yml
index af084679e..a1b05c923 100644
--- a/.github/workflows/update-vendor-license.yml
+++ b/.github/workflows/update-vendor-license.yml
@@ -37,14 +37,14 @@ jobs:
 
     steps:
     - name: Harden Runner
-      uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0
+      uses: step-security/harden-runner@eb238b55efaa70779f274895e782ed17c84f2895 # v2.6.1
       with:
         egress-policy: audit
 
     - name: Checkout repository
       uses: actions/checkout@v4 # v3.5.3
     - name: Set up Go 1.x
-      uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+      uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
       with:
         go-version: '>=1.20'
         check-latest: true
@@ -54,7 +54,7 @@ jobs:
       run: |
         make update
     - name: Create Pull Request
-      uses: peter-evans/create-pull-request@v6
+      uses: peter-evans/create-pull-request@v5
       with:
         branch: doc/update-vendorlicense-${{github.ref_name}}
         delete-branch: true
diff --git a/.golangci.yml b/.golangci.yml
index e35d54864..34bd705e1 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -11,6 +11,7 @@ linters:
     - goconst
     - gofmt
     - goimports
+    - revive
     - gosec
     - gosimple
     - govet
diff --git a/.pipelines/ccm-image.yml b/.pipelines/ccm-image.yml
index a5abe3c44..65745eb07 100644
--- a/.pipelines/ccm-image.yml
+++ b/.pipelines/ccm-image.yml
@@ -1,7 +1,7 @@
 steps:
   - task: GoTool@0
     inputs:
-      version: '1.21.5'
+      version: '1.19'
   - bash: |
       git show --stat
       echo $REGISTRY_PASSWORD | docker login $REGISTRY_URL -u $REGISTRY_USERNAME --password-stdin
diff --git a/.pipelines/cnm-image.yml b/.pipelines/cnm-image.yml
index 9bba48aae..f663d25e6 100644
--- a/.pipelines/cnm-image.yml
+++ b/.pipelines/cnm-image.yml
@@ -1,7 +1,7 @@
 steps:
   - task: GoTool@0
     inputs:
-      version: '1.21.5'
+      version: '1.19'
   - bash: |
       git show --stat
       echo $REGISTRY_PASSWORD | docker login $REGISTRY_URL -u $REGISTRY_USERNAME --password-stdin
diff --git a/.pipelines/templates/customconfiguration-k8s.json b/.pipelines/templates/customconfiguration-k8s.json
index 106daa985..af8b6be79 100644
--- a/.pipelines/templates/customconfiguration-k8s.json
+++ b/.pipelines/templates/customconfiguration-k8s.json
@@ -12,6 +12,7 @@
     "kube-controller-manager": {
         "image": "{CUSTOM_KCM_IMAGE}",
         "config": {
+            "--pod-eviction-timeout": "4m",
             "--profiling": "true"
         }
     },
diff --git a/.pipelines/templates/customconfiguration.json b/.pipelines/templates/customconfiguration.json
index 0e842973e..01217d23c 100644
--- a/.pipelines/templates/customconfiguration.json
+++ b/.pipelines/templates/customconfiguration.json
@@ -3,18 +3,18 @@
     "kube-cloud-controller-manager": {
       "image": "{CUSTOM_CCM_IMAGE}",
       "config": {
-        "--min-resync-period": "10h0m0s",
-        "--profiling": "false",
-        "--v": "6"
+          "--min-resync-period": "10h0m0s",
+          "--profiling": "false",
+          "--v": "6"
       }
     },
     "kube-cloud-node-manager": {
       "image": "{CUSTOM_CNM_IMAGE}",
       "config": {
-        "--node-name": "$(NODE_NAME)",
-        "--kube-api-burst": "50",
-        "--kube-api-qps": "50"
+          "--node-name": "$(NODE_NAME)",
+          "kube-api-burst": "50",
+          "kube-api-qps": "50"
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/cmd/acr-credential-provider/plugin.go b/cmd/acr-credential-provider/plugin.go
index c3beeecdd..1a9a34bb0 100644
--- a/cmd/acr-credential-provider/plugin.go
+++ b/cmd/acr-credential-provider/plugin.go
@@ -29,7 +29,7 @@ import (
 	"k8s.io/apimachinery/pkg/runtime/serializer"
 	"k8s.io/apimachinery/pkg/runtime/serializer/json"
 	"k8s.io/kubelet/pkg/apis/credentialprovider/install"
-	v1 "k8s.io/kubelet/pkg/apis/credentialprovider/v1"
+	"k8s.io/kubelet/pkg/apis/credentialprovider/v1alpha1"
 
 	"sigs.k8s.io/cloud-provider-azure/pkg/credentialprovider"
 )
@@ -55,7 +55,7 @@ func NewCredentialProvider(plugin credentialprovider.CredentialProvider) *ExecPl
 }
 
 // Run executes the credential provider plugin. Required information for the plugin request (in
-// the form of v1.CredentialProviderRequest) is provided via stdin from the kubelet.
+// the form of v1alpha1.CredentialProviderRequest) is provided via stdin from the kubelet.
 // The CredentialProviderResponse, containing the username/password required for pulling
 // the provided image, will be sent back to the kubelet via stdout.
 func (e *ExecPlugin) Run(ctx context.Context) error {
@@ -73,7 +73,7 @@ func (e *ExecPlugin) runPlugin(ctx context.Context, r io.Reader, w io.Writer, ar
 		return err
 	}
 
-	if gvk.GroupVersion() != v1.SchemeGroupVersion {
+	if gvk.GroupVersion() != v1alpha1.SchemeGroupVersion {
 		return fmt.Errorf("group version %s is not supported", gvk.GroupVersion())
 	}
 
@@ -109,8 +109,8 @@ func (e *ExecPlugin) runPlugin(ctx context.Context, r io.Reader, w io.Writer, ar
 	return nil
 }
 
-func decodeRequest(data []byte) (*v1.CredentialProviderRequest, error) {
-	obj, gvk, err := codecs.UniversalDecoder(v1.SchemeGroupVersion).Decode(data, nil, nil)
+func decodeRequest(data []byte) (*v1alpha1.CredentialProviderRequest, error) {
+	obj, gvk, err := codecs.UniversalDecoder(v1alpha1.SchemeGroupVersion).Decode(data, nil, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -119,11 +119,11 @@ func decodeRequest(data []byte) (*v1.CredentialProviderRequest, error) {
 		return nil, fmt.Errorf("kind was %q, expected CredentialProviderRequest", gvk.Kind)
 	}
 
-	if gvk.Group != v1.GroupName {
-		return nil, fmt.Errorf("group was %q, expected %s", gvk.Group, v1.GroupName)
+	if gvk.Group != v1alpha1.GroupName {
+		return nil, fmt.Errorf("group was %q, expected %s", gvk.Group, v1alpha1.GroupName)
 	}
 
-	request, ok := obj.(*v1.CredentialProviderRequest)
+	request, ok := obj.(*v1alpha1.CredentialProviderRequest)
 	if !ok {
 		return nil, fmt.Errorf("unable to convert %T to *CredentialProviderRequest", obj)
 	}
@@ -131,14 +131,14 @@ func decodeRequest(data []byte) (*v1.CredentialProviderRequest, error) {
 	return request, nil
 }
 
-func encodeResponse(response *v1.CredentialProviderResponse) ([]byte, error) {
+func encodeResponse(response *v1alpha1.CredentialProviderResponse) ([]byte, error) {
 	mediaType := "application/json"
 	info, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), mediaType)
 	if !ok {
 		return nil, fmt.Errorf("unsupported media type %q", mediaType)
 	}
 
-	encoder := codecs.EncoderForVersion(info.Serializer, v1.SchemeGroupVersion)
+	encoder := codecs.EncoderForVersion(info.Serializer, v1alpha1.SchemeGroupVersion)
 	data, err := runtime.Encode(encoder, response)
 	if err != nil {
 		return nil, fmt.Errorf("failed to encode response: %w", err)
diff --git a/go.mod b/go.mod
index e427642e0..c7757eb41 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,6 @@ require (
 	github.com/Azure/go-autorest/autorest v0.11.29
 	github.com/Azure/go-autorest/autorest/adal v0.9.23
 	github.com/Azure/go-autorest/autorest/mocks v0.4.2
-	github.com/Azure/go-autorest/autorest/to v0.4.0
 	github.com/Azure/go-autorest/tracing v0.6.0
 	github.com/evanphx/json-patch v5.7.0+incompatible
 	github.com/fsnotify/fsnotify v1.7.0
@@ -19,8 +18,8 @@ require (
 	github.com/spf13/cobra v1.8.0
 	github.com/spf13/pflag v1.0.5
 	github.com/stretchr/testify v1.8.4
-	golang.org/x/crypto v0.18.0
-	golang.org/x/sys v0.16.0
+	golang.org/x/crypto v0.16.0
+	golang.org/x/sys v0.15.0
 	golang.org/x/text v0.14.0
 	k8s.io/api v0.26.11
 	k8s.io/apimachinery v0.26.11
@@ -46,6 +45,7 @@ require (
 	github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
 	github.com/Azure/go-autorest v14.2.0+incompatible // indirect
 	github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
+	github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
 	github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
 	github.com/Azure/go-autorest/logger v0.2.1 // indirect
 	github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0 // indirect
@@ -113,7 +113,7 @@ require (
 	golang.org/x/net v0.17.0 // indirect
 	golang.org/x/oauth2 v0.11.0 // indirect
 	golang.org/x/sync v0.3.0 // indirect
-	golang.org/x/term v0.16.0 // indirect
+	golang.org/x/term v0.15.0 // indirect
 	golang.org/x/time v0.3.0 // indirect
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect
diff --git a/go.sum b/go.sum
index a9343ccc7..686afd780 100644
--- a/go.sum
+++ b/go.sum
@@ -603,8 +603,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
-golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
+golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -748,13 +748,13 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
-golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
-golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
+golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/pkg/consts/consts.go b/pkg/consts/consts.go
index b058f3681..060041db0 100644
--- a/pkg/consts/consts.go
+++ b/pkg/consts/consts.go
@@ -113,8 +113,8 @@ const (
 	// StrRawVersion is the raw version string
 	StrRawVersion string = "raw"
 
-	// ProvisionStateDeleting indicates VMSS instances are in Deleting state.
-	ProvisionStateDeleting = "Deleting"
+	// VirtualMachineScaleSetsDeallocating indicates VMSS instances are in Deallocating state.
+	VirtualMachineScaleSetsDeallocating = "Deallocating"
 	// VmssMachineIDTemplate is the vmss manchine ID template
 	VmssMachineIDTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachineScaleSets/%s/virtualMachines/%s"
 	// VMSetCIDRIPV4TagKey specifies the node ipv4 CIDR mask of the instances on the VMSS or VMAS
@@ -130,12 +130,6 @@ const (
 	VMSetNamesSharingPrimarySLBDelimiter = ","
 	// PremiumV2_LRS type for Azure Disk
 	PremiumV2LRS = compute.DiskStorageAccountTypes("PremiumV2_LRS")
-	// ProvisioningStateDeleting ...
-	ProvisioningStateDeleting = "Deleting"
-	// ProvisioningStateSucceeded ...
-	ProvisioningStateSucceeded = "Succeeded"
-	// ProvisioningStateUnknown is the unknown provisioning state
-	ProvisioningStateUnknown = "Unknown"
 )
 
 // cache
@@ -377,8 +371,6 @@ const (
 	FrontendIPConfigNameMaxLength = 80
 	// LoadBalancerRuleNameMaxLength is the max length of the load balancing rule
 	LoadBalancerRuleNameMaxLength = 80
-	// PIPPrefixNameMaxLength is the max length of the PIP prefix name
-	PIPPrefixNameMaxLength = 80
 	// IPFamilySuffixLength is the length of suffix length of IP family ("-IPv4", "-IPv6")
 	IPFamilySuffixLength = 5
 
@@ -550,13 +542,3 @@ const (
 const (
 	VMSSTagForBatchOperation = "aks-managed-coordination"
 )
-
-// VM power state
-const (
-	VMPowerStatePrefix       = "PowerState/"
-	VMPowerStateStopped      = "stopped"
-	VMPowerStateStopping     = "stopping"
-	VMPowerStateDeallocated  = "deallocated"
-	VMPowerStateDeallocating = "deallocating"
-	VMPowerStateUnknown      = "unknown"
-)
diff --git a/pkg/credentialprovider/azure_credentials.go b/pkg/credentialprovider/azure_credentials.go
index 59fc908ef..c051560fc 100644
--- a/pkg/credentialprovider/azure_credentials.go
+++ b/pkg/credentialprovider/azure_credentials.go
@@ -32,7 +32,7 @@ import (
 	"github.com/Azure/go-autorest/autorest/azure"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/klog/v2"
-	v1 "k8s.io/kubelet/pkg/apis/credentialprovider/v1"
+	"k8s.io/kubelet/pkg/apis/credentialprovider/v1alpha1"
 )
 
 // Refer: https://github.com/kubernetes/kubernetes/blob/master/pkg/credentialprovider/azure/azure_credentials.go
@@ -50,7 +50,7 @@ var (
 // CredentialProvider is an interface implemented by the kubelet credential provider plugin to fetch
 // the username/password based on the provided image name.
 type CredentialProvider interface {
-	GetCredentials(ctx context.Context, image string, args []string) (response *v1.CredentialProviderResponse, err error)
+	GetCredentials(ctx context.Context, image string, args []string) (response *v1alpha1.CredentialProviderResponse, err error)
 }
 
 // acrProvider implements the credential provider interface for Azure Container Registry.
@@ -93,21 +93,21 @@ func newAcrProviderFromConfigReader(configReader io.Reader) (*acrProvider, error
 	}, nil
 }
 
-func (a *acrProvider) GetCredentials(ctx context.Context, image string, args []string) (*v1.CredentialProviderResponse, error) {
+func (a *acrProvider) GetCredentials(ctx context.Context, image string, args []string) (*v1alpha1.CredentialProviderResponse, error) {
 	loginServer := a.parseACRLoginServerFromImage(image)
 	if loginServer == "" {
 		klog.V(2).Infof("image(%s) is not from ACR, return empty authentication", image)
-		return &v1.CredentialProviderResponse{
-			CacheKeyType:  v1.RegistryPluginCacheKeyType,
+		return &v1alpha1.CredentialProviderResponse{
+			CacheKeyType:  v1alpha1.RegistryPluginCacheKeyType,
 			CacheDuration: &metav1.Duration{Duration: 0},
-			Auth:          map[string]v1.AuthConfig{},
+			Auth:          map[string]v1alpha1.AuthConfig{},
 		}, nil
 	}
 
-	response := &v1.CredentialProviderResponse{
-		CacheKeyType:  v1.RegistryPluginCacheKeyType,
+	response := &v1alpha1.CredentialProviderResponse{
+		CacheKeyType:  v1alpha1.RegistryPluginCacheKeyType,
 		CacheDuration: &metav1.Duration{Duration: defaultCacheTTL},
-		Auth: map[string]v1.AuthConfig{
+		Auth: map[string]v1alpha1.AuthConfig{
 			// empty username and password for anonymous ACR access
 			"*.azurecr.*": {
 				Username: "",
@@ -123,14 +123,14 @@ func (a *acrProvider) GetCredentials(ctx context.Context, image string, args []s
 			return nil, err
 		}
 
-		response.Auth[loginServer] = v1.AuthConfig{
+		response.Auth[loginServer] = v1alpha1.AuthConfig{
 			Username: username,
 			Password: password,
 		}
 	} else {
 		// Add our entry for each of the supported container registry URLs
 		for _, url := range containerRegistryUrls {
-			cred := v1.AuthConfig{
+			cred := v1alpha1.AuthConfig{
 				Username: a.config.AADClientID,
 				Password: a.config.AADClientSecret,
 			}
@@ -150,7 +150,7 @@ func (a *acrProvider) GetCredentials(ctx context.Context, image string, args []s
 			}
 
 			if !hasBeenAdded {
-				cred := v1.AuthConfig{
+				cred := v1alpha1.AuthConfig{
 					Username: a.config.AADClientID,
 					Password: a.config.AADClientSecret,
 				}
diff --git a/pkg/provider/azure_backoff.go b/pkg/provider/azure_backoff.go
index c672ce574..e5bf0db87 100644
--- a/pkg/provider/azure_backoff.go
+++ b/pkg/provider/azure_backoff.go
@@ -557,7 +557,7 @@ func (az *Cloud) CreateOrUpdateVMSS(resourceGroupName string, VMScaleSetName str
 		klog.Errorf("CreateOrUpdateVMSS: error getting vmss(%s): %v", VMScaleSetName, rerr)
 		return rerr
 	}
-	if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.ProvisionStateDeleting) {
+	if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 		klog.V(3).Infof("CreateOrUpdateVMSS: found vmss %s being deleted, skipping", VMScaleSetName)
 		return nil
 	}
diff --git a/pkg/provider/azure_instances.go b/pkg/provider/azure_instances.go
index 353cc289f..55e7ea3f2 100644
--- a/pkg/provider/azure_instances.go
+++ b/pkg/provider/azure_instances.go
@@ -35,6 +35,12 @@ import (
 )
 
 const (
+	vmPowerStatePrefix       = "PowerState/"
+	vmPowerStateStopped      = "stopped"
+	vmPowerStateDeallocated  = "deallocated"
+	vmPowerStateDeallocating = "deallocating"
+	vmPowerStateUnknown      = "unknown"
+
 	// nodeNameEnvironmentName is the environment variable name for getting node name.
 	// It is only used for out-of-tree cloud provider.
 	nodeNameEnvironmentName = "NODE_NAME"
@@ -292,7 +298,7 @@ func (az *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID st
 
 	status := strings.ToLower(powerStatus)
 	provisioningSucceeded := strings.EqualFold(strings.ToLower(provisioningState), strings.ToLower(string(compute.ProvisioningStateSucceeded)))
-	return provisioningSucceeded && (status == consts.VMPowerStateStopped || status == consts.VMPowerStateDeallocated || status == consts.VMPowerStateDeallocating), nil
+	return provisioningSucceeded && (status == vmPowerStateStopped || status == vmPowerStateDeallocated || status == vmPowerStateDeallocating), nil
 }
 
 // InstanceShutdown returns true if the instance is shutdown according to the cloud provider.
diff --git a/pkg/provider/azure_loadbalancer.go b/pkg/provider/azure_loadbalancer.go
index 2bf798f49..2af8fcea4 100644
--- a/pkg/provider/azure_loadbalancer.go
+++ b/pkg/provider/azure_loadbalancer.go
@@ -253,7 +253,7 @@ func (az *Cloud) UpdateLoadBalancer(ctx context.Context, clusterName string, ser
 	}
 	if !serviceExists {
 		isOperationSucceeded = true
-		klog.V(2).Infof("UpdateLoadBalancer: skipping service %s because service is going to be deleted", serviceName)
+		klog.V(2).Infof("UpdateLoadBalancer: skipping service %s because service is going to be deleted", service.Name)
 		return nil
 	}
 
@@ -2411,14 +2411,7 @@ func (az *Cloud) reconcileSecurityGroup(clusterName string, service *v1.Service,
 		sourceRanges          = accessControl.SourceRanges()
 		allowedServiceTags    = accessControl.AllowedServiceTags()
 		allowedIPRanges       = accessControl.AllowedIPRanges()
-		sourceAddressPrefixes = func() []string {
-			// AKS v1.26 does not support dual stack, so it returns the single stack source ranges instead.
-			if service.Spec.IPFamilies[0] == v1.IPv4Protocol {
-				return accessControl.IPV4Sources()
-			} else {
-				return accessControl.IPV6Sources()
-			}
-		}()
+		sourceAddressPrefixes = accessControl.IPV4Sources()
 	)
 
 	if len(sourceRanges) != 0 && len(allowedIPRanges) != 0 {
diff --git a/pkg/provider/azure_standard.go b/pkg/provider/azure_standard.go
index c5a1d520f..26dd409f4 100644
--- a/pkg/provider/azure_standard.go
+++ b/pkg/provider/azure_standard.go
@@ -44,7 +44,6 @@ import (
 
 	azcache "sigs.k8s.io/cloud-provider-azure/pkg/cache"
 	"sigs.k8s.io/cloud-provider-azure/pkg/metrics"
-	vmutil "sigs.k8s.io/cloud-provider-azure/pkg/util/vm"
 )
 
 var (
@@ -254,6 +253,10 @@ func getIPConfigByIPFamily(nic network.Interface, IPv6 bool) (*network.Interface
 	return nil, fmt.Errorf("failed to determine the ipconfig(IPv6=%v). nicname=%q", IPv6, pointer.StringDeref(nic.Name, ""))
 }
 
+func isInternalLoadBalancer(lb *network.LoadBalancer) bool {
+	return strings.HasSuffix(*lb.Name, consts.InternalLoadBalancerNameSuffix)
+}
+
 // getBackendPoolName the LB BackendPool name for a service.
 // to ensure backward and forward compat:
 // SingleStack -v4 (pre v1.16) => BackendPool name == clusterName
@@ -329,15 +332,7 @@ func (az *Cloud) getPublicIPName(clusterName string, service *v1.Service) string
 		}
 		pipName = fmt.Sprintf("%s-%s", pipName, prefixName)
 	}
-
-	pipNameSegment := pipName
-	maxLength := consts.PIPPrefixNameMaxLength - consts.IPFamilySuffixLength
-	if len(pipName) > maxLength {
-		pipNameSegment = pipNameSegment[:maxLength]
-		klog.V(6).Infof("original PIP name is lengthy %q, truncate it to %q", pipName, pipNameSegment)
-	}
-
-	return pipNameSegment
+	return pipName
 }
 
 func (az *Cloud) serviceOwnsRule(service *v1.Service, rule string) bool {
@@ -576,13 +571,19 @@ func (as *availabilitySet) GetPowerStatusByNodeName(name string) (powerState str
 		return powerState, err
 	}
 
-	if vm.InstanceView != nil {
-		return vmutil.GetVMPowerState(pointer.StringDeref(vm.Name, ""), vm.InstanceView.Statuses), nil
+	if vm.InstanceView != nil && vm.InstanceView.Statuses != nil {
+		statuses := *vm.InstanceView.Statuses
+		for _, status := range statuses {
+			state := pointer.StringDeref(status.Code, "")
+			if strings.HasPrefix(state, vmPowerStatePrefix) {
+				return strings.TrimPrefix(state, vmPowerStatePrefix), nil
+			}
+		}
 	}
 
 	// vm.InstanceView or vm.InstanceView.Statuses are nil when the VM is under deleting.
 	klog.V(3).Infof("InstanceView for node %q is nil, assuming it's deleting", name)
-	return consts.VMPowerStateUnknown, nil
+	return vmPowerStateUnknown, nil
 }
 
 // GetProvisioningStateByNodeName returns the provisioningState for the specified node.
diff --git a/pkg/provider/azure_utils.go b/pkg/provider/azure_utils.go
index 39595ceed..f307b6e26 100644
--- a/pkg/provider/azure_utils.go
+++ b/pkg/provider/azure_utils.go
@@ -386,7 +386,3 @@ func getResourceGroupAndNameFromNICID(ipConfigurationID string) (string, string,
 	}
 	return nicResourceGroup, nicName, nil
 }
-
-func isInternalLoadBalancer(lb *network.LoadBalancer) bool {
-	return strings.HasSuffix(strings.ToLower(*lb.Name), consts.InternalLoadBalancerNameSuffix)
-}
diff --git a/pkg/provider/azure_vmss.go b/pkg/provider/azure_vmss.go
index d19e34d3c..826686ef6 100644
--- a/pkg/provider/azure_vmss.go
+++ b/pkg/provider/azure_vmss.go
@@ -39,7 +39,6 @@ import (
 	"sigs.k8s.io/cloud-provider-azure/pkg/consts"
 	"sigs.k8s.io/cloud-provider-azure/pkg/metrics"
 	"sigs.k8s.io/cloud-provider-azure/pkg/provider/virtualmachine"
-	vmutil "sigs.k8s.io/cloud-provider-azure/pkg/util/vm"
 )
 
 var (
@@ -281,14 +280,20 @@ func (ss *ScaleSet) GetPowerStatusByNodeName(name string) (powerState string, er
 
 	if vm.IsVirtualMachineScaleSetVM() {
 		v := vm.AsVirtualMachineScaleSetVM()
-		if v.InstanceView != nil {
-			return vmutil.GetVMPowerState(pointer.StringDeref(v.Name, ""), v.InstanceView.Statuses), nil
+		if v.InstanceView != nil && v.InstanceView.Statuses != nil {
+			statuses := *v.InstanceView.Statuses
+			for _, status := range statuses {
+				state := pointer.StringDeref(status.Code, "")
+				if strings.HasPrefix(state, vmPowerStatePrefix) {
+					return strings.TrimPrefix(state, vmPowerStatePrefix), nil
+				}
+			}
 		}
 	}
 
 	// vm.InstanceView or vm.InstanceView.Statuses are nil when the VM is under deleting.
 	klog.V(3).Infof("InstanceView for node %q is nil, assuming it's deleting", name)
-	return consts.VMPowerStateUnknown, nil
+	return vmPowerStateUnknown, nil
 }
 
 // GetProvisioningStateByNodeName returns the provisioningState for the specified node.
@@ -1060,8 +1065,6 @@ func getPrimaryIPConfigFromVMSSNetworkConfig(config *compute.VirtualMachineScale
 // EnsureHostInPool ensures the given VM's Primary NIC's Primary IP Configuration is
 // participating in the specified LoadBalancer Backend Pool, which returns (resourceGroup, vmasName, instanceID, vmssVM, error).
 func (ss *ScaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeName, backendPoolID string, vmSetNameOfLB string) (string, string, string, *compute.VirtualMachineScaleSetVM, error) {
-	logger := klog.Background().WithName("EnsureHostInPool").
-		WithValues("nodeName", nodeName, "backendPoolID", backendPoolID, "vmSetNameOfLB", vmSetNameOfLB)
 	vmName := mapNodeNameToVMName(nodeName)
 	vm, err := ss.getVmssVM(vmName, azcache.CacheReadTypeDefault)
 	if err != nil {
@@ -1070,20 +1073,13 @@ func (ss *ScaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeNam
 			return "", "", "", nil, nil
 		}
 
-		logger.Error(err, "failed to get vmss vm", "vmName", vmName)
+		klog.Errorf("EnsureHostInPool: failed to get VMSS VM %s: %v", vmName, err)
 		if !errors.Is(err, ErrorNotVmssInstance) {
 			return "", "", "", nil, err
 		}
 	}
-	statuses := vm.GetInstanceViewStatus()
-	vmPowerState := vmutil.GetVMPowerState(vm.Name, statuses)
-	provisioningState := vm.GetProvisioningState()
-	if vmutil.IsNotActiveVMState(provisioningState, vmPowerState) {
-		logger.V(2).Info("skip updating the node because it is not in an active state", "vmName", vmName, "provisioningState", provisioningState, "vmPowerState", vmPowerState)
-		return "", "", "", nil, nil
-	}
 
-	logger.V(2).Info("ensuring the vmss node in LB backendpool", "vmss name", vm.VMSSName)
+	klog.V(2).Infof("ensuring node %q of scaleset %q in LB backendpool %q", nodeName, vm.VMSSName, backendPoolID)
 
 	// Check scale set name:
 	// - For basic SKU load balancer, return nil if the node's scale set is mismatched with vmSetNameOfLB.
@@ -1108,13 +1104,14 @@ func (ss *ScaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeNam
 	}
 
 	if vmSetNameOfLB != "" && needCheck && !strings.EqualFold(vmSetNameOfLB, vm.VMSSName) {
-		logger.V(3).Info("skips the node %s because it is not in the ScaleSet %s", vmName, vmSetNameOfLB)
+		klog.V(3).Infof("EnsureHostInPool skips node %s because it is not in the ScaleSet %s", vmName, vmSetNameOfLB)
 		return "", "", "", nil, nil
 	}
 
 	// Find primary network interface configuration.
 	if vm.VirtualMachineScaleSetVMProperties.NetworkProfileConfiguration.NetworkInterfaceConfigurations == nil {
-		logger.V(4).Info("cannot obtain the primary network interface configuration, of the vm, probably because the vm's being deleted", "vmName", vmName)
+		klog.V(4).Infof("EnsureHostInPool: cannot obtain the primary network interface configuration, of vm %s, "+
+			"probably because the vm's being deleted", vmName)
 		return "", "", "", nil, nil
 	}
 
@@ -1164,7 +1161,7 @@ func (ss *ScaleSet) EnsureHostInPool(service *v1.Service, nodeName types.NodeNam
 			return "", "", "", nil, err
 		}
 		if !isSameLB {
-			logger.V(4).Info("The node has already been added to an LB, omit adding it to a new one", "lbName", oldLBName)
+			klog.V(4).Infof("Node %q has already been added to LB %q, omit adding it to a new one", nodeName, oldLBName)
 			return "", "", "", nil, nil
 		}
 	}
@@ -1271,7 +1268,7 @@ func (ss *ScaleSet) ensureVMSSInPool(service *v1.Service, nodes []*v1.Node, back
 
 		// When vmss is being deleted, CreateOrUpdate API would report "the vmss is being deleted" error.
 		// Since it is being deleted, we shouldn't send more CreateOrUpdate requests for it.
-		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.ProvisionStateDeleting) {
+		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 			klog.V(3).Infof("ensureVMSSInPool: found vmss %s being deleted, skipping", vmssName)
 			continue
 		}
@@ -1543,7 +1540,6 @@ func (ss *ScaleSet) EnsureHostsInPool(service *v1.Service, nodes []*v1.Node, bac
 // ensureBackendPoolDeletedFromNode ensures the loadBalancer backendAddressPools deleted
 // from the specified node, which returns (resourceGroup, vmasName, instanceID, vmssVM, error).
 func (ss *ScaleSet) ensureBackendPoolDeletedFromNode(nodeName, backendPoolID string) (string, string, string, *compute.VirtualMachineScaleSetVM, error) {
-	logger := klog.Background().WithName("ensureBackendPoolDeletedFromNode").WithValues("nodeName", nodeName, "backendPoolID", backendPoolID)
 	vm, err := ss.getVmssVM(nodeName, azcache.CacheReadTypeDefault)
 	if err != nil {
 		if errors.Is(err, cloudprovider.InstanceNotFound) {
@@ -1554,14 +1550,6 @@ func (ss *ScaleSet) ensureBackendPoolDeletedFromNode(nodeName, backendPoolID str
 		return "", "", "", nil, err
 	}
 
-	statuses := vm.GetInstanceViewStatus()
-	vmPowerState := vmutil.GetVMPowerState(vm.Name, statuses)
-	provisioningState := vm.GetProvisioningState()
-	if vmutil.IsNotActiveVMState(provisioningState, vmPowerState) {
-		logger.V(2).Info("skip updating the node because it is not in an active state", "provisioningState", provisioningState, "vmPowerState", vmPowerState)
-		return "", "", "", nil, nil
-	}
-
 	// Find primary network interface configuration.
 	if vm.VirtualMachineScaleSetVMProperties.NetworkProfileConfiguration.NetworkInterfaceConfigurations == nil {
 		klog.V(4).Infof("ensureBackendPoolDeletedFromNode: cannot obtain the primary network interface configuration, of vm %s, "+
@@ -1733,7 +1721,7 @@ func (ss *ScaleSet) ensureBackendPoolDeletedFromVmssUniform(backendPoolID, vmSet
 
 			// When vmss is being deleted, CreateOrUpdate API would report "the vmss is being deleted" error.
 			// Since it is being deleted, we shouldn't send more CreateOrUpdate requests for it.
-			if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.ProvisionStateDeleting) {
+			if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 				klog.V(3).Infof("ensureBackendPoolDeletedFromVMSS: found vmss %s being deleted, skipping", pointer.StringDeref(vmss.Name, ""))
 				return true
 			}
@@ -2115,7 +2103,7 @@ func (ss *ScaleSet) EnsureBackendPoolDeletedFromVMSets(vmssNamesMap map[string]b
 
 		// When vmss is being deleted, CreateOrUpdate API would report "the vmss is being deleted" error.
 		// Since it is being deleted, we shouldn't send more CreateOrUpdate requests for it.
-		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.ProvisionStateDeleting) {
+		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 			klog.V(3).Infof("EnsureBackendPoolDeletedFromVMSets: found vmss %s being deleted, skipping", vmssName)
 			continue
 		}
diff --git a/pkg/provider/azure_vmssflex.go b/pkg/provider/azure_vmssflex.go
index 4174dccdf..fa8f343b9 100644
--- a/pkg/provider/azure_vmssflex.go
+++ b/pkg/provider/azure_vmssflex.go
@@ -26,7 +26,6 @@ import (
 
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-03-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2022-07-01/network"
-
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/types"
 	utilerrors "k8s.io/apimachinery/pkg/util/errors"
@@ -38,7 +37,6 @@ import (
 	azcache "sigs.k8s.io/cloud-provider-azure/pkg/cache"
 	"sigs.k8s.io/cloud-provider-azure/pkg/consts"
 	"sigs.k8s.io/cloud-provider-azure/pkg/metrics"
-	vmutil "sigs.k8s.io/cloud-provider-azure/pkg/util/vm"
 )
 
 var (
@@ -271,13 +269,19 @@ func (fs *FlexScaleSet) GetPowerStatusByNodeName(name string) (powerState string
 		return powerState, err
 	}
 
-	if vm.InstanceView != nil {
-		return vmutil.GetVMPowerState(pointer.StringDeref(vm.Name, ""), vm.InstanceView.Statuses), nil
+	if vm.InstanceView != nil && vm.InstanceView.Statuses != nil {
+		statuses := *vm.InstanceView.Statuses
+		for _, status := range statuses {
+			state := pointer.StringDeref(status.Code, "")
+			if strings.HasPrefix(state, vmPowerStatePrefix) {
+				return strings.TrimPrefix(state, vmPowerStatePrefix), nil
+			}
+		}
 	}
 
 	// vm.InstanceView or vm.InstanceView.Statuses are nil when the VM is under deleting.
 	klog.V(3).Infof("InstanceView for node %q is nil, assuming it's deleting", name)
-	return consts.VMPowerStateUnknown, nil
+	return vmPowerStateUnknown, nil
 }
 
 // GetPrimaryInterface gets machine primary network interface by node name.
@@ -626,7 +630,7 @@ func (fs *FlexScaleSet) ensureVMSSFlexInPool(service *v1.Service, nodes []*v1.No
 
 		// When vmss is being deleted, CreateOrUpdate API would report "the vmss is being deleted" error.
 		// Since it is being deleted, we shouldn't send more CreateOrUpdate requests for it.
-		if vmssFlex.ProvisioningState != nil && strings.EqualFold(*vmssFlex.ProvisioningState, consts.ProvisionStateDeleting) {
+		if vmssFlex.ProvisioningState != nil && strings.EqualFold(*vmssFlex.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 			klog.V(3).Infof("ensureVMSSFlexInPool: found vmss %s being deleted, skipping", vmssFlexID)
 			continue
 		}
@@ -800,7 +804,7 @@ func (fs *FlexScaleSet) EnsureBackendPoolDeletedFromVMSets(vmssNamesMap map[stri
 
 		// When vmss is being deleted, CreateOrUpdate API would report "the vmss is being deleted" error.
 		// Since it is being deleted, we shouldn't send more CreateOrUpdate requests for it.
-		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.ProvisionStateDeleting) {
+		if vmss.ProvisioningState != nil && strings.EqualFold(*vmss.ProvisioningState, consts.VirtualMachineScaleSetsDeallocating) {
 			klog.V(3).Infof("fs.EnsureBackendPoolDeletedFromVMSets: found vmss %s being deleted, skipping", vmssName)
 			continue
 		}
diff --git a/pkg/provider/virtualmachine/virtualmachine.go b/pkg/provider/virtualmachine/virtualmachine.go
index c6b458d07..7e37c7036 100644
--- a/pkg/provider/virtualmachine/virtualmachine.go
+++ b/pkg/provider/virtualmachine/virtualmachine.go
@@ -18,10 +18,7 @@ package virtualmachine
 
 import (
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-03-01/compute"
-
 	"k8s.io/utils/pointer"
-
-	"sigs.k8s.io/cloud-provider-azure/pkg/consts"
 )
 
 type Variant string
@@ -148,36 +145,6 @@ func (vm *VirtualMachine) AsVirtualMachineScaleSetVM() *compute.VirtualMachineSc
 	return vm.vmssVM
 }
 
-func (vm *VirtualMachine) GetInstanceViewStatus() *[]compute.InstanceViewStatus {
-	if vm.IsVirtualMachine() && vm.vm != nil &&
-		vm.vm.VirtualMachineProperties != nil &&
-		vm.vm.VirtualMachineProperties.InstanceView != nil {
-		return vm.vm.VirtualMachineProperties.InstanceView.Statuses
-	}
-	if vm.IsVirtualMachineScaleSetVM() &&
-		vm.vmssVM != nil &&
-		vm.vmssVM.VirtualMachineScaleSetVMProperties != nil &&
-		vm.vmssVM.VirtualMachineScaleSetVMProperties.InstanceView != nil {
-		return vm.vmssVM.VirtualMachineScaleSetVMProperties.InstanceView.Statuses
-	}
-	return nil
-}
-
-func (vm *VirtualMachine) GetProvisioningState() string {
-	if vm.IsVirtualMachine() && vm.vm != nil &&
-		vm.vm.VirtualMachineProperties != nil &&
-		vm.vm.VirtualMachineProperties.ProvisioningState != nil {
-		return *vm.vm.VirtualMachineProperties.ProvisioningState
-	}
-	if vm.IsVirtualMachineScaleSetVM() &&
-		vm.vmssVM != nil &&
-		vm.vmssVM.VirtualMachineScaleSetVMProperties != nil &&
-		vm.vmssVM.VirtualMachineScaleSetVMProperties.ProvisioningState != nil {
-		return *vm.vmssVM.VirtualMachineScaleSetVMProperties.ProvisioningState
-	}
-	return consts.ProvisioningStateUnknown
-}
-
 // StringMap returns a map of strings built from the map of string pointers. The empty string is
 // used for nil pointers.
 func stringMap(msp map[string]*string) map[string]string {
diff --git a/pkg/util/string/string.go b/pkg/util/string/string.go
deleted file mode 100644
index 10510ecc7..000000000
--- a/pkg/util/string/string.go
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-Copyright 2024 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package stringutils
-
-import "strings"
-
-// HasPrefixCaseInsensitive returns true if the string has the prefix, case-insensitive.
-func HasPrefixCaseInsensitive(s string, prefix string) bool {
-	return strings.HasPrefix(strings.ToLower(s), strings.ToLower(prefix))
-}
diff --git a/pkg/util/vm/vm.go b/pkg/util/vm/vm.go
deleted file mode 100644
index 3a13fb127..000000000
--- a/pkg/util/vm/vm.go
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright 2024 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package vm
-
-import (
-	"strings"
-
-	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-03-01/compute"
-
-	"k8s.io/klog/v2"
-	"k8s.io/utils/pointer"
-
-	"sigs.k8s.io/cloud-provider-azure/pkg/consts"
-	stringutils "sigs.k8s.io/cloud-provider-azure/pkg/util/string"
-)
-
-// GetVMPowerState returns the power state of the VM
-func GetVMPowerState(vmName string, vmStatuses *[]compute.InstanceViewStatus) string {
-	logger := klog.Background().WithName("getVMSSVMPowerState").WithValues("vmName", vmName)
-	if vmStatuses != nil {
-		for _, status := range *vmStatuses {
-			state := pointer.StringDeref(status.Code, "")
-			if stringutils.HasPrefixCaseInsensitive(state, consts.VMPowerStatePrefix) {
-				return strings.TrimPrefix(state, consts.VMPowerStatePrefix)
-			}
-		}
-	}
-	logger.V(3).Info("vm status is nil in the instance view or there is no power state in the status")
-	return consts.VMPowerStateUnknown
-}
-
-// IsNotActiveVMState checks if the VM is in the active states
-func IsNotActiveVMState(provisioningState, powerState string) bool {
-	return strings.EqualFold(provisioningState, consts.ProvisioningStateDeleting) ||
-		strings.EqualFold(provisioningState, consts.ProvisioningStateUnknown) ||
-		strings.EqualFold(powerState, consts.VMPowerStateUnknown) ||
-		strings.EqualFold(powerState, consts.VMPowerStateStopped) ||
-		strings.EqualFold(powerState, consts.VMPowerStateStopping) ||
-		strings.EqualFold(powerState, consts.VMPowerStateDeallocated) ||
-		strings.EqualFold(powerState, consts.VMPowerStateDeallocating)
-}
diff --git a/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go b/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go
new file mode 100644
index 000000000..d33c8890f
--- /dev/null
+++ b/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go
@@ -0,0 +1,39 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build !go1.13
+
+package poly1305
+
+// Generic fallbacks for the math/bits intrinsics, copied from
+// src/math/bits/bits.go. They were added in Go 1.12, but Add64 and Sum64 had
+// variable time fallbacks until Go 1.13.
+
+func bitsAdd64(x, y, carry uint64) (sum, carryOut uint64) {
+	sum = x + y + carry
+	carryOut = ((x & y) | ((x | y) &^ sum)) >> 63
+	return
+}
+
+func bitsSub64(x, y, borrow uint64) (diff, borrowOut uint64) {
+	diff = x - y - borrow
+	borrowOut = ((^x & y) | (^(x ^ y) & diff)) >> 63
+	return
+}
+
+func bitsMul64(x, y uint64) (hi, lo uint64) {
+	const mask32 = 1<<32 - 1
+	x0 := x & mask32
+	x1 := x >> 32
+	y0 := y & mask32
+	y1 := y >> 32
+	w0 := x0 * y0
+	t := x1*y0 + w0>>32
+	w1 := t & mask32
+	w2 := t >> 32
+	w1 += x0 * y1
+	hi = x1*y1 + w2 + w1>>32
+	lo = x * y
+	return
+}
diff --git a/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go b/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go
new file mode 100644
index 000000000..495c1fa69
--- /dev/null
+++ b/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go
@@ -0,0 +1,21 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build go1.13
+
+package poly1305
+
+import "math/bits"
+
+func bitsAdd64(x, y, carry uint64) (sum, carryOut uint64) {
+	return bits.Add64(x, y, carry)
+}
+
+func bitsSub64(x, y, borrow uint64) (diff, borrowOut uint64) {
+	return bits.Sub64(x, y, borrow)
+}
+
+func bitsMul64(x, y uint64) (hi, lo uint64) {
+	return bits.Mul64(x, y)
+}
diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go
index ec2202bd7..e041da5ea 100644
--- a/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go
+++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go
@@ -7,10 +7,7 @@
 
 package poly1305
 
-import (
-	"encoding/binary"
-	"math/bits"
-)
+import "encoding/binary"
 
 // Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag
 // for a 64 bytes message is approximately
@@ -117,13 +114,13 @@ type uint128 struct {
 }
 
 func mul64(a, b uint64) uint128 {
-	hi, lo := bits.Mul64(a, b)
+	hi, lo := bitsMul64(a, b)
 	return uint128{lo, hi}
 }
 
 func add128(a, b uint128) uint128 {
-	lo, c := bits.Add64(a.lo, b.lo, 0)
-	hi, c := bits.Add64(a.hi, b.hi, c)
+	lo, c := bitsAdd64(a.lo, b.lo, 0)
+	hi, c := bitsAdd64(a.hi, b.hi, c)
 	if c != 0 {
 		panic("poly1305: unexpected overflow")
 	}
@@ -158,8 +155,8 @@ func updateGeneric(state *macState, msg []byte) {
 		// hide leading zeroes. For full chunks, that's 1 << 128, so we can just
 		// add 1 to the most significant (2¹²⁸) limb, h2.
 		if len(msg) >= TagSize {
-			h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0)
-			h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(msg[8:16]), c)
+			h0, c = bitsAdd64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0)
+			h1, c = bitsAdd64(h1, binary.LittleEndian.Uint64(msg[8:16]), c)
 			h2 += c + 1
 
 			msg = msg[TagSize:]
@@ -168,8 +165,8 @@ func updateGeneric(state *macState, msg []byte) {
 			copy(buf[:], msg)
 			buf[len(msg)] = 1
 
-			h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0)
-			h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(buf[8:16]), c)
+			h0, c = bitsAdd64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0)
+			h1, c = bitsAdd64(h1, binary.LittleEndian.Uint64(buf[8:16]), c)
 			h2 += c
 
 			msg = nil
@@ -222,9 +219,9 @@ func updateGeneric(state *macState, msg []byte) {
 		m3 := h2r1
 
 		t0 := m0.lo
-		t1, c := bits.Add64(m1.lo, m0.hi, 0)
-		t2, c := bits.Add64(m2.lo, m1.hi, c)
-		t3, _ := bits.Add64(m3.lo, m2.hi, c)
+		t1, c := bitsAdd64(m1.lo, m0.hi, 0)
+		t2, c := bitsAdd64(m2.lo, m1.hi, c)
+		t3, _ := bitsAdd64(m3.lo, m2.hi, c)
 
 		// Now we have the result as 4 64-bit limbs, and we need to reduce it
 		// modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do
@@ -246,14 +243,14 @@ func updateGeneric(state *macState, msg []byte) {
 
 		// To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c.
 
-		h0, c = bits.Add64(h0, cc.lo, 0)
-		h1, c = bits.Add64(h1, cc.hi, c)
+		h0, c = bitsAdd64(h0, cc.lo, 0)
+		h1, c = bitsAdd64(h1, cc.hi, c)
 		h2 += c
 
 		cc = shiftRightBy2(cc)
 
-		h0, c = bits.Add64(h0, cc.lo, 0)
-		h1, c = bits.Add64(h1, cc.hi, c)
+		h0, c = bitsAdd64(h0, cc.lo, 0)
+		h1, c = bitsAdd64(h1, cc.hi, c)
 		h2 += c
 
 		// h2 is at most 3 + 1 + 1 = 5, making the whole of h at most
@@ -290,9 +287,9 @@ func finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) {
 	// in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the
 	// result if the subtraction underflows, and t otherwise.
 
-	hMinusP0, b := bits.Sub64(h0, p0, 0)
-	hMinusP1, b := bits.Sub64(h1, p1, b)
-	_, b = bits.Sub64(h2, p2, b)
+	hMinusP0, b := bitsSub64(h0, p0, 0)
+	hMinusP1, b := bitsSub64(h1, p1, b)
+	_, b = bitsSub64(h2, p2, b)
 
 	// h = h if h < p else h - p
 	h0 = select64(b, h0, hMinusP0)
@@ -304,8 +301,8 @@ func finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) {
 	//
 	// by just doing a wide addition with the 128 low bits of h and discarding
 	// the overflow.
-	h0, c := bits.Add64(h0, s[0], 0)
-	h1, _ = bits.Add64(h1, s[1], c)
+	h0, c := bitsAdd64(h0, s[0], 0)
+	h1, _ = bitsAdd64(h1, s[1], c)
 
 	binary.LittleEndian.PutUint64(out[0:8], h0)
 	binary.LittleEndian.PutUint64(out[8:16], h1)
diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh
index c6492020e..6202638ba 100644
--- a/vendor/golang.org/x/sys/unix/mkerrors.sh
+++ b/vendor/golang.org/x/sys/unix/mkerrors.sh
@@ -248,7 +248,6 @@ struct ltchars {
 #include <linux/module.h>
 #include <linux/mount.h>
 #include <linux/netfilter/nfnetlink.h>
-#include <linux/netfilter/nf_tables.h>
 #include <linux/netlink.h>
 #include <linux/net_namespace.h>
 #include <linux/nfc.h>
@@ -284,6 +283,10 @@ struct ltchars {
 #include <asm/termbits.h>
 #endif
 
+#ifndef MSG_FASTOPEN
+#define MSG_FASTOPEN    0x20000000
+#endif
+
 #ifndef PTRACE_GETREGS
 #define PTRACE_GETREGS	0xc
 #endif
@@ -292,6 +295,14 @@ struct ltchars {
 #define PTRACE_SETREGS	0xd
 #endif
 
+#ifndef SOL_NETLINK
+#define SOL_NETLINK	270
+#endif
+
+#ifndef SOL_SMC
+#define SOL_SMC 286
+#endif
+
 #ifdef SOL_BLUETOOTH
 // SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h
 // but it is already in bluetooth_linux.go
@@ -308,23 +319,10 @@ struct ltchars {
 #undef TIPC_WAIT_FOREVER
 #define TIPC_WAIT_FOREVER 0xffffffff
 
-// Copied from linux/netfilter/nf_nat.h
-// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h
-// and netinet/in.h.
-#define NF_NAT_RANGE_MAP_IPS			(1 << 0)
-#define NF_NAT_RANGE_PROTO_SPECIFIED		(1 << 1)
-#define NF_NAT_RANGE_PROTO_RANDOM		(1 << 2)
-#define NF_NAT_RANGE_PERSISTENT			(1 << 3)
-#define NF_NAT_RANGE_PROTO_RANDOM_FULLY		(1 << 4)
-#define NF_NAT_RANGE_PROTO_OFFSET		(1 << 5)
-#define NF_NAT_RANGE_NETMAP			(1 << 6)
-#define NF_NAT_RANGE_PROTO_RANDOM_ALL		\
-	(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
-#define NF_NAT_RANGE_MASK					\
-	(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |	\
-	 NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |	\
-	 NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \
-	 NF_NAT_RANGE_NETMAP)
+// Copied from linux/l2tp.h
+// Including linux/l2tp.h here causes conflicts between linux/in.h
+// and netinet/in.h included via net/route.h above.
+#define IPPROTO_L2TP		115
 
 // Copied from linux/hid.h.
 // Keep in sync with the size of the referenced fields.
@@ -605,9 +603,6 @@ ccflags="$@"
 		$2 ~ /^FSOPT_/ ||
 		$2 ~ /^WDIO[CFS]_/ ||
 		$2 ~ /^NFN/ ||
-		$2 !~ /^NFT_META_IIFTYPE/ &&
-		$2 ~ /^NFT_/ ||
-		$2 ~ /^NF_NAT_/ ||
 		$2 ~ /^XDP_/ ||
 		$2 ~ /^RWF_/ ||
 		$2 ~ /^(HDIO|WIN|SMART)_/ ||
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go
index a5d3ff8df..c73cfe2f1 100644
--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go
+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go
@@ -2127,60 +2127,6 @@ const (
 	NFNL_SUBSYS_QUEUE                           = 0x3
 	NFNL_SUBSYS_ULOG                            = 0x4
 	NFS_SUPER_MAGIC                             = 0x6969
-	NFT_CHAIN_FLAGS                             = 0x7
-	NFT_CHAIN_MAXNAMELEN                        = 0x100
-	NFT_CT_MAX                                  = 0x17
-	NFT_DATA_RESERVED_MASK                      = 0xffffff00
-	NFT_DATA_VALUE_MAXLEN                       = 0x40
-	NFT_EXTHDR_OP_MAX                           = 0x4
-	NFT_FIB_RESULT_MAX                          = 0x3
-	NFT_INNER_MASK                              = 0xf
-	NFT_LOGLEVEL_MAX                            = 0x8
-	NFT_NAME_MAXLEN                             = 0x100
-	NFT_NG_MAX                                  = 0x1
-	NFT_OBJECT_CONNLIMIT                        = 0x5
-	NFT_OBJECT_COUNTER                          = 0x1
-	NFT_OBJECT_CT_EXPECT                        = 0x9
-	NFT_OBJECT_CT_HELPER                        = 0x3
-	NFT_OBJECT_CT_TIMEOUT                       = 0x7
-	NFT_OBJECT_LIMIT                            = 0x4
-	NFT_OBJECT_MAX                              = 0xa
-	NFT_OBJECT_QUOTA                            = 0x2
-	NFT_OBJECT_SECMARK                          = 0x8
-	NFT_OBJECT_SYNPROXY                         = 0xa
-	NFT_OBJECT_TUNNEL                           = 0x6
-	NFT_OBJECT_UNSPEC                           = 0x0
-	NFT_OBJ_MAXNAMELEN                          = 0x100
-	NFT_OSF_MAXGENRELEN                         = 0x10
-	NFT_QUEUE_FLAG_BYPASS                       = 0x1
-	NFT_QUEUE_FLAG_CPU_FANOUT                   = 0x2
-	NFT_QUEUE_FLAG_MASK                         = 0x3
-	NFT_REG32_COUNT                             = 0x10
-	NFT_REG32_SIZE                              = 0x4
-	NFT_REG_MAX                                 = 0x4
-	NFT_REG_SIZE                                = 0x10
-	NFT_REJECT_ICMPX_MAX                        = 0x3
-	NFT_RT_MAX                                  = 0x4
-	NFT_SECMARK_CTX_MAXLEN                      = 0x100
-	NFT_SET_MAXNAMELEN                          = 0x100
-	NFT_SOCKET_MAX                              = 0x3
-	NFT_TABLE_F_MASK                            = 0x3
-	NFT_TABLE_MAXNAMELEN                        = 0x100
-	NFT_TRACETYPE_MAX                           = 0x3
-	NFT_TUNNEL_F_MASK                           = 0x7
-	NFT_TUNNEL_MAX                              = 0x1
-	NFT_TUNNEL_MODE_MAX                         = 0x2
-	NFT_USERDATA_MAXLEN                         = 0x100
-	NFT_XFRM_KEY_MAX                            = 0x6
-	NF_NAT_RANGE_MAP_IPS                        = 0x1
-	NF_NAT_RANGE_MASK                           = 0x7f
-	NF_NAT_RANGE_NETMAP                         = 0x40
-	NF_NAT_RANGE_PERSISTENT                     = 0x8
-	NF_NAT_RANGE_PROTO_OFFSET                   = 0x20
-	NF_NAT_RANGE_PROTO_RANDOM                   = 0x4
-	NF_NAT_RANGE_PROTO_RANDOM_ALL               = 0x14
-	NF_NAT_RANGE_PROTO_RANDOM_FULLY             = 0x10
-	NF_NAT_RANGE_PROTO_SPECIFIED                = 0x2
 	NILFS_SUPER_MAGIC                           = 0x3434
 	NL0                                         = 0x0
 	NL1                                         = 0x100
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
index 9dc42410b..a1d061597 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
index 0d3a0751c..5b2a74097 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
index c39f7776d..f6eda1344 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
index 57571d072..55df20ae9 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
index e62963e67..8c1155cbc 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
index 00831354c..7cc80c58d 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
index 79029ed58..0688737f4 100644
--- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go
@@ -2297,3 +2297,5 @@ func unveil(path *byte, flags *byte) (err error) {
 var libc_unveil_trampoline_addr uintptr
 
 //go:cgo_import_dynamic libc_unveil unveil "libc.so"
+
+
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go
index ffb8708cc..47dc57967 100644
--- a/vendor/golang.org/x/sys/windows/syscall_windows.go
+++ b/vendor/golang.org/x/sys/windows/syscall_windows.go
@@ -194,7 +194,6 @@ func NewCallbackCDecl(fn interface{}) uintptr {
 //sys	GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW
 //sys	GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW
 //sys	SetEndOfFile(handle Handle) (err error)
-//sys	SetFileValidData(handle Handle, validDataLength int64) (err error)
 //sys	GetSystemTimeAsFileTime(time *Filetime)
 //sys	GetSystemTimePreciseAsFileTime(time *Filetime)
 //sys	GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]
diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
index e8791c82c..146a1f019 100644
--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go
+++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
@@ -342,7 +342,6 @@ var (
 	procSetDefaultDllDirectories                             = modkernel32.NewProc("SetDefaultDllDirectories")
 	procSetDllDirectoryW                                     = modkernel32.NewProc("SetDllDirectoryW")
 	procSetEndOfFile                                         = modkernel32.NewProc("SetEndOfFile")
-	procSetFileValidData                                     = modkernel32.NewProc("SetFileValidData")
 	procSetEnvironmentVariableW                              = modkernel32.NewProc("SetEnvironmentVariableW")
 	procSetErrorMode                                         = modkernel32.NewProc("SetErrorMode")
 	procSetEvent                                             = modkernel32.NewProc("SetEvent")
@@ -2989,14 +2988,6 @@ func SetEndOfFile(handle Handle) (err error) {
 	return
 }
 
-func SetFileValidData(handle Handle, validDataLength int64) (err error) {
-	r1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0)
-	if r1 == 0 {
-		err = errnoErr(e1)
-	}
-	return
-}
-
 func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
 	r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
 	if r1 == 0 {
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 565cd0868..b59092a84 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -466,7 +466,7 @@ go.uber.org/zap/internal/color
 go.uber.org/zap/internal/exit
 go.uber.org/zap/zapcore
 go.uber.org/zap/zapgrpc
-# golang.org/x/crypto v0.18.0
+# golang.org/x/crypto v0.16.0
 ## explicit; go 1.18
 golang.org/x/crypto/cryptobyte
 golang.org/x/crypto/cryptobyte/asn1
@@ -496,7 +496,7 @@ golang.org/x/oauth2/internal
 # golang.org/x/sync v0.3.0
 ## explicit; go 1.17
 golang.org/x/sync/singleflight
-# golang.org/x/sys v0.16.0
+# golang.org/x/sys v0.15.0
 ## explicit; go 1.18
 golang.org/x/sys/cpu
 golang.org/x/sys/plan9
@@ -504,7 +504,7 @@ golang.org/x/sys/unix
 golang.org/x/sys/windows
 golang.org/x/sys/windows/registry
 golang.org/x/sys/windows/svc
-# golang.org/x/term v0.16.0
+# golang.org/x/term v0.15.0
 ## explicit; go 1.18
 golang.org/x/term
 # golang.org/x/text v0.14.0


Test patch:
diff --git a/.pipelines/run-autoscaling-e2e.yml b/.pipelines/run-autoscaling-e2e.yml
index 3b656902b..51c786281 100644
--- a/.pipelines/run-autoscaling-e2e.yml
+++ b/.pipelines/run-autoscaling-e2e.yml
@@ -33,7 +33,7 @@ stages:
       steps:
         - task: GoTool@0
           inputs:
-            version: '1.21.5'
+            version: '1.19'
         - bash: |
             CLUSTER_TYPE="autoscaling"
             echo "##vso[task.setvariable variable=CLUSTER_TYPE]${CLUSTER_TYPE}"
diff --git a/.pipelines/run-autoscaling-multipool-e2e.yml b/.pipelines/run-autoscaling-multipool-e2e.yml
index 72e1daffa..fdcb656fb 100644
--- a/.pipelines/run-autoscaling-multipool-e2e.yml
+++ b/.pipelines/run-autoscaling-multipool-e2e.yml
@@ -33,7 +33,7 @@ stages:
       steps:
         - task: GoTool@0
           inputs:
-            version: '1.21.5'
+            version: '1.19'
         - bash: |
             CLUSTER_TYPE="autoscaling-multipool"
             echo "##vso[task.setvariable variable=CLUSTER_TYPE]${CLUSTER_TYPE}"
diff --git a/.pipelines/run-basic-lb-e2e.yml b/.pipelines/run-basic-lb-e2e.yml
index 13fbbee04..36fe39c7f 100644
--- a/.pipelines/run-basic-lb-e2e.yml
+++ b/.pipelines/run-basic-lb-e2e.yml
@@ -36,7 +36,7 @@ stages:
       steps:
         - task: GoTool@0
           inputs:
-            version: '1.21.5'
+            version: '1.19'
         - bash: |
             CLUSTER_TYPE="basic-lb"
             echo "##vso[task.setvariable variable=CLUSTER_TYPE]${CLUSTER_TYPE}"
diff --git a/cmd/acr-credential-provider/plugin_test.go b/cmd/acr-credential-provider/plugin_test.go
index 8bdc53b06..1221eb1d0 100644
--- a/cmd/acr-credential-provider/plugin_test.go
+++ b/cmd/acr-credential-provider/plugin_test.go
@@ -24,17 +24,17 @@ import (
 	"time"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	v1 "k8s.io/kubelet/pkg/apis/credentialprovider/v1"
+	"k8s.io/kubelet/pkg/apis/credentialprovider/v1alpha1"
 )
 
 type fakePlugin struct {
 }
 
-func (f *fakePlugin) GetCredentials(ctx context.Context, image string, args []string) (*v1.CredentialProviderResponse, error) {
-	return &v1.CredentialProviderResponse{
-		CacheKeyType:  v1.RegistryPluginCacheKeyType,
+func (f *fakePlugin) GetCredentials(ctx context.Context, image string, args []string) (*v1alpha1.CredentialProviderResponse, error) {
+	return &v1alpha1.CredentialProviderResponse{
+		CacheKeyType:  v1alpha1.RegistryPluginCacheKeyType,
 		CacheDuration: &metav1.Duration{Duration: 10 * time.Minute},
-		Auth: map[string]v1.AuthConfig{
+		Auth: map[string]v1alpha1.AuthConfig{
 			"*.registry.io": {
 				Username: "user",
 				Password: "password",
@@ -52,26 +52,26 @@ func Test_runPlugin(t *testing.T) {
 	}{
 		{
 			name: "successful test case",
-			in:   bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"credentialprovider.kubelet.k8s.io/v1","image":"test.registry.io/foobar"}`),
-			expectedOut: []byte(`{"kind":"CredentialProviderResponse","apiVersion":"credentialprovider.kubelet.k8s.io/v1","cacheKeyType":"Registry","cacheDuration":"10m0s","auth":{"*.registry.io":{"username":"user","password":"password"}}}
+			in:   bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"credentialprovider.kubelet.k8s.io/v1alpha1","image":"test.registry.io/foobar"}`),
+			expectedOut: []byte(`{"kind":"CredentialProviderResponse","apiVersion":"credentialprovider.kubelet.k8s.io/v1alpha1","cacheKeyType":"Registry","cacheDuration":"10m0s","auth":{"*.registry.io":{"username":"user","password":"password"}}}
 `),
 			expectErr: false,
 		},
 		{
 			name:        "invalid kind",
-			in:          bytes.NewBufferString(`{"kind":"CredentialProviderFoo","apiVersion":"credentialprovider.kubelet.k8s.io/v1","image":"test.registry.io/foobar"}`),
+			in:          bytes.NewBufferString(`{"kind":"CredentialProviderFoo","apiVersion":"credentialprovider.kubelet.k8s.io/v1alpha1","image":"test.registry.io/foobar"}`),
 			expectedOut: nil,
 			expectErr:   true,
 		},
 		{
 			name:        "invalid apiVersion",
-			in:          bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"foo.k8s.io/v1","image":"test.registry.io/foobar"}`),
+			in:          bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"foo.k8s.io/v1alpha1","image":"test.registry.io/foobar"}`),
 			expectedOut: nil,
 			expectErr:   true,
 		},
 		{
 			name:        "empty image",
-			in:          bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"credentialprovider.kubelet.k8s.io/v1","image":""}`),
+			in:          bytes.NewBufferString(`{"kind":"CredentialProviderRequest","apiVersion":"credentialprovider.kubelet.k8s.io/v1alpha1","image":""}`),
 			expectedOut: nil,
 			expectErr:   true,
 		},
diff --git a/pkg/provider/azure_backoff_test.go b/pkg/provider/azure_backoff_test.go
index d2ea59829..f02b49b38 100644
--- a/pkg/provider/azure_backoff_test.go
+++ b/pkg/provider/azure_backoff_test.go
@@ -576,7 +576,7 @@ func TestCreateOrUpdateVMSS(t *testing.T) {
 		{
 			vmss: compute.VirtualMachineScaleSet{
 				VirtualMachineScaleSetProperties: &compute.VirtualMachineScaleSetProperties{
-					ProvisioningState: pointer.String(consts.ProvisioningStateDeleting),
+					ProvisioningState: pointer.String(consts.VirtualMachineScaleSetsDeallocating),
 				},
 			},
 		},
diff --git a/pkg/provider/azure_loadbalancer_test.go b/pkg/provider/azure_loadbalancer_test.go
index bc2477e98..1bd426303 100644
--- a/pkg/provider/azure_loadbalancer_test.go
+++ b/pkg/provider/azure_loadbalancer_test.go
@@ -4028,51 +4028,6 @@ func TestReconcileSecurityGroup(t *testing.T) {
 				},
 			},
 		},
-		{
-			desc: "reconcileSecurityGroup shall create sgs while allowedIPRanges annotation is set for IPv6",
-			service: getTestService("svc", v1.ProtocolTCP, map[string]string{
-				consts.ServiceAnnotationAllowedIPRanges: "2001:db8::/32,2002:db8::/32",
-			}, true, 80),
-			existingSgs: map[string]network.SecurityGroup{"nsg": {
-				Name:                          pointer.String("nsg"),
-				SecurityGroupPropertiesFormat: &network.SecurityGroupPropertiesFormat{},
-			}},
-			lbIP:   to.StringPtr("1234::5"),
-			wantLb: true,
-			expectedSg: &network.SecurityGroup{
-				Name: pointer.String("nsg"),
-				SecurityGroupPropertiesFormat: &network.SecurityGroupPropertiesFormat{
-					SecurityRules: &[]network.SecurityRule{
-						{
-							Name: pointer.String("asvc-TCP-80-2001.db8.._32"),
-							SecurityRulePropertiesFormat: &network.SecurityRulePropertiesFormat{
-								Protocol:                 network.SecurityRuleProtocol("Tcp"),
-								SourcePortRange:          pointer.String("*"),
-								DestinationPortRange:     pointer.String(strconv.Itoa(80)),
-								SourceAddressPrefix:      pointer.String("2001:db8::/32"),
-								DestinationAddressPrefix: to.StringPtr("1234::5"),
-								Access:                   network.SecurityRuleAccessAllow,
-								Priority:                 pointer.Int32(500),
-								Direction:                network.SecurityRuleDirection("Inbound"),
-							},
-						},
-						{
-							Name: pointer.String("asvc-TCP-80-2002.db8.._32"),
-							SecurityRulePropertiesFormat: &network.SecurityRulePropertiesFormat{
-								Protocol:                 network.SecurityRuleProtocol("Tcp"),
-								SourcePortRange:          pointer.String("*"),
-								DestinationPortRange:     pointer.String(strconv.Itoa(80)),
-								SourceAddressPrefix:      pointer.String("2002:db8::/32"),
-								DestinationAddressPrefix: to.StringPtr("1234::5"),
-								Access:                   network.SecurityRuleAccessAllow,
-								Priority:                 pointer.Int32(501),
-								Direction:                network.SecurityRuleDirection("Inbound"),
-							},
-						},
-					},
-				},
-			},
-		},
 		{
 			desc: "reconcileSecurityGroup shall create sgs while allowedIPRanges and serviceTags annotation is set",
 			service: getTestService("svc", v1.ProtocolTCP, map[string]string{
diff --git a/pkg/provider/azure_standard_test.go b/pkg/provider/azure_standard_test.go
index 8ccff232f..13b98d0a5 100644
--- a/pkg/provider/azure_standard_test.go
+++ b/pkg/provider/azure_standard_test.go
@@ -1048,7 +1048,7 @@ func TestGetStandardVMPowerStatusByNodeName(t *testing.T) {
 					ProvisioningState: pointer.String("Succeeded"),
 				},
 			},
-			expectedStatus: consts.VMPowerStateUnknown,
+			expectedStatus: vmPowerStateUnknown,
 		},
 		{
 			name:     "GetPowerStatusByNodeName should get vmPowerStateUnknown if vm.InstanceView.statuses is nil",
@@ -1060,7 +1060,7 @@ func TestGetStandardVMPowerStatusByNodeName(t *testing.T) {
 					InstanceView:      &compute.VirtualMachineInstanceView{},
 				},
 			},
-			expectedStatus: consts.VMPowerStateUnknown,
+			expectedStatus: vmPowerStateUnknown,
 		},
 	}
 	for _, test := range testcases {
@@ -2300,67 +2300,3 @@ func TestGetSecurityRuleName(t *testing.T) {
 		})
 	}
 }
-
-func TestGetPublicIPName(t *testing.T) {
-	testcases := []struct {
-		desc            string
-		svc             *v1.Service
-		pips            []network.PublicIPAddress
-		isIPv6          bool
-		expectedPIPName string
-	}{
-		{
-			desc: "common",
-			svc: &v1.Service{
-				ObjectMeta: meta.ObjectMeta{UID: types.UID("uid")},
-				Spec: v1.ServiceSpec{
-					IPFamilies: []v1.IPFamily{v1.IPv4Protocol},
-				},
-			},
-			isIPv6:          false,
-			expectedPIPName: "azure-auid",
-		},
-		{
-			desc: "Service PIP prefix id",
-			svc: &v1.Service{
-				ObjectMeta: meta.ObjectMeta{
-					UID: types.UID("uid"),
-					Annotations: map[string]string{
-						consts.ServiceAnnotationPIPPrefixIDDualStack[false]: "prefix-id",
-					},
-				},
-				Spec: v1.ServiceSpec{
-					IPFamilies: []v1.IPFamily{v1.IPv4Protocol},
-				},
-			},
-			isIPv6:          false,
-			expectedPIPName: "azure-auid-prefix-id",
-		},
-		{
-			desc: "Service PIP prefix id IPv6 lengthy",
-			svc: &v1.Service{
-				ObjectMeta: meta.ObjectMeta{
-					UID: types.UID("uid"),
-					Annotations: map[string]string{
-						consts.ServiceAnnotationPIPPrefixIDDualStack[false]: "prefix-id-ipv6-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-					},
-				},
-				Spec: v1.ServiceSpec{
-					IPFamilies: []v1.IPFamily{v1.IPv6Protocol},
-				},
-			},
-			isIPv6:          true,
-			expectedPIPName: "azure-auid-prefix-id-ipv6-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-		},
-	}
-
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	for _, tc := range testcases {
-		t.Run(tc.desc, func(t *testing.T) {
-			az := GetTestCloud(ctrl)
-			name := az.getPublicIPName("azure", tc.svc)
-			assert.Equal(t, tc.expectedPIPName, name)
-		})
-	}
-}
diff --git a/pkg/provider/azure_utils_test.go b/pkg/provider/azure_utils_test.go
index 9f0e8ec5d..1018dad59 100644
--- a/pkg/provider/azure_utils_test.go
+++ b/pkg/provider/azure_utils_test.go
@@ -404,41 +404,3 @@ func TestIsNodeInVMSSVMCache(t *testing.T) {
 		assert.Equal(t, test.expectedResult, result, test.description)
 	}
 }
-
-func TestIsInternalLoadBalancer(t *testing.T) {
-	tests := []struct {
-		name     string
-		lb       network.LoadBalancer
-		expected bool
-	}{
-		{
-			name: "internal load balancer",
-			lb: network.LoadBalancer{
-				Name: pointer.String("test-internal"),
-			},
-			expected: true,
-		},
-		{
-			name: "internal load balancer",
-			lb: network.LoadBalancer{
-				Name: pointer.String("TEST-INTERNAL"),
-			},
-			expected: true,
-		},
-		{
-			name: "not internal load balancer",
-			lb: network.LoadBalancer{
-				Name: pointer.String("test"),
-			},
-			expected: false,
-		},
-	}
-
-	for _, test := range tests {
-		t.Run(test.name, func(t *testing.T) {
-			lb := test.lb
-			result := isInternalLoadBalancer(&lb)
-			assert.Equal(t, test.expected, result)
-		})
-	}
-}
diff --git a/pkg/provider/azure_vmss_test.go b/pkg/provider/azure_vmss_test.go
index 9c5ddf3a6..c02f13a0d 100644
--- a/pkg/provider/azure_vmss_test.go
+++ b/pkg/provider/azure_vmss_test.go
@@ -789,7 +789,7 @@ func TestGetPowerStatusByNodeName(t *testing.T) {
 			description:        "GetPowerStatusByNodeName should return vmPowerStateUnknown when the vm.InstanceView.Statuses is nil",
 			vmList:             []string{"vmss-vm-000001"},
 			nilStatus:          true,
-			expectedPowerState: consts.VMPowerStateUnknown,
+			expectedPowerState: vmPowerStateUnknown,
 		},
 	}
 
@@ -2171,7 +2171,6 @@ func TestEnsureHostInPool(t *testing.T) {
 		isNilVMNetworkConfigs     bool
 		useMultipleSLBs           bool
 		isVMBeingDeleted          bool
-		isVMNotActive             bool
 		expectedNodeResourceGroup string
 		expectedVMSSName          string
 		expectedInstanceID        string
@@ -2261,11 +2260,6 @@ func TestEnsureHostInPool(t *testing.T) {
 				},
 			},
 		},
-		{
-			description:   "EnsureHostInPool should skip if the current node is not active",
-			nodeName:      "vmss-vm-000000",
-			isVMNotActive: true,
-		},
 	}
 
 	for _, test := range testCases {
@@ -2300,12 +2294,7 @@ func TestEnsureHostInPool(t *testing.T) {
 		if test.isNilVMNetworkConfigs {
 			expectedVMSSVMs[0].NetworkProfileConfiguration.NetworkInterfaceConfigurations = nil
 		}
-		if test.isVMNotActive {
-			(*expectedVMSSVMs[0].InstanceView.Statuses)[0] = compute.InstanceViewStatus{
-				Code: pointer.String("PowerState/deallocated"),
-			}
-		}
-		mockVMSSVMClient := ss.VirtualMachineScaleSetVMsClient.(*mockvmssvmclient.MockInterface)
+		mockVMSSVMClient := ss.cloud.VirtualMachineScaleSetVMsClient.(*mockvmssvmclient.MockInterface)
 		mockVMSSVMClient.EXPECT().List(
 			gomock.Any(),
 			ss.ResourceGroup,
@@ -2534,7 +2523,7 @@ func TestEnsureVMSSInPool(t *testing.T) {
 
 			expectedVMSS := buildTestVMSSWithLB(testVMSSName, "vmss-vm-", []string{testLBBackendpoolID0}, test.setIPv6Config)
 			if test.isVMSSDeallocating {
-				expectedVMSS.ProvisioningState = pointer.String(consts.ProvisionStateDeleting)
+				expectedVMSS.ProvisioningState = pointer.String(consts.VirtualMachineScaleSetsDeallocating)
 			}
 			if test.isVMSSNilNICConfig {
 				expectedVMSS.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations = nil
@@ -2664,7 +2653,6 @@ func TestEnsureBackendPoolDeletedFromNodeCommon(t *testing.T) {
 		nodeName                  string
 		backendpoolID             string
 		isNilVMNetworkConfigs     bool
-		isVMNotActive             bool
 		expectedNodeResourceGroup string
 		expectedVMSSName          string
 		expectedInstanceID        string
@@ -2719,11 +2707,6 @@ func TestEnsureBackendPoolDeletedFromNodeCommon(t *testing.T) {
 				},
 			},
 		},
-		{
-			description:   "ensureBackendPoolDeletedFromNode should skip if the node is not active",
-			nodeName:      "vmss-vm-000000",
-			isVMNotActive: true,
-		},
 	}
 
 	for _, test := range testCases {
@@ -2739,11 +2722,6 @@ func TestEnsureBackendPoolDeletedFromNodeCommon(t *testing.T) {
 			if test.isNilVMNetworkConfigs {
 				expectedVMSSVMs[0].NetworkProfileConfiguration.NetworkInterfaceConfigurations = nil
 			}
-			if test.isVMNotActive {
-				(*expectedVMSSVMs[0].InstanceView.Statuses)[0] = compute.InstanceViewStatus{
-					Code: pointer.String("PowerState/deallocated"),
-				}
-			}
 			mockVMSSVMClient := ss.cloud.VirtualMachineScaleSetVMsClient.(*mockvmssvmclient.MockInterface)
 			mockVMSSVMClient.EXPECT().List(gomock.Any(), ss.ResourceGroup, testVMSSName, gomock.Any()).Return(expectedVMSSVMs, nil).AnyTimes()
 
@@ -2824,7 +2802,7 @@ func TestEnsureBackendPoolDeletedFromVMSS(t *testing.T) {
 
 		expectedVMSS := buildTestVMSSWithLB(testVMSSName, "vmss-vm-", []string{testLBBackendpoolID0}, false)
 		if test.isVMSSDeallocating {
-			expectedVMSS.ProvisioningState = pointer.String(consts.ProvisionStateDeleting)
+			expectedVMSS.ProvisioningState = pointer.String(consts.VirtualMachineScaleSetsDeallocating)
 		}
 		if test.isVMSSNilNICConfig {
 			expectedVMSS.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations = nil
diff --git a/pkg/provider/azure_vmssflex_test.go b/pkg/provider/azure_vmssflex_test.go
index e74967fd3..da1ba371c 100644
--- a/pkg/provider/azure_vmssflex_test.go
+++ b/pkg/provider/azure_vmssflex_test.go
@@ -1413,7 +1413,7 @@ func TestEnsureVMSSFlexInPool(t *testing.T) {
 		testVmssFlex := genreteTestVmssFlex("vmssflex1", testVmssFlex1ID)
 
 		if tc.isVMSSDeallocating {
-			testVmssFlex.ProvisioningState = pointer.String(consts.ProvisionStateDeleting)
+			testVmssFlex.ProvisioningState = pointer.String(consts.VirtualMachineScaleSetsDeallocating)
 		}
 		if !tc.hasDefaultVMProfile {
 			testVmssFlex.VirtualMachineProfile = nil
@@ -1671,7 +1671,7 @@ func TestEnsureBackendPoolDeletedFromVMSetsVmssFlex(t *testing.T) {
 			testVmssFlex := genreteTestVmssFlex("vmssflex1", testVmssFlex1ID)
 
 			if tc.isVMSSDeallocating {
-				testVmssFlex.ProvisioningState = pointer.String(consts.ProvisionStateDeleting)
+				testVmssFlex.ProvisioningState = pointer.String(consts.VirtualMachineScaleSetsDeallocating)
 			}
 			if !tc.hasDefaultVMProfile {
 				testVmssFlex.VirtualMachineProfile = nil
diff --git a/pkg/util/string/string_test.go b/pkg/util/string/string_test.go
deleted file mode 100644
index 8449cfc6f..000000000
--- a/pkg/util/string/string_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2024 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package stringutils
-
-import (
-	"testing"
-)
-
-func TestHasPrefixCaseInsensitive(t *testing.T) {
-	cases := []struct {
-		s      string
-		prefix string
-		want   bool
-	}{
-		{"HelloWorld", "hello", true},
-		{"HelloWorld", "WORLD", false},
-		{"", "prefix", false},
-		{"CaseSensitive", "casesensitive", true},
-		{"CaseSensitive", "CASE", true},
-	}
-
-	for _, c := range cases {
-		got := HasPrefixCaseInsensitive(c.s, c.prefix)
-		if got != c.want {
-			t.Errorf("HasPrefixCaseInsensitive(%q, %q) == %v, want %v", c.s, c.prefix, got, c.want)
-		}
-	}
-}
diff --git a/pkg/util/vm/vm_test.go b/pkg/util/vm/vm_test.go
deleted file mode 100644
index f61d869bd..000000000
--- a/pkg/util/vm/vm_test.go
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-Copyright 2024 The Kubernetes Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package vm
-
-import (
-	"testing"
-
-	"k8s.io/utils/pointer"
-
-	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2022-03-01/compute"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetVMPowerState(t *testing.T) {
-	type testCase struct {
-		name       string
-		vmStatuses *[]compute.InstanceViewStatus
-		expected   string
-	}
-
-	tests := []testCase{
-		{
-			name: "should return power state when there is power state status",
-			vmStatuses: &[]compute.InstanceViewStatus{
-				{Code: pointer.String("foo")},
-				{Code: pointer.String("PowerState/Running")},
-			},
-			expected: "Running",
-		},
-		{
-			name: "should return unknown when there is no power state status",
-			vmStatuses: &[]compute.InstanceViewStatus{
-				{Code: pointer.String("foo")},
-			},
-			expected: "unknown",
-		},
-		{
-			name:       "should return unknown when vmStatuses is nil",
-			vmStatuses: nil,
-			expected:   "unknown",
-		},
-		{
-			name:       "should return unknown when vmStatuses is empty",
-			vmStatuses: &[]compute.InstanceViewStatus{},
-			expected:   "unknown",
-		},
-	}
-
-	for _, test := range tests {
-		t.Run(test.name, func(t *testing.T) {
-			assert.Equal(t, test.expected, GetVMPowerState("vm", test.vmStatuses))
-		})
-	}
-}
-
-func TestIsNotActiveVMState(t *testing.T) {
-	type testCase struct {
-		name              string
-		provisioningState string
-		powerState        string
-		expected          bool
-	}
-
-	tests := []testCase{
-		{
-			name:              "should return true when provisioning state is deleting",
-			provisioningState: "deleting",
-			powerState:        "running",
-			expected:          true,
-		},
-		{
-			name:              "should return true when provisioning state is unknown",
-			provisioningState: "unknown",
-			powerState:        "running",
-			expected:          true,
-		},
-		{
-			name:              "should return true when power state is unknown",
-			provisioningState: "running",
-			powerState:        "unknown",
-			expected:          true,
-		},
-		{
-			name:              "should return true when power state is stopped",
-			provisioningState: "running",
-			powerState:        "stopped",
-			expected:          true,
-		},
-		{
-			name:              "should return true when power state is stopping",
-			provisioningState: "running",
-			powerState:        "stopping",
-			expected:          true,
-		},
-		{
-			name:              "should return true when power state is deallocated",
-			provisioningState: "running",
-			powerState:        "deallocated",
-			expected:          true,
-		},
-		{
-			name:              "should return true when power state is deallocating",
-			provisioningState: "running",
-			powerState:        "deallocating",
-			expected:          true,
-		},
-		{
-			name:              "should return false when provisioning state is running and power state is running",
-			provisioningState: "running",
-			powerState:        "running",
-			expected:          false,
-		},
-	}
-
-	for _, test := range tests {
-		t.Run(test.name, func(t *testing.T) {
-			assert.Equal(t, test.expected, IsNotActiveVMState(test.provisioningState, test.powerState))
-		})
-	}
-}
diff --git a/tests/e2e/network/network_security_group.go b/tests/e2e/network/network_security_group.go
index 0a3a9c1db..6c0c7a713 100644
--- a/tests/e2e/network/network_security_group.go
+++ b/tests/e2e/network/network_security_group.go
@@ -351,32 +351,17 @@ var _ = Describe("Network security group", Label(utils.TestSuiteLabelNSG), func(
 			return true
 		}
 
-		var (
-			allowedIPRanges []string
-			ipFamilies      []v1.IPFamily
-		)
-		_, v6Enabled := utils.IfIPFamiliesEnabled(tc.IPFamily)
-		if v6Enabled {
-			allowedIPRanges = []string{
-				"2c0f:fe40:8000::/48",
-				"2c0f:feb0::/43",
-			}
-			ipFamilies = []v1.IPFamily{v1.IPv6Protocol}
-		} else {
-			allowedIPRanges = []string{
-				"10.20.0.0/16",
-				"192.168.0.1/32",
-			}
-			ipFamilies = []v1.IPFamily{v1.IPv4Protocol}
+		allowedIPRanges := []string{
+			"10.20.0.0/16",
+			"192.168.0.1/32",
 		}
 
-		ipFamilyPolicy := v1.IPFamilyPolicySingleStack
+		ipFamilyPolicy := v1.IPFamilyPolicyPreferDualStack
 		svc := v1.Service{
 			Spec: v1.ServiceSpec{
 				Ports:          ports,
 				Type:           v1.ServiceTypeLoadBalancer,
 				Selector:       labels,
-				IPFamilies:     ipFamilies,
 				IPFamilyPolicy: &ipFamilyPolicy,
 			},
 			ObjectMeta: metav1.ObjectMeta{
diff --git a/tests/kubemark/configs/access-tokens/deployment.yaml b/tests/kubemark/configs/access-tokens/deployment.yaml
index 9842fd635..38df88878 100644
--- a/tests/kubemark/configs/access-tokens/deployment.yaml
+++ b/tests/kubemark/configs/access-tokens/deployment.yaml
@@ -21,7 +21,7 @@ spec:
       imagePullPolicy: Always
       containers:
         - name: access-tokens
-          image: aksci.azurecr.io/perf-tests-util/access-tokens:v0.0.6
+          image: gcr.io/k8s-testimages/perf-tests-util/access-tokens:v0.0.6
           args:
           {{range $tokenId := Loop .Tokens}}
             - --access-token-dirs=/var/tokens/{{$name}}-{{$tokenId}}
diff --git a/tests/kubemark/configs/density/deployment.yaml b/tests/kubemark/configs/density/deployment.yaml
index 613dada0a..bb47b41fc 100644
--- a/tests/kubemark/configs/density/deployment.yaml
+++ b/tests/kubemark/configs/density/deployment.yaml
@@ -16,7 +16,7 @@ spec:
         group: {{.Group}}
     spec:
       containers:
-      - image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+      - image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         name: {{.Name}}
         ports:
diff --git a/tests/kubemark/configs/density/legacy/rc.yaml b/tests/kubemark/configs/density/legacy/rc.yaml
index 8693872e3..0fd6a231b 100644
--- a/tests/kubemark/configs/density/legacy/rc.yaml
+++ b/tests/kubemark/configs/density/legacy/rc.yaml
@@ -15,7 +15,7 @@ spec:
         group: {{.Group}}
     spec:
       containers:
-      - image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+      - image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         name: {{.Name}}
         ports:
diff --git a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/configmap/deployment_with_configmap.yaml b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/configmap/deployment_with_configmap.yaml
index 315fac115..adae1fccb 100644
--- a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/configmap/deployment_with_configmap.yaml
+++ b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/configmap/deployment_with_configmap.yaml
@@ -19,7 +19,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         volumeMounts:
         {{ range $volumeIndex, $vol := Seq .VolumesPerPod }}
diff --git a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/downwardapi/deployment_with_downwardapi.yaml b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/downwardapi/deployment_with_downwardapi.yaml
index 4b11034c2..ae2111647 100644
--- a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/downwardapi/deployment_with_downwardapi.yaml
+++ b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/downwardapi/deployment_with_downwardapi.yaml
@@ -19,7 +19,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         volumeMounts:
         {{ range $volumeIndex, $vol := Seq .VolumesPerPod }}
diff --git a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/emptydir/deployment_with_emptydir.yaml b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/emptydir/deployment_with_emptydir.yaml
index 274bc66d8..132cb9d77 100644
--- a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/emptydir/deployment_with_emptydir.yaml
+++ b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/emptydir/deployment_with_emptydir.yaml
@@ -19,7 +19,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         volumeMounts:
         {{ range $volumeIndex, $vol := Seq .VolumesPerPod }}
diff --git a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/persistentvolume/deployment_with_pvc.yaml b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/persistentvolume/deployment_with_pvc.yaml
index 3a804d258..f34bc6027 100644
--- a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/persistentvolume/deployment_with_pvc.yaml
+++ b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/persistentvolume/deployment_with_pvc.yaml
@@ -19,7 +19,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         volumeMounts:
         {{ range $volumeIndex, $vol := Seq .VolumesPerPod }}
diff --git a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/secret/deployment_with_secret.yaml b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/secret/deployment_with_secret.yaml
index c2efee09f..b63703b7d 100644
--- a/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/secret/deployment_with_secret.yaml
+++ b/tests/kubemark/configs/experimental/storage/pod-startup/volume-types/secret/deployment_with_secret.yaml
@@ -19,7 +19,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         volumeMounts:
         {{ range $volumeIndex, $vol := Seq .VolumesPerPod }}
diff --git a/tests/kubemark/configs/l4ilb/dep.yaml b/tests/kubemark/configs/l4ilb/dep.yaml
index 2582de521..8a2f505b2 100644
--- a/tests/kubemark/configs/l4ilb/dep.yaml
+++ b/tests/kubemark/configs/l4ilb/dep.yaml
@@ -17,6 +17,6 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/mirror/docker/library/nginx:1.25
+        image: nginx
         ports:
         - containerPort: 8080
diff --git a/tests/kubemark/configs/load/config.yaml b/tests/kubemark/configs/load/config.yaml
index 9e5257624..9845ad568 100644
--- a/tests/kubemark/configs/load/config.yaml
+++ b/tests/kubemark/configs/load/config.yaml
@@ -203,7 +203,7 @@ steps:
     - basename: daemonset
       objectTemplatePath: daemonset.yaml
       templateFillMap:
-        Image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        Image: registry.k8s.io/pause:3.0
   {{end}}
   - namespaceRange:
       min: 1
@@ -438,7 +438,7 @@ steps:
       - basename: daemonset
         objectTemplatePath: daemonset.yaml
         templateFillMap:
-          Image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+          Image: registry.k8s.io/pause:3.1
   {{end}}
   {{if $ENABLE_JOBS}}
   - namespaceRange:
diff --git a/tests/kubemark/configs/load/daemonset.yaml b/tests/kubemark/configs/load/daemonset.yaml
index a29c5874f..34c2079f5 100644
--- a/tests/kubemark/configs/load/daemonset.yaml
+++ b/tests/kubemark/configs/load/daemonset.yaml
@@ -1,4 +1,4 @@
-{{$Image := DefaultParam .Image "mcr.microsoft.com/oss/kubernetes/pause:3.1"}}
+{{$Image := DefaultParam .Image "registry.k8s.io/pause:3.1"}}
 
 apiVersion: apps/v1
 kind: DaemonSet
diff --git a/tests/kubemark/configs/load/deployment.yaml b/tests/kubemark/configs/load/deployment.yaml
index 35d45ae62..9c41c5587 100644
--- a/tests/kubemark/configs/load/deployment.yaml
+++ b/tests/kubemark/configs/load/deployment.yaml
@@ -23,7 +23,7 @@ spec:
         svc: {{.SvcName}}-{{.Index}}
     spec:
       containers:
-      - image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+      - image: registry.k8s.io/pause:3.1
         name: {{.Name}}
         resources:
           requests:
diff --git a/tests/kubemark/configs/load/experimental-config.yaml b/tests/kubemark/configs/load/experimental-config.yaml
index f62db270f..4dba64b55 100644
--- a/tests/kubemark/configs/load/experimental-config.yaml
+++ b/tests/kubemark/configs/load/experimental-config.yaml
@@ -234,7 +234,7 @@ steps:
     - basename: daemonset
       objectTemplatePath: daemonset.yaml
       templateFillMap:
-        Image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        Image: registry.k8s.io/pause:3.0
   {{end}}
   - namespaceRange:
       min: 1
@@ -616,7 +616,7 @@ steps:
       - basename: daemonset
         objectTemplatePath: daemonset.yaml
         templateFillMap:
-          Image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+          Image: registry.k8s.io/pause:3.1
   {{end}}
   {{if $ENABLE_JOBS}}
   - namespaceRange:
diff --git a/tests/kubemark/configs/load/job.yaml b/tests/kubemark/configs/load/job.yaml
index 4102b32f8..15957d5a3 100644
--- a/tests/kubemark/configs/load/job.yaml
+++ b/tests/kubemark/configs/load/job.yaml
@@ -19,7 +19,7 @@ spec:
       containers:
       - name: {{.Name}}
         # TODO(#799): We should test the "run-to-completion" workflow and hence don't use pause pods.
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         resources:
           requests:
             cpu: 10m
diff --git a/tests/kubemark/configs/load/legacy/rc.yaml b/tests/kubemark/configs/load/legacy/rc.yaml
index 707939d7e..2f9274c7e 100644
--- a/tests/kubemark/configs/load/legacy/rc.yaml
+++ b/tests/kubemark/configs/load/legacy/rc.yaml
@@ -16,7 +16,7 @@ spec:
         svc: {{.SvcName}}-{{.Index}}
     spec:
       containers:
-      - image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+      - image: registry.k8s.io/pause:3.1
         name: {{.Name}}
         resources:
           requests:
diff --git a/tests/kubemark/configs/load/simple-deployment.yaml b/tests/kubemark/configs/load/simple-deployment.yaml
index 613dada0a..bb47b41fc 100644
--- a/tests/kubemark/configs/load/simple-deployment.yaml
+++ b/tests/kubemark/configs/load/simple-deployment.yaml
@@ -16,7 +16,7 @@ spec:
         group: {{.Group}}
     spec:
       containers:
-      - image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+      - image: registry.k8s.io/pause:3.1
         imagePullPolicy: IfNotPresent
         name: {{.Name}}
         ports:
diff --git a/tests/kubemark/configs/load/statefulset.yaml b/tests/kubemark/configs/load/statefulset.yaml
index 7efffa950..42924eb5e 100644
--- a/tests/kubemark/configs/load/statefulset.yaml
+++ b/tests/kubemark/configs/load/statefulset.yaml
@@ -22,7 +22,7 @@ spec:
     spec:
       containers:
       - name: {{.Name}}
-        image: mcr.microsoft.com/oss/kubernetes/pause:3.1
+        image: registry.k8s.io/pause:3.1
         ports:
           - containerPort: 80
             name: web
diff --git a/tests/kubemark/configs/node-throughput/config.yaml b/tests/kubemark/configs/node-throughput/config.yaml
index 9f420cc4d..b2a63a08f 100644
--- a/tests/kubemark/configs/node-throughput/config.yaml
+++ b/tests/kubemark/configs/node-throughput/config.yaml
@@ -4,7 +4,7 @@
 #Constants
 {{$POD_COUNT := DefaultParam .POD_COUNT 100}}
 {{$POD_THROUGHPUT := DefaultParam .POD_THROUGHPUT 5}}
-{{$CONTAINER_IMAGE := DefaultParam .CONTAINER_IMAGE "mcr.microsoft.com/oss/kubernetes/pause:3.1"}}
+{{$CONTAINER_IMAGE := DefaultParam .CONTAINER_IMAGE "registry.k8s.io/pause:3.1"}}
 {{$POD_STARTUP_LATENCY_THRESHOLD := DefaultParam .POD_STARTUP_LATENCY_THRESHOLD "5s"}}
 {{$OPERATION_TIMEOUT := DefaultParam .OPERATION_TIMEOUT "15m"}}
 
diff --git a/tests/kubemark/configs/node-throughput/windows_override.yaml b/tests/kubemark/configs/node-throughput/windows_override.yaml
index 74365df32..3c4a0d3e6 100644
--- a/tests/kubemark/configs/node-throughput/windows_override.yaml
+++ b/tests/kubemark/configs/node-throughput/windows_override.yaml
@@ -1,5 +1,5 @@
 POD_COUNT: 80
 POD_THROUGHPUT: 0.03
-CONTAINER_IMAGE: mcr.microsoft.com/oss/kubernetes/pause:3.4.1
+CONTAINER_IMAGE: registry.k8s.io/pause:3.4.1
 OPERATION_TIMEOUT: 90m
 POD_STARTUP_LATENCY_THRESHOLD: 60m
diff --git a/tests/kubemark/templates/hollow-node.yaml b/tests/kubemark/templates/hollow-node.yaml
index 25c8e81e3..2166cc10c 100644
--- a/tests/kubemark/templates/hollow-node.yaml
+++ b/tests/kubemark/templates/hollow-node.yaml
@@ -14,7 +14,7 @@ spec:
     spec:
       initContainers:
         - name: init-inotify-limit
-          image: mcr.microsoft.com/mirror/docker/library/busybox:1.35
+          image: docker.io/busybox:latest
           command: ["sysctl", "-w", "fs.inotify.max_user_instances=200"]
           securityContext:
             privileged: true