分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

从一个例子开始认识Kubernetes

发布时间:2023-09-06 02:17责任编辑:胡小海关键词:暂无标签

  对于绝大多数刚刚接触Kubernetes的人来说,很难顺利的上手和实践。所以我们从一个例子开始初步的对Kubernetes有一个了解:JSP页面通过JDBC直接访问MySQL数据库并展示数据。

   这个例子中我们需要启动连个容器:WebApp容器和MySQL容器。

  废话不多说,我们现在开始。。。

  • 第一步:环境准备

  这一步我们就不在这里赘述了,网上教程一搜一大把。。。

  关闭防火墙、swap、SELinux,安装Docker、etcd和Kubernetes组件等等。。。

  下载MySQL和Tomcat镜像:

1 ]# docker pull mysql:5.52 ]# docker pull kubeguide/tomcat-app:v1

  也可以参考我之前的文章:《Kubernetes的基本术语和概念》

  • 第二步:启动MySQL服务

  首先我们要为MySQL服务创建一个RC定义文件:mysql-rc.yaml,代码内容如下:

 1 apiVersion: v1 2 kind: ReplicationController ???????## 副本控制器RC 3 metadata: 4 ??name: mysql ?????## RC的名称,全局唯一 5 spec: 6 ??replicas: 1 ?????## Pod副本期待数量 7 ??selector: 8 ????app: mysql ??????## 符合目标的Pod拥有此标签 9 ??template: ?????## 根据此模板创建Pod实例10 ????metadata:11 ??????labels:12 ????????app: mysql ?????## 副本Pod拥有的标签对应RC的selector13 ????spec:14 ??????containers: ?????????## Pod内容器定义部分15 ??????- name: mysql ??????????## 容器的名称16 ????????image: mysql:5.5 ??????## 容器的镜像17 ????????ports:18 ????????- containerPort: 3306 ???## 容器暴露的端口号19 ????????env: ????????????????## 注入容器的环境变量20 ????????- name: MYSQL_ROOT_PASSWORD21 ??????????value: "123456"

   创建好mysql-rc.yaml文件后,将它发布到Kubernetes集群中。

1 ]# kubectl create -f mysql-rc.yaml

  接下来查看下创建的RC以及Pod的情况:

1 ]# kubectl get rc2 NAME ?????DESIRED ??CURRENT ??READY ????AGE3 mysql ????1 ????????1 ????????1 ????????1h4 ]# kubectl get po5 NAME ?????????????????????READY ????STATUS ???RESTARTS ??AGE6 mysql-px9th ??????????????1/1 ??????Running ??0 ?????????1h

  上述创建没有问题后,我们再创建一个与之关联的mysql的service文件:mysql-svc.yaml。代码内容如下:

1 apiVersion: v12 kind: Service ???## 声明是Kubernetes的service文件3 metadata:4 ??name: mysql ???## service的全局唯一名称5 spec:6 ??ports:7 ????- port: 3306 ?## 服务暴露的端口号8 ??selector: ??????## service对应的Pod标签名称9 ????app: mysql

  运行kubectl命令创建service:

1 ]# kubectl create -f mysql-scv.yaml

  查看创建的service:

]# kubectl get svcNAME ????????TYPE ???????CLUSTER-IP ??????EXTERNAL-IP ??PORT(S) ?????????AGEmysql ???????ClusterIP ??10.107.188.209 ??<none> ???????3306/TCP ????????1h
注:CLUSTER-IP是在service创建时由Kubernetes自动创建的。
  是一个虚地址,随后Kubernetes集群中其他新创建的Pod就可以通过Service的ClusterIP+端口号6379来连接和访问它。
  根据Service的唯一名字,容器可以从环境变量中获取到Service对应的ClusterIP地址和端口,从而发起TCP/IP连接请求了。
  • 第三步:启动Tomcat应用

  创建Tomcat的rc文件:tomcat-rc.yaml,代码内容如下:

 1 apiVersion: v1 2 kind: ReplicationController 3 metadata: 4 ??name: myweb 5 spec: 6 ??replicas: 1 ????# spec.selector与spec.template.metadata.labels,这两个字段必须相同,否则下一步创建RC会失败。 7 ??selector: 8 ????app: myweb 9 ??template:10 ????metadata:11 ??????labels:12 ????????app: myweb13 ????spec: ???14 ??????containers:15 ????????- name: myweb ???16 ??????????image: kubeguide/tomcat-app:v1 ??17 ??????????ports: ????????18 ??????????- containerPort: 808019 ??????????env: ??????20 ??????????- name: MYSQL_SERVICE_HOST21 ????????????value: ‘mysql‘22 ??????????- name: MYSQL_SERVICE_PORT23 ????????????value: ‘3306‘

  创建RC:

1 ]# kubectl create -f myweb-rc.yaml

  查看Tomcat RC是否创建成功:

1 ]# kubectl get rc2 NAME ?????DESIRED ??CURRENT ??READY ????AGE3 mysql ????1 ????????1 ????????1 ????????1h4 myweb ????2 ????????2 ????????2 ????????1h5 ]# kubectl get po ?6 NAME ?????????????????????READY ????STATUS ???RESTARTS ??AGE7 mysql-px9th ??????????????1/1 ??????Running ??0 ?????????1h8 myweb-fxq9s ??????????????1/1 ??????Running ??0 ?????????1h9 myweb-tt5sd ??????????????1/1 ??????Running ??0 ?????????1h

  创建Tomcat的service文件tomcat-svc.yaml,内容如下:

 1 apiVersion: v1 2 kind: Service 3 metadata: ?4 ??name: myweb 5 spec: 6 ??type: NodePort 7 ??ports: 8 ????- port: 8080 9 ??????nodePort: 3000110 ??selector:11 ????app: myweb

注: type: NodePort和nodePort: 30001 这两个属性,表明service开启了外网访问模式。

   创建并查看创建的service状态:

1 ]# kubectl create -f tomcat-svc.yaml2 ]# kubectl get svc3 NAME ????????TYPE ???????CLUSTER-IP ??????EXTERNAL-IP ??PORT(S) ?????????AGE4 mysql ???????ClusterIP ??10.107.188.209 ??<none> ???????3306/TCP ????????1h5 myweb ???????NodePort ???10.109.40.205 ???<none> ???????8080:30001/TCP ??1h
  • 第四步:通过浏览器访问页面

  在浏览器打开,地址 http://虚拟机IP:30001/demo/ 

  点击页面上的add增加一条数据,刷新页面,数据成功入库,到这里我们这个应用服务就完成了!

从一个例子开始认识Kubernetes

原文地址:https://www.cnblogs.com/cooper-73/p/9764935.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved