に、自己に(サービスを通じて)接続することはできません、私はサービスやポッドを作成、複製コントローラを持ってkubernetesポッドは、私がkubernetes単一ノードのセットアップを持っているだけで、他のポッドのコンテナ
(https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant-single.htmlを参照してください)。これらのポッドは、同じサービス内の他のポッドに接続する必要があります(注:これは最終的にmongoがレプリカセット(非ローカルホスト)を実行できるようにするためですが、この単純な例はmongoが持つ問題を示しています)。
任意のノードからサービスに接続すると、(期待どおり)1つのポッドに配信されます。これは、自分自身(私がいるコンテナ)にロードバランスが取られるまで機能します。それから、接続に失敗します。
冗長で残念ですが、私はこの小さな例で何をしているのかわかるようにすべてのファイルを添付します。
Dockerfile:ここ
FROM ubuntu
MAINTAINER Eric H
RUN apt-get update; apt-get install netcat
EXPOSE 8080
COPY ./entry.sh/
ENTRYPOINT ["/entry.sh"]
は、エントリポイント
#!/bin/bash
# wait for a connection, then tell them who we are
while : ; do
echo "hello, the date=`date`; my host=`hostname`" | nc -l 8080
sleep .5
done
dockerfileに
docker build -t echoserver .
タグを構築し、私のK8Sクラスタのレジストリにアップロードされ
ここでdocker tag -f echoserver:latest 127.0.0.1:5000/echoserver:latest
docker push 127.0.0.1:5000/echoserver:latest
は私のレプリケーションコントローラー
apiVersion: v1
kind: ReplicationController
metadata:
labels:
role: echo-server
app: echo
name: echo-server-1
spec:
replicas: 3
template:
metadata:
labels:
entity: echo-server-1
role: echo-server
app: echo
spec:
containers:
-
image: 127.0.0.1:5000/echoserver:latest
name: echo-server-1
ports:
- containerPort: 8080
そして最後に、ここに私のサービスがある
kind: Service
metadata:
labels:
app: echo
role: echo-server
name: echo-server-1
name: echo-server-1
spec:
selector:
entity: echo-server-1
role: echo-server
ports:
- port: 8080
targetPort: 8080
は私のRC kubectl create -f echo.controller.yaml
kubectl create -f echo.service.yaml
を作成しています210
は私のPOD
kubectl get po
NAME READY STATUS RESTARTS AGE
echo-server-1-jp0aj 1/1 Running 0 39m
echo-server-1-shoz0 1/1 Running 0 39m
echo-server-1-y9bv2 1/1 Running 0 39m
はIP
kubectl exec -t -i echo-server-1-jp0aj /bin/bash
ポッドの1つに
kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
echo-server-1 10.3.0.246 <none> 8080/TCP entity=echo-server-1,role=echo-server 39m
Execは今、それは私を与えるだろう...サービスに複数回接続するサービスをゲットすべてのポッドのapp-messageがそれ自身に到達したときを除いて、それはハングします。
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:02:38 UTC 2016; my host=echo-server-1-y9bv2
[email protected]:/# nc 10.3.0.246 8080
^C
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:02:43 UTC 2016; my host=echo-server-1-shoz0
[email protected]:/# nc 10.3.0.246 8080
^C
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:19 UTC 2016; my host=echo-server-1-y9bv2
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:23 UTC 2016; my host=echo-server-1-shoz0
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:26 UTC 2016; my host=echo-server-1-y9bv2
[email protected]:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:27 UTC 2016; my host=echo-server-1-shoz0
[email protected]:/# nc 10.3.0.246 8080
サービスのすべてのメンバーが他のすべてのメンバー(自分自身を含む)に接続できるように設定するにはどうすればよいですか?
kubelet --version =真 Kubernetes v1.1.2デベロッパー+ 3085895私は私の出発点 – rideswitch
。 0 from beta – rideswitch
Coreosバージョン899.5としてhttps://github.com/coreos/coreos-kubernetes.gitから単一ノードのデモを使用してい – rideswitch