部署第一个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/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值