我是靠谱客的博主 神勇蜜粉,最近开发中收集的这篇文章主要介绍部署第一个k8s容器化应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

基础环境

系统版本:CentOS Linux release 7.6

kubernetes版本:kubernetes1.14.0

Docker版本: Docker CE 19.03.5

此 Java web项目相对比较简单, 是一个运行在Tomcat里的 Web App, 如下图所示, JSP页面通过 JDBC 直接访问 MySQL 数据库Demo并展示数据。只要正确连接到了数据库,就会自动完成对应的 Table 表的创建与初始化数据的准备工作

启动mysql服务

首先为 MySql 服务创建一个 RC 定义文件 mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: daocloud.io/library/mysql:5.7
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

创建好 mysql-rc.yaml 文件后,将他发布到 Kubernetes 集群后,我们在 Master 上执行下列命令:

# kubectl apply -f mysql-rc.yaml
replicationcontroller "mysql" created

查看创建的 RC:

# kubectl get rc
NAME    DESIRED   CURRENT   READY   AGE
mysql   1         1         1       103m

查看Pod创建情况

# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
mysql-lxt5v              1/1     Running   0          104m

创建 Kubernetes Service - MySql 定义文件 (mysql-svc.yaml)

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql

运行 kubectl 命令,创建 Service

kubectl apply -f mysql-svc.yaml
serevice "mysql" created

查看刚刚创建的service

kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mysql        ClusterIP   10.1.216.201   <none>        3306/TCP         3h50m

可以看到,MySql 服务分配了一个值为 10.1.216.201 的 Cluster IP的地址。

启动Tomcat应用

# cat myweb-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
        - name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: 10.1.216.201

注意: 创建的 myweb-rc.yaml 应注意 MYSQL_SERVICE_HOST 的配置。

# kubectl apply -f myweb-rc.yaml
replicationcontroller "myweb" created
​
​
# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
mysql-lxt5v              1/1     Running   0          111m
myweb-hs6nw              1/1     Running   0          3h51m
​

创建对应的 Service

# cat myweb-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30005
  selector:
    app: myweb
# kubectl apply -f myweb-svc.yaml
servcice "myweb" created
​
# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mysql        ClusterIP   10.1.216.201   <none>        3306/TCP         3h55m
myweb        NodePort    10.1.153.70    <none>        8080:30005/TCP   3h53m
​

访问 http://虚拟机ip:30005/demo/

最后

以上就是神勇蜜粉为你收集整理的部署第一个k8s容器化应用的全部内容,希望文章能够帮你解决部署第一个k8s容器化应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部