网站空间权限,最简单的网站开发国际化,百度产品优化排名软件,wordpress主题、Kubernetes上使用Vagrant的Java EE 7和WildFly#xff08;技术提示#xff03;71#xff09;介绍了如何在使用Kubernetes和Docker托管的WildFly上运行琐碎的Java EE 7应用程序。 Java EE 7应用程序是在世界范围内交付的动手实验室 。 它使用与WildFly捆绑在一起的内存数据库… Kubernetes上使用Vagrant的Java EE 7和WildFly技术提示71介绍了如何在使用Kubernetes和Docker托管的WildFly上运行琐碎的Java EE 7应用程序。 Java EE 7应用程序是在世界范围内交付的动手实验室 。 它使用与WildFly捆绑在一起的内存数据库并允许了解Kubernetes的关键构建块。 这是使您开始进行初始开发工作的好方法但是当应用程序服务器宕机时数据库丢失时这很快就会成为瓶颈。 该技术提示将展示如何运行另一个普通的Java EE 7应用程序以及如何使用MySQL作为数据库服务器。 它将使用Kubernetes Services解释如何轻松地将MySQL和WildFly分离。 让我们开始吧 确保使用Kubernetes中使用Vagrant进行的 Kubernetes设置有效 。 可以在github.com/arun-gupta/kubernetes-java-sample上找到此博客中使用的完整源代码。 启动MySQL Kubernetes pod 第一步是启动MySQL pod。 这可以通过使用MySQL Kubernetes配置文件启动 kubernetes ./cluster/kubectl.sh create -f ../kubernetes-java-sample/mysql.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/mysql.json
mysql 使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/mysql.json 。 检查MySQL pod的状态 kubernetes ./cluster/kubectl.sh get pods
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth get pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
mysql 10.246.1.3 mysql mysql:latest 10.245.1.3/10.245.1.3 namemysql Pending 等待状态更改为“正在运行”。 它看起来像 KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth get pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
mysql 10.246.1.3 mysql mysql:latest 10.245.1.3/10.245.1.3 namemysql Running MySQL服务器需要几分钟的时间才能进入该状态因此请喝杯咖啡或一小杯速食 启动MySQL Kubernetes服务 Pod和分配给它们的IP地址都是短暂的。 如果某个Pod死了那么Kubernetes会由于其自愈功能而重新创建该Pod但是它可能会在其他主机上重新创建它。 即使它在同一主机上也可以为其分配不同的IP地址。 因此任何应用程序都不能依赖容器的IP地址。 Kubernetes 服务是一种抽象定义了一组逻辑上的Pod。 一个服务通常由一个或多个物理Pod使用标签关联后端并且它具有一个永久IP地址该IP地址可以被其他Pod /应用程序使用。 例如WildFly容器不能直接连接到MySQL容器但是可以连接到MySQL服务。 本质上Kubernetes服务为客户端提供了一个IP和端口对该IP和端口对在被访问时会重定向到适当的后端。 让我们启动MySQL服务。 kubernetes ./cluster/kubectl.sh create -f ../kubernetes-java-sample/mysql-service.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/mysql-service.json
mysql 使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/mysql-service.json 。 在这种情况下仅启动一个MySQL实例。 但是可以轻松启动多个MySQL实例WildFly Pod将继续使用MySQL Service引用所有实例。 检查MySQL服务的状态/ IP kubernetes ./cluster/kubectl.sh get services
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth get services
NAME LABELS SELECTOR IP PORT
kubernetes componentapiserver,providerkubernetes none 10.247.0.2 443
kubernetes-ro componentapiserver,providerkubernetes none 10.247.0.1 80
mysql namemysql namemysql 10.247.202.104 3306
skydns k8s-appskydns k8s-appskydns 10.247.0.10 53启动WildFly Kubernetes Pod 必须在MySQL服务启动后启动WildFly Pod。 这是因为用于在WildFly中创建JDBC资源的环境变量仅在服务启动并运行后才可用。 具体来说JDBC资源创建为 data-source add --namemysqlDS --driver-namemysql --jndi-namejava:jboss/datasources/ExampleMySQLDS --connection-urljdbc:mysql://$MYSQL_SERVICE_HOST:$MYSQL_SERVICE_PORT/sample?useUnicodetruecharacterEncodingUTF-8 --user-namemysql --passwordmysql --use-ccmfalse --max-pool-size25 --blocking-timeout-wait-millis5000 --enabledtrue $MYSQL_SERVICE_HOST和$MYSQL_SERVICE_PORT环境变量由Kubernetes填充如此处所述 。 这在github.com/arun-gupta/docker-images/blob/master/wildfly-mysql-javaee7/customization/execute.sh#L44中显示 。 启动WildFly pod kubernetes ./cluster/kubectl.sh create -f ../kubernetes-java-sample/wildfly.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/wildfly.json
wildfly 使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/wildfly.json中 。 检查吊舱的状态 KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth get pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
mysql 10.246.1.3 mysql mysql:latest 10.245.1.3/10.245.1.3 namemysql Running
wildfly 10.246.1.4 wildfly arungupta/wildfly-mysql-javaee7:knetes 10.245.1.3/10.245.1.3 namewildfly Pending 等待直到WildFly pod的状态更改为“正在运行”。 这可能需要几分钟的时间因此可能是时候再抓紧另一个miler了 容器启动并运行后您可以检查WildFly容器中的/opt/jboss/wildfly/standalone/configuration/standalone.xml并验证连接URL确实包含正确的IP地址。 这是它在我的机器上的外观 [jbosswildfly ~]$ grep 3306 /opt/jboss/wildfly/standalone/configuration/standalone.xml connection-urljdbc:mysql://10.247.202.104:3306/sample?useUnicodetrueamp;characterEncodingUTF-8/connection-url 更新状态在容器运行之后如下所示 kubernetes ./cluster/kubectl.sh get pods
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path/Users/arungupta/.kubernetes_vagrant_auth get pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
mysql 10.246.1.3 mysql mysql:latest 10.245.1.3/10.245.1.3 namemysql Running
wildfly 10.246.1.4 wildfly arungupta/wildfly-mysql-javaee7:knetes 10.245.1.3/10.245.1.3 namewildfly Running访问Java EE 7应用程序 记下WildFly容器的HOST IP地址并按以下方式访问应用程序 curl http://10.245.1.3:8080/employees/resources/employees 看到的输出为 ?xml version1.0 encodingUTF-8 standaloneyes?collectionemployeeid1/idnamePenny/name/employeeemployeeid2/idnameSheldon/name/employeeemployeeid3/idnameAmy/name/employeeemployeeid4/idnameLeonard/name/employeeemployeeid5/idnameBernadette/name/employeeemployeeid6/idnameRaj/name/employeeemployeeid7/idnameHoward/name/employeeemployeeid8/idnamePriya/name/employee/collection 或在浏览器中查看为 调试Kubernetes和Docker 登录到Minion-1 VM kubernetes vagrant ssh minion-1
Last login: Tue Feb 10 23:20:13 2015 from 10.0.2.2 以root身份登录 [vagrantkubernetes-minion-1 ~]$ su -
Password:
[rootkubernetes-minion-1 ~]# Vagrant创建的VM映像的默认root密码为“ vagrant”。 在此VM上运行的Docker容器列表可以看成是 [rootkubernetes-minion-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fc1fca102bf arungupta/wildfly-mysql-javaee7:knetes /opt/jboss/wildfly/ 28 minutes ago Up 28 minutes k8s_wildfly.6c5f240e_wildfly.default.api_1230e74a-b178-11e4-8464-0800279696e1_509268aa
4aa49c0ebb70 kubernetes/pause:go /pause 43 minutes ago Up 43 minutes 0.0.0.0:8080-8080/tcp, 0.0.0.0:9090-9090/tcp k8s_POD.bca60d1a_wildfly.default.api_1230e74a-b178-11e4-8464-0800279696e1_0bff6efa
c36e99cd4557 mysql:latest /entrypoint.sh mysq 47 minutes ago Up 47 minutes k8s_mysql.278e3c40_mysql.default.api_f3d07101-b175-11e4-8464-0800279696e1_ddbcaf62
ed4611b5c276 google/cadvisor:0.8.0 /usr/bin/cadvisor 56 minutes ago Up 56 minutes k8s_cadvisor.8d424740_cadvisor-agent.file-6bb810db-kubernetes-minion-1.file_80331227d28e618b4cef459507a31796_36d83f7d
50a3428612f0 kubernetes/pause:go /pause 58 minutes ago Up 58 minutes 0.0.0.0:3306-3306/tcp k8s_POD.c783ea16_mysql.default.api_f3d07101-b175-11e4-8464-0800279696e1_e46a8424
11a95eeda794 kubernetes/pause:go /pause 59 minutes ago Up 59 minutes 0.0.0.0:4194-8080/tcp k8s_POD.252debe0_cadvisor-agent.file-6bb810db-kubernetes-minion-1.file_80331227d28e618b4cef459507a31796_734d54eb WildFly日志的最后10行在访问了几次应用程序之后可以看成是 23:12:25,004 INFO [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (8, Priya)
23:12:27,928 INFO [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-5) Deploying javax.ws.rs.core.Application: class org.javaee7.samples.employees.MyApplication
23:12:27,987 INFO [org.wildfly.extension.undertow] (MSC service thread 1-5) JBAS017534: Registered web context: /employees
23:12:28,073 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed employees.war (runtime-name : employees.war)
23:12:28,203 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
23:12:28,203 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
23:12:28,204 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final Tweek started in 26772ms - Started 280 of 334 services (92 services are lazy, passive or on-demand)
23:23:16,091 INFO [stdout] (default task-16) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_
23:24:07,322 INFO [stdout] (default task-17) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_
23:35:07,030 INFO [stdout] (default task-18) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_ 同样MySQL日志被视为 2015-02-10 22:52:55 1 [Note] Server hostname (bind-address): *; port: 3306
2015-02-10 22:52:55 1 [Note] IPv6 is available.
2015-02-10 22:52:55 1 [Note] - :: resolves to ::;
2015-02-10 22:52:55 1 [Note] Server socket created on IP: ::.
2015-02-10 22:52:56 1 [Note] Event Scheduler: Loaded 0 events
2015-02-10 22:52:56 1 [Note] Execution of init_file /tmp/mysql-first-time.sql started.
2015-02-10 22:52:56 1 [Note] Execution of init_file /tmp/mysql-first-time.sql ended.
2015-02-10 22:52:56 1 [Note] mysqld: ready for connections.
Version: 5.6.23 socket: /var/run/mysqld/mysqld.sock port: 3306 MySQL Community Server (GPL)
2015-02-10 23:12:21 1 [Warning] IP address 10.246.1.1 could not be resolved: Name or service not known 请享用 翻译自: https://www.javacodegeeks.com/2015/02/mysql-kubernetes-service-access-wildfly-pod.html