diff --git a/metropolis/node/kubernetes/reconciler/BUILD.bazel b/metropolis/node/kubernetes/reconciler/BUILD.bazel
index e4bc41d..306c273 100644
--- a/metropolis/node/kubernetes/reconciler/BUILD.bazel
+++ b/metropolis/node/kubernetes/reconciler/BUILD.bazel
@@ -5,7 +5,6 @@
     srcs = [
         "reconciler.go",
         "resources_csi.go",
-        "resources_podsecuritypolicy.go",
         "resources_rbac.go",
         "resources_runtimeclass.go",
         "resources_storageclass.go",
@@ -15,8 +14,7 @@
     deps = [
         "//metropolis/pkg/supervisor",
         "@io_k8s_api//core/v1:core",
-        "@io_k8s_api//node/v1beta1",
-        "@io_k8s_api//policy/v1beta1",
+        "@io_k8s_api//node/v1:node",
         "@io_k8s_api//rbac/v1:rbac",
         "@io_k8s_api//storage/v1:storage",
         "@io_k8s_apimachinery//pkg/apis/meta/v1:meta",
diff --git a/metropolis/node/kubernetes/reconciler/reconciler.go b/metropolis/node/kubernetes/reconciler/reconciler.go
index 6c13df0..4ed4859 100644
--- a/metropolis/node/kubernetes/reconciler/reconciler.go
+++ b/metropolis/node/kubernetes/reconciler/reconciler.go
@@ -114,7 +114,6 @@
 
 func allResources(clientSet kubernetes.Interface) map[string]resource {
 	return map[string]resource{
-		"psps":                resourcePodSecurityPolicies{clientSet},
 		"clusterroles":        resourceClusterRoles{clientSet},
 		"clusterrolebindings": resourceClusterRoleBindings{clientSet},
 		"storageclasses":      resourceStorageClasses{clientSet},
diff --git a/metropolis/node/kubernetes/reconciler/resources_podsecuritypolicy.go b/metropolis/node/kubernetes/reconciler/resources_podsecuritypolicy.go
deleted file mode 100644
index 97a38dd..0000000
--- a/metropolis/node/kubernetes/reconciler/resources_podsecuritypolicy.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2020 The Monogon Project Authors.
-//
-// SPDX-License-Identifier: Apache-2.0
-//
-// 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 reconciler
-
-import (
-	"context"
-
-	core "k8s.io/api/core/v1"
-	policy "k8s.io/api/policy/v1beta1"
-	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/client-go/kubernetes"
-)
-
-type resourcePodSecurityPolicies struct {
-	kubernetes.Interface
-}
-
-func (r resourcePodSecurityPolicies) List(ctx context.Context) ([]meta.Object, error) {
-	res, err := r.PolicyV1beta1().PodSecurityPolicies().List(ctx, listBuiltins)
-	if err != nil {
-		return nil, err
-	}
-	objs := make([]meta.Object, len(res.Items))
-	for i := range res.Items {
-		objs[i] = &res.Items[i]
-	}
-	return objs, nil
-}
-
-func (r resourcePodSecurityPolicies) Create(ctx context.Context, el meta.Object) error {
-	_, err := r.PolicyV1beta1().PodSecurityPolicies().Create(ctx, el.(*policy.PodSecurityPolicy), meta.CreateOptions{})
-	return err
-}
-
-func (r resourcePodSecurityPolicies) Delete(ctx context.Context, name string) error {
-	return r.PolicyV1beta1().PodSecurityPolicies().Delete(ctx, name, meta.DeleteOptions{})
-}
-
-func (r resourcePodSecurityPolicies) Expected() []meta.Object {
-	return []meta.Object{
-		&policy.PodSecurityPolicy{
-			ObjectMeta: meta.ObjectMeta{
-				Name:   "default",
-				Labels: builtinLabels(nil),
-				Annotations: map[string]string{
-					"kubernetes.io/description": "This default PSP allows the creation of pods using features that are" +
-						" generally considered safe against any sort of escape.",
-				},
-			},
-			Spec: policy.PodSecurityPolicySpec{
-				AllowPrivilegeEscalation: True(),
-				AllowedCapabilities: []core.Capability{ // runc's default list of allowed capabilities
-					"SETPCAP",
-					"MKNOD",
-					"AUDIT_WRITE",
-					"CHOWN",
-					"NET_RAW",
-					"DAC_OVERRIDE",
-					"FOWNER",
-					"FSETID",
-					"KILL",
-					"SETGID",
-					"SETUID",
-					"NET_BIND_SERVICE",
-					"SYS_CHROOT",
-					"SETFCAP",
-				},
-				HostNetwork: false,
-				HostIPC:     false,
-				HostPID:     false,
-				FSGroup: policy.FSGroupStrategyOptions{
-					Rule: policy.FSGroupStrategyRunAsAny,
-				},
-				RunAsUser: policy.RunAsUserStrategyOptions{
-					Rule: policy.RunAsUserStrategyRunAsAny,
-				},
-				SELinux: policy.SELinuxStrategyOptions{
-					Rule: policy.SELinuxStrategyRunAsAny,
-				},
-				SupplementalGroups: policy.SupplementalGroupsStrategyOptions{
-					Rule: policy.SupplementalGroupsStrategyRunAsAny,
-				},
-				Volumes: []policy.FSType{ // Volumes considered safe to use
-					policy.ConfigMap,
-					policy.EmptyDir,
-					policy.Projected,
-					policy.Secret,
-					policy.DownwardAPI,
-					policy.PersistentVolumeClaim,
-				},
-			},
-		},
-	}
-}
diff --git a/metropolis/node/kubernetes/reconciler/resources_runtimeclass.go b/metropolis/node/kubernetes/reconciler/resources_runtimeclass.go
index 11c2fa0..b41c2c9 100644
--- a/metropolis/node/kubernetes/reconciler/resources_runtimeclass.go
+++ b/metropolis/node/kubernetes/reconciler/resources_runtimeclass.go
@@ -19,7 +19,7 @@
 import (
 	"context"
 
-	node "k8s.io/api/node/v1beta1"
+	node "k8s.io/api/node/v1"
 	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/client-go/kubernetes"
 )
@@ -29,7 +29,7 @@
 }
 
 func (r resourceRuntimeClasses) List(ctx context.Context) ([]meta.Object, error) {
-	res, err := r.NodeV1beta1().RuntimeClasses().List(ctx, listBuiltins)
+	res, err := r.NodeV1().RuntimeClasses().List(ctx, listBuiltins)
 	if err != nil {
 		return nil, err
 	}
@@ -41,12 +41,12 @@
 }
 
 func (r resourceRuntimeClasses) Create(ctx context.Context, el meta.Object) error {
-	_, err := r.NodeV1beta1().RuntimeClasses().Create(ctx, el.(*node.RuntimeClass), meta.CreateOptions{})
+	_, err := r.NodeV1().RuntimeClasses().Create(ctx, el.(*node.RuntimeClass), meta.CreateOptions{})
 	return err
 }
 
 func (r resourceRuntimeClasses) Delete(ctx context.Context, name string) error {
-	return r.NodeV1beta1().RuntimeClasses().Delete(ctx, name, meta.DeleteOptions{})
+	return r.NodeV1().RuntimeClasses().Delete(ctx, name, meta.DeleteOptions{})
 }
 
 func (r resourceRuntimeClasses) Expected() []meta.Object {
