デフォルトではKubernetesは、デフォルトのnamesapceにkubernetes
サービスを追加します。これにより、その名前空間内の任意のポッドからkubernetes APIにアクセスできます。Kubernetes APIを新しい名前空間に内部的に公開するにはどうすればよいですか?
たとえば、私がすることができます
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
kubectl exec -it $SOME_POD -- bash
curl -v https://kubernetes/api/v1/ \
-H "Authorization: Bearer $TOKEN" \
-k -v
など何かを取得:私は新しい名前空間を作成する場合、デフォルトでは何もkubernetes
サービスはありません
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Sat, 15 Jul 2017 22:16:09 GMT
< Transfer-Encoding: chunked
<
{
"kind": "APIResourceList",
"groupVersion": "v1",
"resources": [
{
"name": "bindings",
"namespaced": true,
...
を。
apiVersion: v1
kind: Service
metadata:
labels:
component: apiserver
provider: kubernetes
name: kubernetes
resourceVersion: "12"
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
sessionAffinity: ClientIP
type: ClusterIP
をしかし、任意のポッドに接続することがあるようですので、これは動作するようには思えません。私は(基本的にはデフォルトの名前空間からコピーされた)次のリソースサービス定義を使用して作成しようとしています。
基本的には、新しく作成された名前空間のdefault
名前空間と同じ動作が必要です。
現在のバージョン:
{
"major": "1",
"minor": "5",
"gitVersion": "v1.5.7",
"gitCommit": "8eb75a5810cba92ccad845ca360cf924f2385881",
"gitTreeState": "clean",
"buildDate": "2017-04-27T09:42:05Z",
"goVersion": "go1.7.5",
"compiler": "gc",
"platform": "linux/amd64"
}
小さな問題かかわら: '/アプリ#ピングkubernetes.default.svc PING kubernetes.default:これらの2つのアドレスが二つの異なるIPアドレスに解決.SVC(10.3.240.1):56データバイト ^ C --- kubernetes.default.svcのping統計---送信 2つのパケット、0のパケットが受信さ、100%のパケット損失 /アプリ#が$ KUBERNETES_SERVICE_HOST 10.3エコー.248.39 '彼らは同じでなければならないようだ。 –