diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index a9eb933795..59daf63d85 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -17,6 +17,7 @@ sort: 15
 * FEATURE: add `quantiles("quantileLabel", phi1, ..., phiN, q)` aggregate function to [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html), which calculates the given `phi*` quantiles over time series returned by `q`. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1573).
 
 * BUGFIX: rename `sign` function to `sgn` in order to be consistent with PromQL. See [this pull request from Prometheus](https://github.com/prometheus/prometheus/pull/8457).
+* BUGFIX: vmagent: rename `role: endpointslices` to `role: endpointslice` in [kubernetes_sd_config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config) in order to be consistent with Prometheus. See [the corresponding code in Prometheus](https://github.com/prometheus/prometheus/blob/2ec6c7dbb82b72834021e01f1773eb90a67a371f/discovery/kubernetes/kubernetes.go#L99).
 * BUGFIX: improve the detection of the needed free space for background merge operation. This should prevent from possible out of disk space crashes during big merges. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1560).
 * BUGFIX: vmauth: remove trailing slash from the full url before requesting it from the backend. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/1554).
 * BUGFIX: [vmbackupmanager](https://docs.victoriametrics.com/vmbackupmanager.html): fix timeout error when snapshot takes longer than 10 seconds. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1571).
diff --git a/lib/promscrape/discovery/kubernetes/api.go b/lib/promscrape/discovery/kubernetes/api.go
index ff7db4a457..96b2a5a41c 100644
--- a/lib/promscrape/discovery/kubernetes/api.go
+++ b/lib/promscrape/discovery/kubernetes/api.go
@@ -16,9 +16,9 @@ type apiConfig struct {
 
 func newAPIConfig(sdc *SDConfig, baseDir string, swcFunc ScrapeWorkConstructorFunc) (*apiConfig, error) {
 	switch sdc.Role {
-	case "node", "pod", "service", "endpoints", "endpointslices", "ingress":
+	case "node", "pod", "service", "endpoints", "endpointslice", "ingress":
 	default:
-		return nil, fmt.Errorf("unexpected `role`: %q; must be one of `node`, `pod`, `service`, `endpoints`, `endpointslices` or `ingress`", sdc.Role)
+		return nil, fmt.Errorf("unexpected `role`: %q; must be one of `node`, `pod`, `service`, `endpoints`, `endpointslice` or `ingress`", sdc.Role)
 	}
 	ac, err := sdc.HTTPClientConfig.NewConfig(baseDir)
 	if err != nil {
diff --git a/lib/promscrape/discovery/kubernetes/api_watcher.go b/lib/promscrape/discovery/kubernetes/api_watcher.go
index b12d2e62c5..6d3bf8d4ef 100644
--- a/lib/promscrape/discovery/kubernetes/api_watcher.go
+++ b/lib/promscrape/discovery/kubernetes/api_watcher.go
@@ -263,8 +263,8 @@ func (gw *groupWatcher) getObjectByRoleLocked(role, namespace, name string) obje
 }
 
 func (gw *groupWatcher) startWatchersForRole(role string, aw *apiWatcher) {
-	if role == "endpoints" || role == "endpointslices" {
-		// endpoints and endpointslices watchers query pod and service objects. So start watchers for these roles as well.
+	if role == "endpoints" || role == "endpointslice" {
+		// endpoints and endpointslice watchers query pod and service objects. So start watchers for these roles as well.
 		gw.startWatchersForRole("pod", nil)
 		gw.startWatchersForRole("service", nil)
 	}
@@ -285,7 +285,7 @@ func (gw *groupWatcher) startWatchersForRole(role string, aw *apiWatcher) {
 		if needStart {
 			uw.reloadObjects()
 			go uw.watchForUpdates()
-			if role == "endpoints" || role == "endpointslices" {
+			if role == "endpoints" || role == "endpointslice" {
 				// Refresh endpoints and enpointslices targets in background, since they depend on other object types such as pod and service.
 				// This should fix https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240 .
 				go func() {
@@ -754,7 +754,7 @@ func getObjectTypeByRole(role string) string {
 		return "services"
 	case "endpoints":
 		return "endpoints"
-	case "endpointslices":
+	case "endpointslice":
 		return "endpointslices"
 	case "ingress":
 		return "ingresses"
@@ -774,7 +774,7 @@ func getObjectParsersForRole(role string) (parseObjectFunc, parseObjectListFunc)
 		return parseService, parseServiceList
 	case "endpoints":
 		return parseEndpoints, parseEndpointsList
-	case "endpointslices":
+	case "endpointslice":
 		return parseEndpointSlice, parseEndpointSliceList
 	case "ingress":
 		return parseIngress, parseIngressList
diff --git a/lib/promscrape/discovery/kubernetes/api_watcher_test.go b/lib/promscrape/discovery/kubernetes/api_watcher_test.go
index bc619d416b..f59e84833d 100644
--- a/lib/promscrape/discovery/kubernetes/api_watcher_test.go
+++ b/lib/promscrape/discovery/kubernetes/api_watcher_test.go
@@ -128,11 +128,11 @@ func TestGetAPIPathsWithNamespaces(t *testing.T) {
 		"/api/v1/namespaces/y/endpoints?labelSelector=bbb",
 	})
 
-	// role=endpointslices
-	f("endpointslices", nil, nil, []string{"/apis/discovery.k8s.io/v1/endpointslices"})
-	f("endpointslices", []string{"x", "y"}, []Selector{
+	// role=endpointslice
+	f("endpointslice", nil, nil, []string{"/apis/discovery.k8s.io/v1/endpointslices"})
+	f("endpointslice", []string{"x", "y"}, []Selector{
 		{
-			Role:  "endpointslices",
+			Role:  "endpointslice",
 			Field: "field",
 			Label: "label",
 		},
@@ -672,11 +672,11 @@ func TestGetScrapeWorkObjects(t *testing.T) {
 		{
 			name: "7 endpointslices slice with 1 service update",
 			sdc: &SDConfig{
-				Role: "endpointslices",
+				Role: "endpointslice",
 			},
 			expectedTargetsLen: 7,
 			initAPIObjectsByRole: map[string][]byte{
-				"endpointslices": []byte(`{
+				"endpointslice": []byte(`{
   "kind": "EndpointSliceList",
   "apiVersion": "discovery.k8s.io/v1",
   "metadata": {