美文网首页DOCKER自留地
k8s-访问外网服务的两种方式

k8s-访问外网服务的两种方式

作者: 刘大坝 | 来源:发表于2020-11-15 23:48 被阅读0次

需求

k8s集群内的pod需要访问mysql,由于mysql的性质,不适合部署在k8s集群内,故k8s集群内的应用需要链接mysql时,需要配置链接外网的mysql,本次测试 k8s集群ip段为192.168.23.xx。以下提供两种方式,EndpointExternalName方式。

一、创建Endpoint类型的服务

创建命名空间

新建命名空间my-first-app,需要访问外网的Pod,svc,endpoints等 都需要在该命名空间下。

> kubectl create namespace my-first-app

创建 endpoints

创建my-mysql-endpoints.yaml

> mkdir -p  ~/mysql-endpoint
> cd ~/mysql-endpoint

> cat <<EOF > my-mysql-endpoints.yaml
apiVersion: v1
kind: Endpoints
apiVersion: v1
metadata:
  name: my-mysql-endpoint #此名字需与 my-mysql-service.yaml文件中的 metadata.name 的值一致
  namespace: my-first-app #在固定的命名空间下
subsets:
  - addresses:
      - ip: 192.168.23.1 ## 宿主机,由于我的虚拟机ping不通我本机的mysql(安装mysql时候禁用了未打开)
      - ip: 220.181.38.148 ## 随便取的一个 公网Ip
    ports:
      - port: 3306
EOF


创建service

创建my-mysql-service.yaml

> cat <<EOF > my-mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-mysql-endpoint #此名字需与 my-mysql-endpoints.yaml文件中的 metadata.name 的值一致
  namespace: my-first-app  #在固定的命名空间下
spec:
  ports:
    - port: 3306
    
###  验证,进入,ping一下配置的Ip地址。
# kubectl exec -it my-first-springcloud-94cdd7487-xxxxx -n  my-first-app -- /bin/sh
# ping 220.181.38.148

EOF 

部署pod 进行验证

部署自己的服务到 my-first-app命名空间下,并且进入容器,进行ping测试

> kubectl exec -it my-first-springcloud-94cdd7487-xxxxx -n  my-first-app -- /bin/sh
> ping 220.181.38.148  ## 也可以在容器中直接调用对应的端口测试,此处只演示ping通,就代表能访问了
PING 220.181.38.148 (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: seq=0 ttl=127 time=5.356 ms
64 bytes from 220.181.38.148: seq=1 ttl=127 time=4.946 ms
64 bytes from 220.181.38.148: seq=2 ttl=127 time=18.165 ms
。。。。



> 也可以查看service的 Endpoints 信息 
> kubectl describe svc my-mysql-endpoint -n my-first-app

Name:              my-mysql-endpoint
Namespace:         my-first-app
Labels:            <none>
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.102.160.141
Port:              <unset>  3306/TCP
TargetPort:        3306/TCP
Endpoints:         192.168.23.1:3306,220.181.38.148:3306
Session Affinity:  None
Events:            <none>

注意

此种方式只适合Ip访问,对于像阿里云rds等数据库的。需要用域名。则需要用ExternalName方式不而不是Endpoints方式。

二、创建ExternalName类型的服务

创建``

**> mkdir -p  ~/mysql-endpoint
> cd ~/mysql-endpoin
> cat <<EOF > my-mysql-external.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-mysql-external #此名字随便起
  namespace: my-first-app  #在固定的命名空间下
spec:
  type: ExternalName 
  externalName: www.baidu.com ##提供方的服务完全限定域名,如rds域名等。
  ports:
    - port: 80
    
###  ExternalName类型的服务创建后,pod可以通过my-mysql-external.default.svc.cluster.local域名连接到外部服务,
####  或者通过my-mysql-external。当需要指向其他外部服务时,只需要修改spec.externalName的值即可。

EOF

原文参考:

https://www.cnblogs.com/kuku0223/p/10898068.html
https://blog.csdn.net/Andya_net/article/details/104714685 老规矩,联系我侵删。

相关文章

  • k8s-访问外网服务的两种方式

    需求 k8s集群内的pod需要访问mysql,由于mysql的性质,不适合部署在k8s集群内,故k8s集群内的应用...

  • 2018-12-12 项目中遇到问题

    问题场景:当外部服务不登录,直接访问我们网站此时访问有post、get方式,两种方式的不同解决方式。 外网get方...

  • iptables简单配置DMZ

    要求 内网可以访问外网 内网可以访问DMZ区 外网不能访问内网 外网能访问DMZ区的服务 DMZ区不能访问内网 D...

  • docker安装nginx实现正向代理

    公司服务器由于安全原因,只能使用内部网络,无法对外网进行特定网站访问,找一台能够进行外网访问的服务器,外网访问的服...

  • 群晖NAS配置外网访问

    群晖NAS默认提供两种外网访问方式,一种是QuickConnect,另外就是DDNS。 QuickConnect是...

  • Linux防火墙规则设置的一般流程

    常见允许外网访问的服务的端口 常见不允许外网访问的服务的端口 设置iptables规则的原则 例子 以下的内容不适...

  • npm创建私服sinopia和verdaccio

    一、安装 启动 外网访问配置通过在config.yaml中修改服务默认的监听端口,从而可以通过外网访问 sinop...

  • ubuntu14离线安装ambari(一、搭建本地镜像库)

    因环境限制不能访问外网,在ubuntu14上安装ambari,所以采用离线方式搭建,特此记录 安装httpd服务(...

  • 外网访问本地的服务

    natapp 参考链接https://www.cnblogs.com/keepruning/p/9191193.html

  • Linux 配置源(yum)

    一 :使用背景 随着公司网络安全意识的增加,会将服务器“断网”,既断开服务器访问外网的权限,无法访问外网资源,这就...

网友评论

    本文标题:k8s-访问外网服务的两种方式

    本文链接:https://www.haomeiwen.com/subject/aaaobktx.html