[root@A001 ~]# [root@A001 ~]# curl -k -u admin:admin -H "X-Requested-By: ambari" -X PUT -d '{ > "Clusters": { > "security_type": "KERBEROS", > "kdc_type": "MIT_KDC", > "kdc_host": "10.20.100.101", > "realm": "NMP.COM", > "admin_principal": "admin/[email protected]", > "admin_password": "123456789" > } > }' "https://10.20.100.101:8443/api/v1/clusters/HDP" { "status" : 400, "message" : "The properties [Clusters/kdc_type, Clusters/kdc_host, Clusters/realm, Clusters/admin_principal, Clusters/admin_password] specified in the request or predicate are not supported for the resource type Cluster."
时间: 2025-06-30 07:14:46 浏览: 13
### Ambari API 配置 Kerberos 报错分析与解决方案
在通过 Ambari API 配置 Kerberos 时,出现如下错误提示:
```
properties Clusters/kdc_type, kdc_host, realm, admin_principal, admin_password not supported
```
该问题表明当前请求中使用的部分配置参数不被目标资源类型所支持。Ambari 的 REST API 在更新集群安全配置时,并非所有 Kerberos 相关字段都可以直接通过 `Clusters` 资源进行设置 [^1]。
---
### 正确使用 Ambari API 配置 Kerberos 安全类型
Kerberos 的相关配置应通过 Ambari 的 Kerberos 向导或特定的配置端点进行设置,而不是直接修改 `Clusters` 资源下的属性。推荐的方式是通过创建和提交 **Kerberos Descriptor** 和 **Cluster Security State** 来启用 Kerberos 认证。
例如,可以通过以下步骤完成配置:
#### 1. 创建 Kerberos Descriptor
发送 PUT 请求至:
```http
PUT /api/v1/clusters/<cluster_name>/kerberos_descriptors/cluster
```
示例请求体:
```json
{
"KerberosDescriptor": {
"realm": "NMP.COM",
"kdc_type": "MIT KDC",
"kdc_host": "kdc.nmp.com",
"admin_server_host": "kdc.nmp.com",
"admin_principal": "admin/[email protected]",
"admin_password": "your_admin_password",
"ldap_url": null,
"container_dn": null,
"transport_protocol": "TCP"
}
}
```
#### 2. 设置集群安全状态为 Kerberos
发送 POST 请求至:
```http
POST /api/v1/clusters/<cluster_name>
```
请求体内容:
```json
{
"Clusters": {
"security_type": "KERBEROS"
}
}
```
此操作将触发 Kerberos 启用流程,并确保配置参数通过合法接口传递 [^1]。
---
### 避免使用非法属性路径
直接向 `/api/v1/clusters/<cluster_name>` 提交包含 `kdc_type`, `kdc_host`, `realm` 等字段的请求会导致服务器返回 400 错误,因为这些属性不属于 `Clusters` 资源的有效字段集合 [^1]。
建议始终参考 Ambari 官方文档或使用其 Web UI 中的 Kerberos 向导来构建正确的 API 请求结构。
---
###
阅读全文
相关推荐


















