范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

pod(一)Kubernetes(k8s)创建pod的两种方式

  目录  一.系统环境
  服务器版本
  docker软件版本
  CPU架构
  CentOS Linux release 7.4.1708 (Core)
  Docker version 20.10.12
  x86_64  二.前言
  docker可以创建容器,Kubernetes不能直接创建容器,Kubernetes创建的是pod,pod里面包含了一个或者多个容器。
  创建pod的   前提   是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》 https://www.cnblogs.com/renshengdezheli/p/16686769.html  三.pod
  Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
  Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的 "逻辑主机",其中包含一个或多个应用容器, 这些容器相对紧密地耦合在一起。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。
  除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群中支持临时性容器 的情况下,为调试的目的注入临时性容器。
  pod里面有一个或者多个容器,常见的容器有docker容器,containerd容器,除了 Docker 之外,Kubernetes 支持 很多其他容器运行时, Docker 是最有名的容器运行时, 使用 Docker 的术语来描述 Pod 会很有帮助。
  Pod 的共享上下文包括一组 Linux 命名空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离 Docker 容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。
  就 Docker 概念的术语而言,Pod 类似于共享命名空间和文件系统卷的一组 Docker 容器。  四.创建pod4.1 环境介绍
  Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点
  服务器
  操作系统版本
  CPU架构
  进程
  功能描述
  k8scloude1/192.168.110.130
  CentOS Linux release 7.4.1708 (Core)
  x86_64
  docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico
  k8s master节点
  k8scloude2/192.168.110.129
  CentOS Linux release 7.4.1708 (Core)
  x86_64
  docker,kubelet,kube-proxy,calico
  k8s worker节点
  k8scloude3/192.168.110.128
  CentOS Linux release 7.4.1708 (Core)
  x86_64
  docker,kubelet,kube-proxy,calico
  k8s worker节点
  Kubernetes创建pod一般有两种方式:  使用命令行的方式创建pod;  使用yaml文件创建pod  4.2 使用命令行的方式创建pod
  创建pod的命令为   kubectl run   ,kubectl创建pod的帮助可以查看网页版,网页版地址为: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create
  查看kubectl run创建pod的帮助  [root@k8scloude1 ~]# kubectl run --help Create and run a particular image in a pod.  Examples:   # Start a nginx pod.   kubectl run nginx --image=nginx      # Start a hazelcast pod and let the container expose port 5701.   kubectl run hazelcast --image=hazelcast/hazelcast --port=5701  ...... Usage:   kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]  Use "kubectl options" for a list of global command-line options (applies to all commands).
  首先拉取我们需要的镜像,先在worker节点拉取nginx镜像  [root@k8scloude2 ~]# docker pull nginx  [root@k8scloude3 ~]# docker pull nginx4.2.1 创建最简单的pod
  使用nginx镜像创建一个pod  #nginx为pod名字     --image=nginx表示使用Nginx镜像 [root@k8scloude1 pod]# kubectl run nginx --image=nginx pod/nginx created
  查看pod,STATUS为Running就表示pod创建成功  [root@k8scloude1 pod]# kubectl get pod NAME    READY   STATUS              RESTARTS   AGE nginx   0/1     ContainerCreating   0          6s  [root@k8scloude1 pod]# kubectl get pod NAME    READY   STATUS    RESTARTS   AGE nginx   1/1     Running   0          54s
  删除pod  [root@k8scloude1 pod]# kubectl delete pod nginx pod "nginx" deleted4.2.2 创建pod,指定镜像下载策略
  使用nginx镜像创建一个pod,镜像的下载策略为IfNotPresent本地没有才下载镜像
  镜像的下载策略:Always:每次都下载最新的镜像;Never:只使用本地镜像,从不下载,IfNotPresent:本地没有才下载镜像 默认值为:Always  #nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像 [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent pod/nginx created  [root@k8scloude1 pod]# kubectl get pod NAME    READY   STATUS    RESTARTS   AGE nginx   1/1     Running   0          5s  #删除pod [root@k8scloude1 pod]# kubectl delete pod nginx pod "nginx" deleted
  注意:kubectl delete pod nginx会有点慢,加了--force 强制删除pod,删除pod会快很多  [root@k8scloude1 pod]# kubectl delete pod nginx --force warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "nginx" force deleted4.2.3 创建pod,指定环境变量和标签
  查看pod标签的帮助  [root@k8scloude1 ~]# kubectl run --help | grep labels   # Start a hazelcast pod and set labels "app=hazelcast" and "env=prod" in the container.   kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"   -l, --labels="": Comma separated labels to apply to the pod(s). Will override previous values.
  创建pod,指定环境变量和标签  #nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像   --env:设置变量xx=1,yy=2     --labels设置标签,给pod打上"xx=1,yy=2"的标签 [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --env "xx=1" --env "yy=2" --labels="xx=1,yy=2" pod/nginx created  #查看pod [root@k8scloude1 pod]# kubectl get pod -o wide NAME    READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES nginx   1/1     Running   0          20s   10.244.112.136   k8scloude2              
  进入到pod里,可以看到变量xx,yy  [root@k8scloude1 pod]# kubectl exec -it nginx -- bash root@nginx:/# echo $xx 1 root@nginx:/# echo $yy 2 root@nginx:/# exit exit
  查看pod的标签,--show-labels参数显示标签  [root@k8scloude1 pod]# kubectl get pod -o wide --show-labels NAME    READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES   LABELS nginx   1/1     Running   0          4m59s   10.244.112.136   k8scloude2                          xx=1,yy=24.3 使用yaml文件的方式创建pod4.3.1 yaml文件概述
  YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。主要强调这种语言是以数据为中心,而不是以标记语言为重心,例如像xml语言就会使用大量的标记。
  YAML是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。YAML的配置文件后缀为 .yaml。  yaml文件基本语法:  YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16。  数据结构采用键值对的形式,即 键名称: 值,注意冒号后面要有空格。  每个清单(数组)成员以单行表示,并用短杠+空白(- )起始。或使用方括号([]),并用逗号+空白(, )分开成员。  每个散列表的成员用冒号+空白(: )分开键值和内容。或使用大括号({ }),并用逗号+空白(, )分开。  字符串值一般不使用引号,必要时可使用,使用双引号表示字符串时,会转义字符串中的特殊字符(例如 )。使用单引号时不会转义字符串中的特殊字符。  大小写敏感  使用缩进表示层级关系,缩进不允许使用tab,只允许空格,因为有可能在不同系统下tab长度不一样  缩进的空格数可以任意,只要相同层级的元素左对齐即可  在单一文件中,可用连续三个连字号(---)区分多个文件。还有选择性的连续三个点号(…)用来表示文件结尾。  "#"表示注释,可以出现在一行中的任何位置,单行注释  在使用逗号及冒号时,后面都必须接一个空白字符,所以可以在字符串或数值中自由加入分隔符号(例如:5,280或http://www.wikipedia.org)而不需要使用引号。
  接下里使用yaml文件的方式创建pod  4.3.2 使用yaml文件的方式创建pod
  --dry-run 模拟运行,并不会真的创建一个pod , --dry-run=client输出信息少 ,--dry-run=server输出信息多, -o yaml以yaml文件的格式输出
  --dry-run=server输出信息如下:内容很多  #nginx为pod名字     --image=nginx表示使用Nginx镜像  --image-pull-policy=IfNotPresent表示镜像下载策略为IfNotPresent本地没有才下载镜像 [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=server -o yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: "2022-01-12T07:51:11Z"   labels:     run: nginx   name: nginx   namespace: pod   uid: afa40310-3efd-4d9f-8337-8e1db955c6f7 spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}     terminationMessagePath: /dev/termination-log     terminationMessagePolicy: File     volumeMounts:     - mountPath: /var/run/secrets/kubernetes.io/serviceaccount       name: kube-api-access-w56gz       readOnly: true   dnsPolicy: ClusterFirst   enableServiceLinks: true   preemptionPolicy: PreemptLowerPriority   priority: 0   restartPolicy: Always   schedulerName: default-scheduler   securityContext: {}   serviceAccount: default   serviceAccountName: default   terminationGracePeriodSeconds: 30   tolerations:   - effect: NoExecute     key: node.kubernetes.io/not-ready     operator: Exists     tolerationSeconds: 300   - effect: NoExecute     key: node.kubernetes.io/unreachable     operator: Exists     tolerationSeconds: 300   volumes:   - name: kube-api-access-w56gz     projected:       defaultMode: 420       sources:       - serviceAccountToken:           expirationSeconds: 3607           path: token       - configMap:           items:           - key: ca.crt             path: ca.crt           name: kube-root-ca.crt       - downwardAPI:           items:           - fieldRef:               apiVersion: v1               fieldPath: metadata.namespace             path: namespace status:   phase: Pending   qosClass: BestEffort
  --dry-run=client输出信息如下:输出内容恰到好处  [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: nginx   name: nginx spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  生成创建pod的yaml文件  [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >nginx.yaml
  yaml文件里有很多变量,可以使用kubectl explain查看yaml文件每个字段的含义  # kubectl explain pods查看一级字段有哪些,每个的含义 [root@k8scloude1 ~]# kubectl explain pods KIND:     Pod VERSION:  v1  DESCRIPTION:      Pod is a collection of containers that can run on a host. This resource is      created by clients and scheduled onto hosts.  FIELDS:    apiVersion	      APIVersion defines the versioned schema of this representation of an      object. Servers should convert recognized schemas to the latest internal      value, and may reject unrecognized values. More info:      https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources     kind	      Kind is a string value representing the REST resource this object      represents. Servers may infer this from the endpoint the client submits      requests to. Cannot be updated. In CamelCase. More info:      https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds     metadata	      Standard object"s metadata. More info:      https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata     spec	      Specification of the desired behavior of the pod. More info:      https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status     status	      Most recently observed status of the pod. This data may not be up to date.      Populated by the system. Read-only. More info:      https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
  查看一级字段下包含了哪些字段,对某个字段不了解,先使用kubectl explain查看  [root@k8scloude1 ~]# kubectl explain pod.spec  [root@k8scloude1 ~]# kubectl explain pods.spec.containers  [root@k8scloude1 ~]# kubectl explain pods.spec.containers.ports
  容器containers里也可以自定义变量,定义变量的时候:变量的值如果是数字,需要加""  [root@k8scloude1 pod]# vim nginx.yaml   #kind: Pod表示资源类型为Pod   labels指定pod标签   metadata下面的name指定pod名字   containers下面全是容器的定义    #image指定镜像名字  imagePullPolicy指定镜像下载策略   containers下面的name指定容器名 #resources指定容器资源(CPU,内存等)   env指定容器里的环境变量   dnsPolicy指定DNS策略 #restartPolicy容器重启策略 [root@k8scloude1 pod]# cat nginx.yaml  apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: nginx   name: nginx spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}     env:     - name: xx       value: "12"     - name: yy       value: "21"     - name: zz       value: hello   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  kubectl apply -f 应用配置文件,创建pod  [root@k8scloude1 pod]# kubectl apply -f nginx.yaml  pod/nginx created  [root@k8scloude1 pod]# kubectl get pods NAME    READY   STATUS    RESTARTS   AGE nginx   1/1     Running   0          26s
  删除pod  [root@k8scloude1 pod]# kubectl delete -f nginx.yaml  pod "nginx" deleted  [root@k8scloude1 pod]# kubectl get pods No resources found in pod namespace.
  定义一个pod指明容器的端口,containerPort: 80 只是告知外界nginx这个pod使用80端口,真正要修改端口需要修改镜像  [root@k8scloude1 pod]# vim nginx.yaml   #kind: Pod表示资源类型为Pod   labels指定pod标签   metadata下面的name指定pod名字   containers下面全是容器的定义    #image指定镜像名字  imagePullPolicy指定镜像下载策略   containers下面的name指定容器名 #resources指定容器资源(CPU,内存等)   env指定容器里的环境变量   dnsPolicy指定DNS策略 #restartPolicy容器重启策略    ports指定容器端口 [root@k8scloude1 pod]# cat nginx.yaml  apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: nginx   name: nginx spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}     ports:     - name: http       containerPort: 80       protocol: TCP     env:     - name: xx       value: "12"     - name: yy       value: "21"     - name: zz       value: hello   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  创建pod  [root@k8scloude1 pod]# kubectl apply -f nginx.yaml  pod/nginx created  [root@k8scloude1 pod]# kubectl get pods NAME    READY   STATUS    RESTARTS   AGE nginx   1/1     Running   0          3s
  强制删除pod  [root@k8scloude1 pod]# kubectl delete pod nginx --force  warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. pod "nginx" force deleted4.3.3 yaml文件里的字典和列表
  先生成一个yaml文件  [root@k8scloude1 pod]# kubectl run nginx --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: nginx   name: nginx spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  我们注意到,有的字段前面有- ,有的没有- ,没有-的是字典,字典里不能有重复变量,有-的是列表,列表里的每个对象都是一个匿名字典,在列表中,对象的第一个字段要加-  例如:当pod里有多个容器的时候,containers可以定义多个,每个容器是一个对象,每个容器的第一个变量就加-apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: nginx   name: nginx spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}   - image: nginx     imagePullPolicy: IfNotPresent     name: nginx     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always  status: {}4.3.4 查看不同类型的apiVersion
  不同的Kubernetes资源类型,apiVersion是不一样的,Pod的apiVersion为v1
  kubectl api-versions 查看所有的apiVersion  [root@k8scloude1 ~]# kubectl api-versions  admissionregistration.k8s.io/v1 admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 authentication.k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 autoscaling/v1 autoscaling/v2beta1 autoscaling/v2beta2 batch/v1 batch/v1beta1 certificates.k8s.io/v1 certificates.k8s.io/v1beta1 coordination.k8s.io/v1 coordination.k8s.io/v1beta1 crd.projectcalico.org/v1 discovery.k8s.io/v1 discovery.k8s.io/v1beta1 events.k8s.io/v1 events.k8s.io/v1beta1 extensions/v1beta1 flowcontrol.apiserver.k8s.io/v1beta1 metrics.k8s.io/v1beta1 networking.k8s.io/v1 networking.k8s.io/v1beta1 node.k8s.io/v1 node.k8s.io/v1beta1 policy/v1 policy/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 scheduling.k8s.io/v1 scheduling.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 v14.3.5 使用同一个yaml文件创建多个pod
  生成yaml文件  [root@k8scloude1 pod]# kubectl run pod1 --image=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml >pod1.yaml
  使用同一个yaml文件创建2个pod  [root@k8scloude1 pod]# sed "s/pod1/pod2/" pod1.yaml  apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod2   name: pod2 spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: pod2     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}  [root@k8scloude1 pod]# sed "s/pod1/pod2/" pod1.yaml | kubectl apply -f - pod/pod2 created  [root@k8scloude1 pod]# sed "s/pod1/pod3/" pod1.yaml | kubectl apply -f - pod/pod3 created  [root@k8scloude1 pod]# kubectl get pods NAME    READY   STATUS    RESTARTS   AGE pod2    1/1     Running   0          30s pod3    1/1     Running   0          9s  [root@k8scloude1 pod]# ls pod1.yaml
流浪地球2满江红持续领跑,春节档票房大局已定?随着大年初三的到来,2023年癸卯兔年春节档的大局逐渐明朗。最值得一提的,就是流浪地球2满江红相继成为中国电影市场第101部第102部票房破10亿元的电影。据灯塔专业版实时数据,截预见金兔财通基金吴林惠把握高质量发展新机遇金梓才2023年是信心恢复之年劫波渡尽,拨云见日。在一片忐忑与期许交织彷徨与寄望互融中,我们告别了2022年,迎来了崭新的2023年。在这辞旧迎新的重要时点,券商中国券中社APP邀请各大金融机构代表拍摄新春祝福天眼查年终盘点十大商标1。最动听商标之孤勇者孤勇者是英雄联盟动画主题曲,由陈奕迅演唱,被小学生群体广泛传唱,其经典歌词爱你孤身走暗巷,爱你不跪的模样,爱你对峙过绝望,不肯哭一场鼓舞了许多人。天眼查App总台CGTN联合全球多家媒体举办洞见系列媒体论坛近日,中央广播电视总台CGTN联合全球10余家媒体,成功举办洞见媒体在全球抗疫中的责任和力量及洞见携手同行共促复苏两场媒体论坛。活动邀请了来自美国英国澳大利亚巴基斯坦菲律宾柬埔寨肯杂感随笔丨年味的时代表达朱波时间真快,兔年春节就这样来了。谈及过年,时常会听到很多人在吐槽年味越来越淡了过年越来越没意思了乍一听,记忆里的春节,记忆里的年味儿,仿佛伴随着时光的流逝,在人们心底悄然消失了。好讨厌临时抱佛脚的人有句俗话说平时不烧香,临时抱佛脚!之前一直以为说的是读书的学生,平时不好好学习,快要考试了,急得如同热锅上的蚂蚁不知如何是好。现在看来这句话不也单单指学生,对某些成年人也同样适用已湖南怀化芷江机场航线航班全路线来了,你需要看看自上次平台推荐了怀化芷江机场开通深圳芷江成都新航线航班信息后,很多读者留言询问怀化芷江机场现有的航班班次。今天,我们将怀化芷江机场的现行飞行航班进行梳理,希望对大家有用。据悉,今年西行129天洛阳龙门石窟第四天下午便来到了千年帝都,牡丹花城洛阳。(奶奶信佛来拜佛,希望她在那边安好)景点门口前拍照次日早晨我按原计划的规划,早上去了一趟龙门石窟,怀着对信仰的虔诚,我游览了万以色列朝圣之旅圣母圣子的故乡拿撒勒拿撒勒位于以色列北部,距加利利湖大约30公里,人口不足10万,居民多为信奉基督教的阿拉伯人,是以色列最大的阿拉伯人占人口多数的城市。山谷中的拿撒勒古城拿撒勒之所以成为基督徒们的圣地这家德国汽车工业的幕后之王,会在新能源时代被抛下吗?提到德国汽车,大家想到的往往是奔驰宝马大众,但这些著名品牌背后,还有一家无冕之王隐形冠军,地位举足轻重,却少为人知。今天,让我们了解下它的故事,以及在新能源汽车时代面临的危机与挑战人民日报点名称赞!张帅除夕夜34岁生日挺进澳网16强,令球迷兴奋北京时间1月21日,这一天对于每一位中国人来说,是一个重要的日子。同时对于中国女网金花张帅而言,更是一个职业生涯的里程碑。在今日澳大利亚网球公开赛上,张帅再次证明了自己的实力。虽然
这几款品牌面霜深层补水紧致抗老,还能淡化细纹,让你素颜也发光这几款品牌面霜深层补水紧致抗老,还能淡化细纹,让你素颜也发光。菲洛嘉龄时光抗皱面霜菲洛嘉这款时光抗皱面霜它是属于综合性的抗衰老面霜,堪称面部小熨斗,特别适合想要抗衰老以及淡化细纹的预防婴儿湿疹的5个细节,让宝宝远离皮肤瘙痒困扰我昨天就发现宝宝脸颊的皮肤有点不对劲,红红的一片,当时并没有在意,今天再一看,他脸上起了一片红色的疹子,那一定很痒,因为宝宝总是在抓挠患处,这应该是湿疹吧,我该怎么办?谁都不愿意看皮肤发红发痒皲裂长脓疱这种特殊银屑病会危及生命据健康时报消息,有这样一群人,他们努力想摆脱自己身上的衣服,他们的衣服,干燥皲裂红痒溃烂并和皮肤融为一体。他们是泛发性脓疱型银屑病(GPP)患者。勃林格殷格翰与国际知名设计师巴特赫价格百元的抗衰护肤品,每个都是国货良心之作,想省钱的看看不亏大家有没有发现这样一个现象如果时间回到10年前,你说你用的是国货护肤品,是会被人嗤之以鼻的。那时候的国货,基本还是相宜本草自然堂水密码这种走补水保湿路线的基础护肤品,国际上流行的A浙江酒桌怪象黄酒平常自饮,酒宴更青睐这4款白酒,你喝过吗?浙江自古以来风景秀丽,人杰地灵,各种景观美不胜收。西子湖畔普陀山千岛湖,都在无声地诉说着浙江的自然之美,而西塘和乌镇则是浙江富庶繁华的象征。物产丰富的浙江,除了美景,还有美食美饮也史诗皮肤宝箱规则修改,优先获得未拥有皮肤,蔷薇之心彩蛋曝光你好,我是小酒。今天,是王者荣耀的七周年,不知不觉,从2016年入坑至今,居然已经七年了。王者荣耀也到了七年之痒的时候了。只不过,一款七年的手游依旧保持着这样的热度,果然不平凡。虽小米儿童智能手表手表小手机?米兔5X使用者报告大家好,之前我们聊过不少智能手表,但是还没说过儿童手表,为什么要买儿童手表,儿童手表和普通的智能手表有什么区别,哪些功能有用,哪些功能又是多余的呢?通过这期视频希望能给大家提供一个将省事进行到底,这次除了拖地什么都不用管了添可空间站洗地机哈喽大家好,我是老纪很大力!今天给大家带来的就是添可刚上市的洗地机革新产品芙万空间站。在这款空间站面市之前,市面上所有的洗地机都是一个充电底座一台主机,底座只能充电和启动自清洁功能山东一农妇参观博物馆,指着展览柜说这包是我的!暴露了身份1972年,山东菏泽地区展览馆正式开业,数百人走进展览厅,欣赏各种各样的文物。而在这些人群当中,一位佝偻着身子七十多岁的老妇人,显得尤为特别。老妇人步履蹒跚,在身边子女的搀扶之下走坚持深化改革开放改革开放已走过千山万水,但仍需跋山涉水。永葆闯的精神创的劲头干的作风,坚定不移推进改革开放,我们一定能续写更多春天的故事,创造让世界刮目相看的新的更大奇迹在浙江龙泉市小梅镇黄南村村官网买的iPhone14Pro这家卡没法用?何女士在苹果官网上买了一部苹果14Pro手机。她说遇上了一件奇怪的事情,手机无法使用电信的手机卡。1818黄金眼官网买的iPhone14Pro,电信卡没法用?何女士装电信手机卡这里