将测试配置与Ignite 2.4和k8s 1.9:
一起使用<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder"/>
</property>
</bean>
</property>
</bean>
</beans>
无法在https://kubernetes.default.svc.cluster.local:443找到Kubernetes API服务器 我可以在XML配置文件中设置API服务器URL吗?怎么样?
答案 0 :(得分:6)
@Denis是对的。
Kubernetes使用RBAC访问控制系统,您需要授权您的pod访问API。
为此,您需要在您的广告连播中添加Service Account。
所以,为此你需要:
创建服务帐户并为其设置角色:
apiVersion: v1
kind: ServiceAccount
metadata:
name: ignite
namespace: <Your namespace>
我不确定只访问pod的权限对于Ignite来说是否足够,但如果没有 - 您可以根据需要添加更多权限。 Here是具有大量权限列表的不同类型角色的示例。所以,现在我们为您的应用创建群集角色:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: ignite
namespace: <Your namespace>
rules:
- apiGroups:
- ""
resources:
- pods # Here is resources you can access
verbs: # That is what you can do with them
- get
- list
- watch
为该角色创建绑定:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: ignite
roleRef:
kind: ClusterRole
name: ignite
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: ignite
namespace: <Your namespace>
现在,您需要将ServiceAccount与您的应用程序关联:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
....
spec:
template:
spec:
serviceAccountName: ignite
之后,您的应用程序将可以访问K8s API。附:不要忘记将<Your namespace>
更改为运行Ignition的命名空间。
答案 1 :(得分:4)
答案 2 :(得分:1)
403错误的问题可以通过向服务帐户授予更多权限来解决。
答案 3 :(得分:1)
经过测试的版本:
Kubernetes:v1.8
点燃:v2.4
这将更加宽容。
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: ignite-rbac
subjects:
- kind: ServiceAccount
name: default
namespace: <namespace>
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
答案 4 :(得分:0)
如果您遭到403的未经授权,那么使您的资源使用的服务帐户可能没有足够的权限。在确保您的名称空间和服务帐户以及部署/副本集完全符合您的要求之后,应该更新权限。
此链接对于设置服务帐户的权限非常有用: https://kubernetes.io/docs/reference/access-authn-authz/rbac/#service-account-permissions