在Kubernetes中部署应用程序需要创建多个资源,例如Pod,服务,复制控制器等。 通常,每个资源都在配置文件中定义,并使用kubectl
脚本创建。 但是,如果需要创建多个资源,则需要多次调用kubectl
。 因此,如果您需要创建以下资源:
- MySQL Pod
- MySQL服务
- WildFly复制控制器
然后,命令如下所示:
kubectl.sh create -f ~/workspaces/kubernetes-java-sample/app-mysql-pod.yaml
kubectl.sh create -f ~/workspaces/kubernetes-java-sample/app-mysql-service.yaml
kubectl.sh create -f ~/workspaces/kubernetes-java-sample/app-wildfly-rc.yaml
为了方便起见,请将这些调用包装在shell脚本中。 但这不是很直观! 有一种更好,更自然和直观的方法。
Kubernetes允许在单个配置文件中指定多个资源。 这样就可以创建一个“ Kubernetes应用程序”,该应用程序可以轻松地由多个资源组成。
上一节显示了如何使用多个配置文件来部署Java EE应用程序。 也可以使用单个配置文件来部署此应用程序。
如上所述,可以使用以下配置文件创建一个由MySQL Pod,MySQL Service和WildFly Replication Controller组成的应用程序:
apiVersion: v1
kind: Pod
metadata:
name: mysql-pod
labels:
name: mysql-pod
context: docker-k8s-lab
spec:
containers:
-
name: mysql
image: mysql:latest
env:
-
name: "MYSQL_USER"
value: "mysql"
-
name: "MYSQL_PASSWORD"
value: "mysql"
-
name: "MYSQL_DATABASE"
value: "sample"
-
name: "MYSQL_ROOT_PASSWORD"
value: "supersecret"
ports:
-
containerPort: 3306
----
apiVersion: v1
kind: Service
metadata:
name: mysql-service
labels:
name: mysql-pod
context: docker-k8s-lab
spec:
ports:
# the port that this service should serve on
- port: 3306
# label keys and values that must match in order to receive traffic for this service
selector:
name: mysql-pod
context: docker-k8s-lab
----
apiVersion: v1
kind: ReplicationController
metadata:
name: wildfly-rc
labels:
name: wildfly
context: docker-k8s-lab
spec:
replicas: 1
template:
metadata:
labels:
name: wildfly
spec:
containers:
- name: wildfly-rc-pod
image: arungupta/wildfly-mysql-javaee7:k8s
ports:
- containerPort: 8080
请注意,每个部分(用于MySQL Pod,MySQL服务和WildFly Replication Controller的每个部分)均由----
分隔。
这样的应用程序可以创建为:
kubectl.sh create -f ~/workspaces/kubernetes-java-sample/app.yaml
pods/mysql-pod
services/mysql-service
replicationcontrollers/wildfly-rc
- 有关如何设置Kubernetes和运行此应用程序的完整详细信息,请访问github.com/arun-gupta/kubernetes-java-sample/#kubernetes-application 。
- 有关创建具有多种资源的Kubernetes应用程序的更多详细信息,请参见#12104 。
- 您可以了解如何创建Kubernetes资源Java应用程序,或以其他方式,在github.com/arun-gupta/kubernetes-java-sample/ 。