Kubernetes鏈接外部數據源

 

 Kubernetes架構下比較核心的問題是數據如何persistance,雖然提供了Persistent volumn的方式,可是對於像數據庫之類的產品在kubernetes集羣環境中運行和管理仍是頗有難度的,Kubernetes提供了endpoints這種模式讓外部的服務映射成內部的服務,這樣比較好的解決了集羣對外的鏈接問題,node

若是咱們去鏈接外部的一個oracle數據庫,具體的步驟以下:web

 

  • 創建endpoints和service.
[root@k8s-master jdbcservice]# cat jdbc-endpoint.yaml 
apiVersion: v1
kind: Endpoints
metadata:
  name: jdbc
subsets:
  - addresses:
    - ip: 10.182.168.244
    ports:
    - port: 1521
      protocol: TCP

爲了方便,咱們固定了service的集羣地址docker

[root@k8s-master jdbcservice]# cat jdbcservice.yaml 
apiVersion: v1
kind: Service
metadata:
  name: jdbc
spec:
  clusterIP: 10.254.150.201
  ports:
  - port: 1521
    targetPort: 1521
    protocol: TCP

須要注意的是,service和endpoints的名字要相同,另外若是delete了service.再從新創建的時候要再把endpoints創建一遍。數據庫

在這個service的表裏,咱們看到jdbc服務綁在了201這個地址上。api

[root@k8s-master jdbcservice]# kubectl get services
NAME            CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
helloworldsvc   10.254.43.122    <nodes>       7001:30001/TCP   12m
jdbc            10.254.150.201   <none>        1521/TCP         30m
kubernetes      10.254.0.1       <none>        443/TCP          121d
registry        10.254.174.54    <nodes>       5000:30002/TCP   20h

 

  • images的配置

而後對咱們的weblogic images進行jdbc的配置。架構

 

 點擊Test Configuration,若是測試不過,weblogic不容許創建鏈接池成功.oracle

 

 

在運行pod的節點上運行docker ps找到啓動image的容器id.測試

[root@k8s-node-1 ~]# docker ps
CONTAINER ID        IMAGE                                                        COMMAND                  CREATED             STATUS              PORTS               NAMES
d2c1dc2a2cef        1213-helloworld:v1                                           "startWebLogic.sh"       7 minutes ago       Up 7 minutes                            k8s_weblogichelloworld.9efb3a79_helloworld-service-vfd10_default_6162d68a-9da9-11e7-b746-08002797edef_026d2cc4
85e04042041a        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/pod"                   7 minutes ago       Up 7 minutes                            k8s_POD.15c40ba1_helloworld-service-vfd10_default_6162d68a-9da9-11e7-b746-08002797edef_b59984a7
96acfd65eb3a        registry                                                     "/entrypoint.sh /etc/"   23 minutes ago      Up 23 minutes                           k8s_registry.71ab5625_registry-7nj8q_default_19ab0b7f-9cff-11e7-bf9d-08002797edef_fb5ae620
63652932256c        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/pod"                   23 minutes ago      Up 23 minutes                           k8s_POD.100f0b9e_registry-7nj8q_default_19ab0b7f-9cff-11e7-bf9d-08002797edef_98dd7f3f
1ed61c53625f        gcr.io/google_containers/etcd-amd64:2.2.1                    "/usr/local/bin/etcd "   47 minutes ago      Up 47 minutes                           k8s_etcd.bb974d90_kube-dns-v11-x0vr3_kube-system_5dd26461-3ef1-11e7-acf2-08002797edef_7316989c
fb8545a4aba4        gcr.io/google_containers/exechealthz:1.0                     "/exechealthz '-cmd=n"   47 minutes ago      Up 47 minutes                           k8s_healthz.525e4aad_kube-dns-v11-x0vr3_kube-system_5dd26461-3ef1-11e7-acf2-08002797edef_cec4d740
aa6c4caf3fa7        gcr.io/google_containers/skydns:2015-10-13-8c72f8c           "/skydns -machines=ht"   47 minutes ago      Up 47 minutes                           k8s_skydns.96837166_kube-dns-v11-x0vr3_kube-system_5dd26461-3ef1-11e7-acf2-08002797edef_5da89b81
5930dae5b843        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/pod"                   47 minutes ago      Up 47 minutes                           k8s_POD.4efc54ff_kube-dns-v11-x0vr3_kube-system_5dd26461-3ef1-11e7-acf2-08002797edef_3e3af088

 

生成新的imagesgoogle

[root@k8s-node-1 ~]# docker commit -m "jdbc" -a "ericnie" d2c1dc2a2cef 1213-helloworld-jdbc:v1
sha256:953e124483d2bcc03b3f46c8e6d935e3746634d78942cc477e31888c8d569171

 

  • 驗證

修改weblogic replication control指向1213-helloworld-jdbc:v1 images,啓動後看到鏈接創建.spa

weblogic端

 

 

數據庫端

數據庫端原來的jdbc連接

Pod徹底啓動後的鏈接

相關文章
相關標籤/搜索