diff --git a/metropolis/node/core/consensus/status.go b/metropolis/node/core/consensus/status.go
index 55b4339..ee3efbc 100644
--- a/metropolis/node/core/consensus/status.go
+++ b/metropolis/node/core/consensus/status.go
@@ -189,3 +189,21 @@
 	externalAddress string
 	externalPort    int
 }
+
+// RemoveNode removes the etcd member with the given node ID, if it is currently
+// a member. Etcd fails this operation if it is not safe to perform.
+func (s *Status) RemoveNode(ctx context.Context, nodeID string) error {
+	members, err := s.cl.MemberList(ctx)
+	if err != nil {
+		return fmt.Errorf("could not retrieve existing members: %w", err)
+	}
+	for _, m := range members.Members {
+		if GetEtcdMemberNodeId(m) == nodeID {
+			_, err := s.cl.MemberRemove(ctx, m.ID)
+			if err != nil {
+				return fmt.Errorf("could not remove member: %w", err)
+			}
+		}
+	}
+	return nil
+}
diff --git a/metropolis/node/core/curator/impl_leader_management.go b/metropolis/node/core/curator/impl_leader_management.go
index 6315c14..338cc17 100644
--- a/metropolis/node/core/curator/impl_leader_management.go
+++ b/metropolis/node/core/curator/impl_leader_management.go
@@ -354,6 +354,14 @@
 			if node.kubernetesController != nil {
 				return nil, status.Errorf(codes.FailedPrecondition, "could not remove consensus member role while node is a kubernetes controller")
 			}
+			// First, remove the etcd membership. This performs safety checks and
+			// fails if the remaining, currently up nodes would not form a quorum.
+			err := l.consensusStatus.RemoveNode(ctx, id)
+			if err != nil {
+				return nil, status.Errorf(codes.Unavailable, "could not remove node: %v", err)
+			}
+			// After successfully removing membership, it is safe to remove the role,
+			// which will stop etcd running on the node.
 			node.DisableConsensusMember()
 		}
 	}
diff --git a/metropolis/test/e2e/suites/ha/BUILD.bazel b/metropolis/test/e2e/suites/ha/BUILD.bazel
index 3d9c688..a88d4f7 100644
--- a/metropolis/test/e2e/suites/ha/BUILD.bazel
+++ b/metropolis/test/e2e/suites/ha/BUILD.bazel
@@ -16,6 +16,8 @@
         "xTestImagesManifestPath": "$(rlocationpath //metropolis/test/e2e:testimages_manifest )",
     },
     deps = [
+        "//metropolis/node/core/curator/proto/api",
+        "//metropolis/proto/api",
         "//metropolis/test/launch",
         "//metropolis/test/localregistry",
         "//metropolis/test/util",
diff --git a/metropolis/test/e2e/suites/ha/run_test.go b/metropolis/test/e2e/suites/ha/run_test.go
index f2f7cc2..7dcd228 100644
--- a/metropolis/test/e2e/suites/ha/run_test.go
+++ b/metropolis/test/e2e/suites/ha/run_test.go
@@ -13,6 +13,9 @@
 	"source.monogon.dev/metropolis/test/localregistry"
 	"source.monogon.dev/metropolis/test/util"
 	"source.monogon.dev/osbase/test/launch"
+
+	cpb "source.monogon.dev/metropolis/node/core/curator/proto/api"
+	apb "source.monogon.dev/metropolis/proto/api"
 )
 
 var (
@@ -105,4 +108,47 @@
 			return nil
 		})
 	}
+
+	// Test node role removal.
+	curC, err := cluster.CuratorClient()
+	if err != nil {
+		t.Fatalf("Could not get CuratorClient: %v", err)
+	}
+	mgmt := apb.NewManagementClient(curC)
+	cur := cpb.NewCuratorClient(curC)
+
+	util.MustTestEventual(t, "Remove KubernetesController role", ctx, 10*time.Second, func(ctx context.Context) error {
+		fa := false
+		_, err := mgmt.UpdateNodeRoles(ctx, &apb.UpdateNodeRolesRequest{
+			Node: &apb.UpdateNodeRolesRequest_Id{
+				Id: cluster.NodeIDs[0],
+			},
+			KubernetesController: &fa,
+		})
+		return err
+	})
+	util.MustTestEventual(t, "Remove ConsensusMember role", ctx, time.Minute, func(ctx context.Context) error {
+		fa := false
+		_, err := mgmt.UpdateNodeRoles(ctx, &apb.UpdateNodeRolesRequest{
+			Node: &apb.UpdateNodeRolesRequest_Id{
+				Id: cluster.NodeIDs[0],
+			},
+			ConsensusMember: &fa,
+		})
+		return err
+	})
+
+	// Test that removing the ConsensusMember role from a node removed the
+	// corresponding etcd member from the cluster.
+	var st *cpb.GetConsensusStatusResponse
+	util.MustTestEventual(t, "Get ConsensusStatus", ctx, time.Minute, func(ctx context.Context) error {
+		st, err = cur.GetConsensusStatus(ctx, &cpb.GetConsensusStatusRequest{})
+		return err
+	})
+
+	for _, member := range st.EtcdMember {
+		if member.Id == cluster.NodeIDs[0] {
+			t.Errorf("member still present in etcd")
+		}
+	}
 }
