运行一个有状态的应用程序
本页展示如何使用
StatefulSet
控制器运行一个有状态的应用程序。此例是多副本的MySQL数据库。示例应用的拓扑结构有一个主
服务器
和多个副本,使用异步的基于行(Row-Based)的数据复制。
在开始之前
要获知版本信息,请输入
kubectlVersion
。
教程目标
部署MySQL
MySQL示例部署包含一个ConfigMap、两个Service与一个StatefulSet。
使用以下的YAML配置文件创建ConfigMap:
apiVersion: v1kind: ConfigMapmetadata:name: mysqllabels:app: mysqldata:primary.cnf: |# Apply this config only on the primary.[mysqld]log-bindatadir=/var/lib/mysql/mysqlreplica.cnf: |# Apply this config only on replicas.[mysqld]super-read-onlydatadir=/var/lib/mysql/mysql
kubectl apply -f这个ConfigMap提供覆盖设置,使你可以独立控制MySQL主服务器和从服务器的配置。在这里,你希望主服务器能够将复制日志提供给副本服务器,并且希望副本服务器拒绝任何不是通过复制进行的写操作。
ConfigMap本身没有什么特别之处,因而也不会出现不同部分应用于不同的Pod的情况。每个Pod都会在初始化时基于StatefulSet控制器提供的信息决定要查看的部分。
服务
使用以下YAML配置文件创建服务:
# Headless service for stable DNS entries of StatefulSet members.apiVersion: v1kind: Servicemetadata:name: mysqllabels:app: mysqlspec:ports:- name: mysqlport: 3306clusterIP: Noneselector:app: mysql---# Client service for connecting to any MySQL instance for reads.# For writes, you must instead connect to the primary: mysql-0.mysql.apiVersion: v1kind: Servicemetadata:name: mysql-readlabels:app: mysqlspec:ports:- name: mysqlport: 3306selector:app: mysql
kubectl apply -f这个无头服务给StatefulSet控制器为集合中每个Pod创建的DNS条目提供了一个宿主。因为无头服务名为,所以可以通过在同一Kubernetes集群和命名空间中的任何其他Pod内解析.mysql
来访问Pod。
客户端服务称为mysql-read
,是一种常规服务,具有其自己的集群IP。该集群IP在报告就绪的所有MySQLPod之间分配连接。可能的端点集合包括MySQL主节点和所有副本节点。
请注意,只有读查询才能使用负载平衡的客户端服务。因为只有一个MySQL主服务器,所以客户端应直接连接到MySQL主服务器Pod(通过其在无头服务中的DNS条目)以执行写入操作。
StatefulSet
最后,使用以下YAML配置文件创建StatefulSet:
apiVersion: apps/v1kind: StatefulSetmetadata:name: mysqlspec:selector:matchLabels:app: mysqlserviceName: mysqlreplicas: 3template:metadata:labels:app: mysqlspec:initContainers:- name: init-mysqlimage: mysql:5.7command:- bash- "-c"- |set -ex# 基于 Pod 序号生成 MySQL 服务器的 ID。[[ `hostname` =~ -([0-9]+)$ ]] || exit 1ordinal=${BASH_REMATCH[1]}echo [mysqld] > /mnt/conf.d/server-id.cnf# 添加偏移量以避免使用 server-id=0 这一保留值。echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf# Copy appropriate conf.d files from config-map to emptyDir.# 将合适的 conf.d 文件从 config-map 复制到 emptyDir。if [[ $ordinal -eq 0 ]]; thencp /mnt/config-map/primary.cnf /mnt/conf.d/elsecp /mnt/config-map/replica.cnf /mnt/conf.d/fivolumeMounts:- name: confmountPath: /mnt/conf.d- name: config-mapmountPath: /mnt/config-map- name: clone-mysqlimage: gcr.io/google-samples/xtrabackup:1.0command:- bash- "-c"- |set -ex# 如果已有数据,则跳过克隆。[[ -d /var/lib/mysql/mysql ]] && exit 0# 跳过主实例(序号索引 0)的克隆。[[ `hostname` =~ -([0-9]+)$ ]] || exit 1ordinal=${BASH_REMATCH[1]}[[ $ordinal -eq 0 ]] && exit 0# 从原来的对等节点克隆数据。ncat --recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql# 准备备份。xtrabackup --prepare --target-dir=/var/lib/mysqlvolumeMounts:- name:,\MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.infi# 检查我们是否需要通过启动复制来完成克隆。if [[ -f change_master_to.sql.in ]]; thenecho "Waiting for mysqld to be ready (accepting connections)"until mysql -h 127.0.0.1 -e "SELECT 1"; do sleep 1; doneecho "Initializing replication from clone position"mysql -h 127.0.0.1 \-e "$(了解有状态的Pod初始化 StatefulSet控制器按序数索引顺序地每次启动一个Pod。它一直等到每个Pod报告就绪才再启动下一个Pod。
此外,控制器为每个Pod分配一个唯一、稳定的名称,形如-<序数索引>
,其结果是Pods名为、和。
上述StatefulSet清单中的Pod模板利用这些属性来执行MySQL副本的有序启动。
生成配置
在启动Pod规约中的任何容器之前,Pod首先按顺序运行所有的Init容器。
第一个名为init-mysql
的Init容器根据序号索引生成特殊的MySQL配置文件。
该脚本通过从Pod名称的末尾提取索引来确定自己的序号索引,而Pod名称由命令返回。然后将序数(带有数字偏移量以避免保留值)保存到MySQL目录中的文件server-id.cnf
。这一操作将StatefulSet所提供的唯一、稳定的标识转换为MySQL服务器的ID,而这些ID也是需要唯一性、稳定性保证的。
通过将内容复制到中,init-mysql
容器中的脚本也可以应用ConfigMap中的primary.cnf
或replica.cnf
。由于示例部署结构由单个MySQL主节点和任意数量的副本节点组成,因此脚本仅将序数指定为主节点,而将其他所有节点指定为副本节点。
与StatefulSet控制器的部署顺序保证相结合,可以确保MySQL主服务器在创建副本服务器之前已准备就绪,以便它们可以开始复制。
克隆现有数据
通常,当新Pod作为副本节点加入集合时,必须假定MySQL主节点可能已经有数据。还必须假设复制日志可能不会一直追溯到时间的开始。
这些保守的假设是允许正在运行的StatefulSet随时间扩大和缩小而不是固定在其初始大小的关键。
第二个名为clone-mysql
的Init容器,第一次在带有空PersistentVolume的副本Pod上启动时,会在从属Pod上执行克隆操作。这意味着它将从另一个运行中的Pod复制所有现有数据,使此其本地状态足够一致,从而可以开始从主服务器复制。
MySQL本身不提供执行此操作的机制,因此本示例使用了一种流行的开源工具PerconaXtraBackup。在克隆期间,源MySQL服务器性能可能会受到影响。为了最大程度地减少对MySQL主服务器的影响,该脚本指示每个Pod从序号较低的Pod中克隆。可以这样做的原因是StatefulSet控制器始终确保在启动Pod之前Pod已准备就绪。
开始复制
Init容器成功完成后,应用容器将运行。MySQLPod由运行实际服务的容器和充当辅助工具的xtrabackup容器组成。
xtrabackup
sidecar容器查看克隆的数据文件,并确定是否有必要在副本服务器上初始化MySQL复制。如果是这样,它将等待准备就绪,然后使用从XtraBackup克隆文件中提取的复制参数执行CHANGEMASTERTO
和STARTSLAVE
命令。
一旦副本服务器开始复制后,它会记住其MySQL主服务器,并且如果服务器重新启动或连接中断也会自动重新连接。另外,因为副本服务器会以其稳定的DNS名称查找主服务器(mysql-0.mysql
),即使由于重新调度而获得新的PodIP,它们也会自动找到主服务器。
最后,开始复制后,xtrabackup
容器监听来自其他Pod的连接,处理其数据克隆请求。如果StatefulSet扩大规模,或者下一个Pod失去其PersistentVolumeClaim并需要重新克隆,则此服务器将无限期保持运行。
发送客户端请求
你可以通过运行带有镜像的临时容器并运行客户端二进制文件,将测试查询发送到MySQL主服务器(主机名mysql-0.mysql
)。
kubectl run mysql-client --image=mysql:5.7 -i --rm --restart=Never --\mysql -h mysql-0.mysql <模拟Pod和Node的宕机时间 为了证明从副本节点缓存而不是单个服务器读取数据的可用性提高,请在使Pod退出Ready状态时,保持上述SELECT@@server_id
循环一直运行。
破坏就绪态探测
容器的就绪态探测运行命令
mysql-h127.0.0.1-e'SELECT1'
,以确保服务器已启动并能够执行查询。
迫使就绪态探测失败的一种方法就是中止该命令:
kubectl exec mysql-2 -c mysql -- mv /usr/bin/mysql /usr/bin/mysql.off
此命令会进入Pod的实际容器文件系统,重命名命令,导致就绪态探测无法找到它。几秒钟后,Pod会报告其中一个容器未就绪。你可以通过运行以下命令进行检查:
kubectl get pod mysql-2
在列中查找:
NAMEREADYSTATUSRESTARTSAGEmysql-21/2Running03m
此时,你应该会看到SELECT@@server_id
循环继续运行,尽管它不再报告。回想一下,init-mysql
脚本将定义为100+$ordinal
,因此服务器ID对应于Pod。
现在修复Pod,几秒钟后它应该重新出现在循环输出中:
kubectl exec mysql-2 -c mysql -- mv /usr/bin/mysql.off /usr/bin/mysql
删除Pods
如果删除了Pod,则StatefulSet还会重新创建Pod,类似于ReplicaSet对无状态Pod所做的操作。
kubectl delete pod mysql-2
StatefulSet控制器注意到不再存在Pod,于是创建一个具有相同名称并链接到相同PersistentVolumeClaim的新Pod。你应该看到服务器ID从循环输出中消失了一段时间,然后又自行出现。
腾空节点
如果你的 Kubernetes 集群具有多个节点,则可以通过发出以下drain命令来模拟节点停机(就好像节点在被升级)。
首先确定 MySQL Pod 之一在哪个节点上:
kubectl get pod mysql-2 -o wide
节点名称应显示在最后一列中:
NAMEREADYSTATUSRESTARTSAGEIPNODEmysql-22/2Running015m10.244.5.27kubernetes-node-9l2t
然后通过运行以下命令腾空节点,该命令将其保护起来,以使新的Pod不能调度到该节点,然后逐出所有现有的Pod。将替换为在上一步中找到的节点名称。
这可能会影响节点上的其他应用程序,因此最好仅在测试集群中执行此操作。
kubectl drain <节点名称> --force --delete-local-data --ignore-daemonsets
现在,你可以看到Pod被重新调度到其他节点上:
kubectl get pod mysql-2 -o wide --watch
它看起来应该像这样:
NAMEREADYSTATUSRESTARTSAGEIPNODEmysql-22/2Terminating015m10.244.1.56kubernetes-node-9l2t[...]mysql-20/2Pending00skubernetes-node-fjlmmysql-20/2Init:0/200skubernetes-node-fjlmmysql-20/2Init:1/2020s10.244.5.32kubernetes-node-fjlmmysql-20/2PodInitializing 021s10.244.5.32kubernetes-node-fjlmmysql-21/2Running022s10.244.5.32kubernetes-node-fjlmmysql-22/2Running030s10.244.5.32kubernetes-node-fjlm
再次,你应该看到服务器ID从SELECT@@server_id
循环输出中消失一段时间,然后自行出现。
现在去掉节点保护(Uncordon),使其恢复为正常模式:
kubectl uncordon <节点名称>
扩展副本节点数量
使用MySQL复制,你可以通过添加副本节点来扩展读取查询的能力。使用StatefulSet,你可以使用单个命令执行此操作:
kubectl scale statefulset mysql --replicas=5
查看新的Pod的运行情况:
kubectl get pods -l app=mysql --watch
一旦Pod启动,你应该看到服务器IDs和开始出现在SELECT@@server_id
循环输出中。
你还可以验证这些新服务器在存在之前已添加了数据:
kubectl run mysql-client --image=mysql:5.7 -i -t --rm --restart=Never --\mysql -h mysql-3.mysql -e "SELECT * FROM test.messages"
Waiting for pod default/mysql-client to be running, status is Pending, pod ready: false+---------+| message |+---------+| hello|+---------+pod "mysql-client" deleted
向下缩容操作也是很平滑的:
kubectl scale statefulset mysql --replicas=3
但是请注意,按比例扩大会自动创建新的PersistentVolumeClaims,而按比例缩小不会自动删除这些PVC。这使你可以选择保留那些初始化的PVC,以更快地进行缩放,或者在删除它们之前提取数据。
你可以通过运行以下命令查看此信息:
kubectl get pvc -l app=mysql
这表明,尽管将StatefulSet缩小为3,所有5个PVC仍然存在:
NAMESTATUSVOLUMECAPACITYACCESSMODESAGEdata-mysql-0Boundpvc-8acbf5dc-b103-11e6-93fa-42010a80000210GiRWO20mdata-mysql-1Boundpvc-8ad39820-b103-11e6-93fa-42010a80000210GiRWO20mdata-mysql-2Boundpvc-8ad69a6d-b103-11e6-93fa-42010a80000210GiRWO20mdata-mysql-3Boundpvc-50043c45-b1c5-11e6-93fa-42010a80000210GiRWO2mdata-mysql-4Boundpvc-500a9957-b1c5-11e6-93fa-42010a80000210GiRWO2m
如果你不打算重复使用多余的PVC,则可以删除它们:
32位操作系统和64位操作系统有什么区别?
我们通常说的64位技术是相对于32位而言的,这个位数指的是cpu GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。
64位平台不管是在性能上,还是在功能上,都要领先于目前的32位平台,目前主流的32位处理器在性能执行模式方面存在一个严重的缺陷:当面临大量的数据流时,32位的寄存器和指令集不能及时进行相应的处理运算。
32位处理器一次只能处理32位,也就是4个字节的数据;而64位处理器一次就能处理64位,即8个字节的数据。
如果将总长128位的指令分别按16位、32位、64位为单位进行编辑的话:32位的处理器需要4个指令,而64位处理器则只要两个指令。
显然,在工作频率相同的情况下,64位处理器的处理速度比32位的更快。
除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。
由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。
传统32位处理器的寻址空间最大为4GB,而64位的处理器在理论上则可以达到1800万个TB(1TB=1024GB)。
从32位到64位,表面上好象只是CPU字长增大了一倍,实际上它使寻址范围、最大内存容量、数据传输和处理速度、数值精度等指标也成倍增加,带来的结果就是CPU的处理能力得到大幅提升,尤其是对强烈依赖数值运算、存在巨量数据吞吐和需要超大并发处理的应用提升效果非常明显,如科学计算、人工智能、平面设计、视频处理、3D动画和游戏、数据库以及各种网络服务器等。
目前主流CPU使用的64位技术主要有AMD公司的AMD64位技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。
其中IA-64是Intel独立开发,不兼容32位计算机,仅用于Itanium(安腾)以及后续产品Itanium 2,人们习惯性地称它为“纯64位技术”。
64位计算技术从2004年推出至今,其产品线不断丰富。
目前,AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。
Intel方面支持64位技术的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。
流氓软件与正规软件,有什么不同
正规软件指的是:为方便用户使用计算机工作、娱乐而开发,面向社会公开发布的软件。
“流氓软件”介于两者之间,同时具备正常功能(下载、媒体播放等)和恶意行为(弹广告、开后门),给用户带来实质危害。
流氓软件的分类根据不同的特征和危害,困扰广大计算机用户的流氓软件主要有如下几类:1、广告软件(Adware)定义:广告软件是指未经用户允许,下载并安装在用户电脑上;或与其他软件捆绑,通过弹出式广告等形式牟取商业利益的程序。
危害:此类软件往往会强制安装并无法卸载;在后台收集用户信息牟利,危及用户隐私;频繁弹出广告,消耗系统资源,使其运行变慢等。
例如:用户安装了某下载软件后,会一直弹出带有广告内容的窗口,干扰正常使用。
还有一些软件安装后,会在IE浏览器的工具栏位置添加与其功能不相干的广告图标,普通用户很难清除。
2、间谍软件定义:间谍软件是一种能够在用户不知情的情况下,在其电脑上安装后门、收集用户信息的软件。
危害:用户的隐私数据和重要信息会被“后门程序”捕获,并被发送给黑客、商业公司等。
这些“后门程序”甚至能使用户的电脑被远程操纵,组成庞大的“僵尸网络”,这是目前网络安全的重要隐患之一。
例如:某些软件会获取用户的软硬件配置,并发送出去用于商业目的。
3、浏览器劫持定义:浏览器劫持是一种恶意程序,通过浏览器插件、BHO(浏览器辅助对象)、Winsock LSP等形式对用户的浏览器进行篡改,使用户的浏览器配置不正常,被强行引导到商业网站。
危害:用户在浏览网站时会被强行安装此类插件,普通用户根本无法将其卸载,被劫持后,用户只要上网就会被强行引导到其指定的网站,严重影响正常上网浏览。
例如:一些不良站点会频繁弹出安装窗口,迫使用户安装某浏览器插件,甚至根本不征求用户意见,利用系统漏洞在后台强制安装到用户电脑中。
这种插件还采用了不规范的软件编写技术(此技术通常被病毒使用)来逃避用户卸载,往往会造成浏览器错误、系统异常重启等。
4、行为记录软件(Track Ware)定义:行为记录软件是指未经用户许可,窃取并分析用户隐私数据,记录用户电脑使用习惯、网络浏览习惯等个人行为的软件。
危害:危及用户隐私,可能被黑客利用来进行网络诈骗。
例如:一些软件会在后台记录用户访问过的网站并加以分析,有的甚至会发送给专门的商业公司或机构,此类机构会据此窥测用户的爱好,并进行相应的广告推广或商业活动。
5、恶意共享软件定义:恶意共享软件是指某些共享软件为了获取利益,采用诱骗手段、试用陷阱等方式强迫用户注册,或在软件体内捆绑各类恶意插件,未经允许即将其安装到用户机器里。
危害:使用“试用陷阱”强迫用户进行注册,否则可能会丢失个人资料等数据。
软件集成的插件可能会造成用户浏览器被劫持、隐私被窃取等。
例如:用户安装某款媒体播放软件后,会被强迫安装与播放功能毫不相干的软件(搜索插件、下载软件)而不给出明确提示;并且用户卸载播放器软件时不会自动卸载这些附加安装的软件。
又比如某加密软件,试用期过后所有被加密的资料都会丢失,只有交费购买该软件才能找回丢失的数据。
随着网络的发展,“流氓软件”的分类也越来越细,一些新种类的流氓软件在不断出现,分类标准必然会随之调整。
桌面的图标只看见字不见图,怎么回事
第1招——夹书丰胸招数详解:在两腋下夹书,双手往前抬至平举,坚持到手臂发酸或书掉落为止,每日多次练习。
书的厚度因人而异,以不感到难受为宜。
成效分析:此方法深得“台湾波神”唐林推崇。
专家分析,腋下夹书,双手前举时迫使人挺腰、挺胸。
此姿势有助于锻炼胸肌、挺拔胸部。
第2招——催眠丰胸招数详解:告诉自己“我的胸部正变得越来越丰满、越来越挺拔”。
成效分析:心理学家强调,乳房直接保留着女人心理成长的痕迹。
在很多情况下,乳房生长的决定权更在于大脑对它的暗示。
这种暗示与乳房的关系远比我们想像得密切,超过了乳房内部的脂肪和腺体的生理影响。
第3招——呼吸丰胸招数详解:盘腿端坐、两脚底并拢;两膝尽量向下、上半身尽量向上伸展、两臂尽量向上伸直;用鼻吸气,控制双肩不上抬,充分扩展胸廓,同时上半身前倾、腹部尽量下压;上半身倾至最大限度,屏住呼吸;等到憋不住气时、边用嘴吐气边抬起上半身,两臂不要用力。
起身呼吸5次稍做调整后,重复此动作5~10次。
呼吸过程中可以舒展上腹部,但小腹一定要收紧。
呼吸节奏适中,不宜过快或过慢。
成效分析:正确的呼吸方法不仅能供给充足的氧气,有效缓解疲劳,更有意想不到的丰胸效果。
有实验证实,进行此呼吸练习3月后,练习者胸部平均增大,同时腰部变瘦。
◆饮食篇第4招——青木瓜丰胸招数详解:青木瓜去皮、去籽、切块,排骨切块,用热水烫一下去腥。
锅中水煮滚,将排骨、木瓜、葱、姜、料酒放入,用小火炖煮3小时,撒入精盐调味食用。
特别提醒,新鲜木瓜冬天时略带苦味,是正常现象,可安心食用。
成效分析:青木瓜自古就是第一丰胸佳果,林熙蕾、徐怀钰都食用它来丰胸。
因为其中含量丰富的木瓜酵素和维生素A能刺激女性荷尔蒙分泌,有助丰胸,木瓜酵素还可分解蛋白质,促进身体对蛋白质的吸收,搭配肉类食用,效果最佳。
第5招——酪梨丰胸招数详解:酪梨半个,挖出果肉,加鲜奶250ml、核桃适量,搅打成汁饮用,可用蜂蜜调味。
成效分析:台湾第一美女萧蔷经常饮用这种酪梨汁,其丰胸效果有目共睹。
酪梨中含量丰富的不饱和脂肪酸,能增加胸部组织弹性;含有的维生素A能促进女性荷尔蒙分泌,维生素C能防止胸部变形,维生素E则有助胸部发育。
而鲜奶和核桃中含有的蛋白质和脂质能增进乳房海绵体膨胀,也有丰胸功效。
第6招——酒酿丰胸招数详解:酒酿加水适量,微波2分钟左右即可,或制成酒酿蛋、酒酿汤圆。
月经来潮前早晚食用一次,效果更佳。
成效分析:天心能有魔鬼身材,酒酿功不可没。
许多营养师也认同酒酿的丰胸功效。
因为酒酿中含有能促进女性胸部细胞丰满的天然荷尔蒙,其酒精成分也有助于改善胸部血液循环。
第7招——药膳丰胸招数详解:花生100克、去核红枣100克、黄芪20克,熬粥,经期后连食7天。
成效分析:这道流传至今的清宫御用药膳,传说是太医特别为慈禧研制的丰胸秘方。
现代营养学分析认为,花生含有丰富的蛋白质及油脂;红枣能生津、调节内分泌;黄芪行气活血,三者搭配能使胸部尺寸升级到你满意的状态,同时还温暖子宫提高受孕率。
◆按摩篇第8招——强化天然Bra招数详解:沐浴后,给全身涂上滋润露。
用微笑动作将嘴巴张大,重复20次,以强化颈部肌肉;用手由下往上,由外往内将乳房往上提升,再将按摩延伸至胸部上方到颈项的部位,手法同样为向上提升,按摩5分钟左右。
成效分析:促进血液循环,收紧颈部、胸部肌肉,强化人体天然Bra,令乳房突出坚挺。
第9招——巧择3种精油招数详解:选择基础油+伊兰+天竺葵+玫瑰,从乳房下沿,沿外缘向上按摩到颈下锁骨位置;从乳房中心位置打圆圈按摩,向上按摩到锁骨位置;在乳房周围,以画小圆方式做螺旋按摩。
每个动作重复8~10次。
成效分析:精油按摩刺激胸部细胞吸收精油成分,不仅有助丰胸,还能改善胸部下垂、外扩现象,进而提升胸部线条。
第10招——穴位针灸按摩招数详解:洗澡时按摩两乳中间的檀中穴、肩胛骨中央凹陷处的天宗穴、小指指甲下方外侧的少泽穴,或到专业中医医院进行针灸丰胸。
成效分析:田丽那对傲人双峰全拜中医师多年来的针炙所赐。
根据中医学原理,按摩或针灸穴位能刺激腺体和内分泌,命令脑垂体释放激素,作用于卵巢,反馈性激活乳腺细胞,促进乳房发育。
同时也把血液引流到胸部,给乳腺输送营养,以达丰胸功效。
第11招——沐浴水疗按摩招数详解:沐浴时利用花洒,将温水或冷水交替着由下往上冲洗、刺激胸部。
洗完后,趁着身体微热时,擦上滋润露,按摩胸部。
成效分析:曾宝仪的丰胸方法之一就是沐浴时用水按摩胸部。
短时间的低温刺激,能改善乳腺组织营养,提高张力,促进其生长。
利用水对胸部的冲击按摩作用,还能让乳晕颜色及乳房形状更加漂亮。
◆运动篇第12招——俯卧撑丰胸招数详解:双膝并拢跪在地上,双脚抬起、俯身向前,双手着地与肩宽,保持背部挺直及臀部收紧;慢慢屈臂至胸部触到地面,再慢慢将身体向上推,回到原位。
为保持胸部肌肉持续的紧张状态,在移到最高点时不完全挺直肘关节,重覆10次。
做此练习时,胸部一定要挺起,不要下垂,腹肌收紧,当身体放下时,腰不要塌下。
成效分析:虽然这个动作相当累人,但它已经被公认为最有效的丰胸运动。
只要养成每天做的习惯,不但能丰胸,还能缩小腹部。
实际上做俯卧撑本身并不能使乳房增大,因为乳房里并无肌肉。
但通过锻炼能使乳房下胸肌增长,胸肌的增大会使乳房突出,看起来胸部就变得丰满了,而且确实弹性增加。
第13招——游泳丰胸招数详解:练习蝶泳和自由泳。
成效分析:游泳也是一个很好的丰胸运动,水压能按摩胸部,还可以借助水中划动手臂充分扩胸。
第14招——UPUP丰胸操招数详解:双手在胸前合十,手肘尽量抬高,左右互推;收腹挺胸,用肩膀的力量尽量使手臂向上伸直,不要踮脚尖,腰部以下不要用力;双手在身后合十,尽量后伸。
成效分析第一个动作可锻炼胸部韧带,使胸部更加挺拔;第二个动作能锻炼胸肌、托高胸部 ;最后一个动作可调整脊椎和肩膀的宽度,防止胸部下垂。
发表评论