使用OpenShift Origin 的时候遇到http请求比较简单,使用router转发即可,但是router只能监听80/443端口,其他的端口必须通过创建NodePort类型的Service做端口转发。
起名为:mariadb.json:
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "mariadb-nodeport"
},
"spec": {
"type": "NodePort",
"ports": [
{
"port": 3306,
"targetPort": 3306,
"nodePort": 31006
}
],
"selector": {
"name": "mariadb"
}
}
}
2、创建Service
oc create -f mariadb.json
ports 里面是数组,可以定义多个转发的端口
targetPort是pod的端口,我运行的是mariadb,所以是3306
port 是指创建的这个服务(mariadb-nodeport)的端口,oc/k8s会给这个服务分配一个ip,这个端口号是服务的
nodePort是外部的端口号,用master节点的ip地址+这个端口号就可以访问了,当然别忘了配置防火墙。
OpenShift貌似没有这方面的内容,《开源容器云OpenShift》应该是市面上唯一的一本OpenShift参考了,写的很简单,更多内容都得查询官网,我在这个问题上被官网坑了一把,官网说用oc port-forward命令转发端口,可命令执行的时候都会卡住,转发不了,害得我从网络到防火墙到pod终端开mariadb远程链接,忙活了3天…忽然想起来OpenShift是基于k8s,k8s的资料网上一查一大把。真是坑苦了我这种不会k8s的人了…