首先,经过Helm在Kubernetes集群上安装IPFS 。下一步须要将其管理服务端口8080和http代理服务端口5001开放出来,集群外面的应用(如浏览器)能够访问。node
将Service映射为宿主机端口,以下。git
kubectl port-forward ipfs-ipfs-0 8080:8080 5001:5001 --namespace=ipfs &
其中,ipfs-ipfs-0为个人默认的ipfs pod的ID。若是你的不同,能够经过 kubectl get pod -n ipfs 来获取,其中-n ipfs我安装的kubernetes集群中的ipfs服务的命名空间。github
在浏览器地址栏输入http://localhost:5001/webui 就能够查看服务的状态。web
可是,这种方法须要每次运行一个外部命令,比较麻烦。尝试经过NodePort、Ingress和LoadBalancer都出现打开网页后proxy代理链接不上的状况。关于这几种方法公开服务的部署,参见:docker
尽管 Kubernetes 提供了将服务映射为节点上的端口的能力(使用NodePort),但这些端口只能在30000~32768范围内分配。所以你不能将80端口直接映射到节点的宿主机,但这对于有的应用来讲(指定端口)确是必须的。 这个状况在未来会修改,这里暂时提供了一个方法,能够填平这个坑。api
容器镜像 k8s.gcr.io/proxy-to-service:v2
是一个很小的Pod,能够完成转发服务端口到宿主机的操做。可使用任何端口,只要该端口对于服务和宿主机都是可用的就行。浏览器
MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings docker pull ${MY_REGISTRY}/k8s-gcr-io-proxy-to-service:v2 docker tag ${MY_REGISTRY}/k8s-gcr-io-proxy-to-service:v2 k8s.gcr.io/proxy-to-service:v2
例如,假设转发node's port 53 (DNS) 到集群的 DNS service. Pod的安装配置文件以下:session
apiVersion: v1 kind: Pod metadata: name: dns-proxy spec: containers: - name: proxy-udp image: k8s.gcr.io/proxy-to-service:v2 args: [ "udp", "53", "kube-dns.default", "1" ] ports: - name: udp protocol: UDP containerPort: 53 hostPort: 53 - name: proxy-tcp image: k8s.gcr.io/proxy-to-service:v2 args: [ "tcp", "53", "kube-dns.default" ] ports: - name: tcp protocol: TCP containerPort: 53 hostPort: 53
这将建立一个pod,包含两个containers (one for TCP, one for UDP)。每一个容器接收 port (53 here) 而后转发流量到 kube-dns
service。运行在多少个节点都行,若是你愿意。app
注意 UDP container 有第四个参数 - 超时. 与 TCP 不一样,UDP 并不真正具备 "connection terminated"。若是须要proxy UDP, 你须要选择 合适的timeout. 你也能够指定TCP sessions的超时,超过期间后将会自动关闭链接。在这里,DNS sessions 不会真正地重用,一个短的timeout就能够了。tcp
咱们修改上面的参数,用来代理IPFS的服务。以下:
apiVersion: v1 kind: Pod metadata: name: ipfs-portforward namespace: ipfs spec: containers: - name: proxy-ipfs-ui image: k8s.gcr.io/proxy-to-service:v2 args: [ "tcp", "5001", "ipfs-ipfs.ipfs" ] ports: - name: tcp protocol: TCP containerPort: 5001 hostPort: 5001 - name: proxy-ipfs image: k8s.gcr.io/proxy-to-service:v2 args: [ "tcp", "8080", "ipfs-ipfs.ipfs" ] ports: - name: tcp protocol: TCP containerPort: 8080 hostPort: 8080
保存为portforward.yaml文件,而后运行:
kubectl apply -f portforward.yaml
再去打开 http://localhost:5001/webui。正常状况下,这与在本机安装的IPFS几乎是同样的。
若是经过命令行访问,能够执行:
kubectl exec -n ipfs ipfs-ipfs-0 /bin/sh #而后,输入: ipfs #应该能够看到IPFS的帮助提示。