IPFS在Kubernetes部署的服务开放

IPFS在Kubernetes部署的服务开放

首先,经过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)

可是,这种方法须要每次运行一个外部命令,比较麻烦。尝试经过NodePort、Ingress和LoadBalancer都出现打开网页后proxy代理链接不上的状况。关于这几种方法公开服务的部署,参见:docker

三、端口转发服务

尽管 Kubernetes 提供了将服务映射为节点上的端口的能力(使用NodePort),但这些端口只能在30000~32768范围内分配。所以你不能将80端口直接映射到节点的宿主机,但这对于有的应用来讲(指定端口)确是必须的。 这个状况在未来会修改,这里暂时提供了一个方法,能够填平这个坑。api

3.1 获取镜像

容器镜像 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

3.2 Pod安装文件

例如,假设转发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

3.3 IPFS代理安装文件

咱们修改上面的参数,用来代理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
  • 建议:
    • 提早拉取镜像,如前3.1所示的方法。
    • 安装到与IPFS同一个命名空间。

3.4 访问IPFS服务

再去打开 http://localhost:5001/webui。正常状况下,这与在本机安装的IPFS几乎是同样的。

若是经过命令行访问,能够执行:

kubectl exec -n ipfs ipfs-ipfs-0 /bin/sh

#而后,输入:
ipfs

#应该能够看到IPFS的帮助提示。

四、参考

相关文章
相关标签/搜索