K8S自己动手系列 - 2.2 - Deployment
前言
前面的文章,我们使用Pod完成了wordpress+mysql的部署,并将两个容器放在了一个Pod当中,本篇文章,我们将使用Deployment完成前面的部署工作
本文实验所有的源码保存在:
https://github.com/zrbcool/blog-public/tree/master/k8s-hands-on/lab05
实战
查看deployment定义
lab05 git:(master) cat 01-wordpress-mysql-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: wordpress name: wordpress spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - image: wordpress:latest imagePullPolicy: IfNotPresent name: wordpress env: - name: WORDPRESS_DB_HOST value: "127.0.0.1" - name: WORDPRESS_DB_USER value: "root" - name: WORDPRESS_DB_PASSWORD value: "passw0rd" - image: mysql:5.7.26 imagePullPolicy: IfNotPresent name: mysql env: - name: MYSQL_ROOT_PASSWORD value: "passw0rd" - name: MYSQL_DATABASE value: "wordpress"
执行部署操作
lab05 git:(master) kubectl apply -f 01-wordpress-mysql-deployment.yaml deployment.extensions/wordpress created lab05 git:(master) kubectl apply -f 02-wordpress-svc.yaml service/wordpress-svc created lab05 git:(master) kubectl get deploy -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR wordpress 1/1 1 1 2m15s wordpress,mysql wordpress:latest,mysql:5.7.26 app=wordpress lab05 git:(master) kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES wordpress-5844bb9d6b-dbfb4 2/2 Running 0 2m23s 10.244.0.62 worker01 <none> <none> lab05 git:(master) kubectl get svc -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR wordpress-svc NodePort 10.98.150.68 <none> 80:30611/TCP 2m23s app=wordpress
访问我们的服务,
Deployment扩缩容尝试
修改我们的deployment定义,将replicas修改为2,查看效果
lab05 git:(master) kubectl get deploy -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR wordpress 2/2 2 2 7m43s wordpress,mysql wordpress:latest,mysql:5.7.26 app=wordpress lab05 git:(master) kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES wordpress-5844bb9d6b-dbfb4 2/2 Running 0 7m47s 10.244.0.62 worker01 <none> <none> wordpress-5844bb9d6b-ttkvm 2/2 Running 0 11s 10.244.0.63 worker01 <none> <none>
多次访问网页,发现网页进入了网站初始化界面,初始化网站为mywebsite2,发现网站经常在website1与website2间切换,这是因为我们的两个副本从应用到数据库完全是相同的两份,而Service负载均衡,会分配请求到两套实例上,但是mysql是有状态应用,就造成了我们使用上的问题。
问题如何解决
实际上,Deployment就是用来部署无状态应用的,它期待你的副本之间是没有区别的,那么在我们的场景下,mysql使用Deployment来部署就不是一个好的实践,我们这里只是学习使用,后续我们会用StatefulSet来部署有状态应用解决当前这个问题。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云存储网关商业化发布
产品介绍: 通过云存储网关,客户在无需改变应用程序接口的情况下,可以直接使用NFS/SMB或iSCSI协议访问OSS存储空间 适用客户: 典型客户群体: 生命科学,影视渲染,医疗,制造业 视频监控,中小企业,工作室,分支机构等。 应用场景 : 数据备份和归档上云, 存储空间云上弹性扩容, 数据共享和分发,企业数据二级存储 发布功能: 云存储网关实现了云端对象存储协议(OSS)与文件存储协议(NFS/SMB)或者块存储协议(iSCSI)之间的转换,帮助客户在无需改变现有应用程序接口和使用习惯的情况下直接使用OSS存储空间,实现用户数据与阿里云OSS的无缝对接。云存储网关可部署在客户数据中心虚拟机或者阿里云上。 付费方式: 云上部署的云存储网关按照网关实例收费,包含网关软件和部署网关所需的计算资源。 线下部署的云存储网关,阿里云
- 下一篇
Kubernetes Ingress日志分析入门
本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便大家快速了解日志服务相关功能。 部署Ingress日志方案 登录容器服务管理控制台。 将上述CRD配置保存成编排模板。编排模板文档请参见创建编排模板。 基于该模板创建应用,选择您所在集群的default命名空间。 apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # your config name, must be unique in you k8s cluster name: k8s-nginx-ingress spec: # logstore name to upload log logstore: nginx-i
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19