Tôi có một kubernetes thiết lập đơn nút (xem https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant-single.html)kubernetes pod không thể kết nối (thông qua dịch vụ) để tự, chỉ để khác pod-container
Tôi có một dịch vụ và một bộ điều khiển sao chép tạo vỏ. Những pod này cần kết nối với các pod khác trong cùng một dịch vụ (Lưu ý: điều này là cuối cùng để tôi có thể chạy các tập w/replica mongo (non localhost), nhưng ví dụ đơn giản này cho thấy vấn đề mà mongo có).
Khi tôi kết nối từ bất kỳ nút nào với dịch vụ, nó sẽ được phân phối (như mong đợi) vào một trong các nhóm. Điều này sẽ làm việc cho đến khi nó tải số dư cho chính nó (container mà tôi đang trên). Sau đó, nó không kết nối được.
Xin lỗi để tiết lộ, nhưng tôi sẽ đính kèm tất cả các tệp của tôi để bạn có thể xem những gì tôi đang làm trong ví dụ nhỏ này.
Dockerfile:
FROM ubuntu
MAINTAINER Eric H
RUN apt-get update; apt-get install netcat
EXPOSE 8080
COPY ./entry.sh/
ENTRYPOINT ["/entry.sh"]
Dưới đây là điểm mấu chốt
#!/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
xây dựng dockerfile
docker build -t echoserver .
tag và tải lên registry k8s cụm của tôi
docker tag -f echoserver:latest 127.0.0.1:5000/echoserver:latest
docker push 127.0.0.1:5000/echoserver:latest
Đây là điều khiển Replication tôi
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
Và cuối cùng, đây là dịch vụ
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
tôi Tạo dịch vụ của tôi kubectl create -f echo.service.yaml
Tạo rc tôi kubectl create -f echo.controller.yaml
Nhận PODs tôi
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
Lấy IP dịch vụ
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 thành một trong những vỏ kubectl exec -t -i echo-server-1-jp0aj /bin/bash
Bây giờ kết nối với dịch vụ nhiều lần ... Nó sẽ cho tôi tin nhắn ứng dụng cho tất cả các nhóm ngoại trừ khi nó được gửi đến chính nó, khi nó bị treo.
[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
Tôi có thể định cấu hình mọi thứ để tất cả thành viên của dịch vụ có thể kết nối với tất cả các thành viên khác, bao gồm cả chính nó?
kubelet --version = true Kubernetes v1.1.2 + 3085895 – rideswitch
Tôi đang sử dụng bản trình diễn một nút từ https://github.com/coreos/coreos-kubernetes.git làm điểm xuất phát của tôi – rideswitch
Coreos phiên bản 899.5. 0 từ bản beta – rideswitch