I am using fabric8 kubernetes plugin for elasticsearch 2.1 cluster discovery. During startup, my ES fails because of the following error:
[2015-12-15 00:30:28,049][WARN ][io.fabric8.elasticsearch.discovery.kubernetes.KubernetesUnicastHostsProvider] [Freakmaster] Exception caught during discovery: access denied ("java.io.FilePermission" "/home/elasticsearch/.kube/config" "read")
java.security.AccessControlException: access denied ("java.io.FilePermission" "/home/elasticsearch/.kube/config" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at sun.nio.fs.UnixPath.checkRead(UnixPath.java:795)
at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:49)
at sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:144)
at sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
at java.nio.file.Files.readAttributes(Files.java:1737)
at java.nio.file.Files.isRegularFile(Files.java:2229)
at io.fabric8.kubernetes.client.Config.tryKubeConfig(Config.java:236)
at io.fabric8.kubernetes.client.Config.<init>(Config.java:106)
at io.fabric8.kubernetes.client.ConfigBuilder.<init>(ConfigBuilder.java:17)
at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:37)
at io.fabric8.kubernetes.client.DefaultKubernetesClient.<init>(DefaultKubernetesClient.java:82)
at io.fabric8.elasticsearch.cloud.kubernetes.KubernetesAPIServiceImpl.client(KubernetesAPIServiceImpl.java:49)
at io.fabric8.elasticsearch.cloud.kubernetes.KubernetesAPIServiceImpl.endpoints(KubernetesAPIServiceImpl.java:35)
at io.fabric8.elasticsearch.discovery.kubernetes.KubernetesUnicastHostsProvider.buildDynamicNodes(KubernetesUnicastHostsProvider.java:99)
at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing.sendPings(UnicastZenPing.java:335)
at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing$2$1.doRun(UnicastZenPing.java:253)
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
As you can see the config assumes /home/elasticsearch as the installation location for some reason. My ES is actually setup at /opt/elasticsearch. I even passed path.home config param and set HOME env var. But the error persists.
Any help/suggestion is greatly appreciated.
You need to run with security manager disabled - see https://github.com/fabric8io/elasticsearch-cloud-kubernetes/blob/master/elasticsearch.yml#L20 for the setting. I've added this to the readme.
Plugins can only be able to update security policy from 2.2 - see https://github.com/elastic/elasticsearch/issues/14880 for more details.