kubernetes 通过deployment创建一个无状态应用

声明:这片文章是我通过实践理解并翻译的kubernetes 官网,源地址:Run a Stateless Application Using a Deployment

目标:
  • 创建一个nginx deployment
  • 通过kubectl查看deployment信息
  • 滚动更新deployment

开始之前:
    你需要有一个kubernetes的集群环境,并且配置好kubectl能够连接到kubernetes集群环境。如果你没有kubernetes集群环境,你可以通过Minikube创造一个集群或者使用kubernetes的是运行环境:

创建一个nginx deployment


你可以通过一个yaml文件形式的deployment来创建你的应用。例如,这个yaml文件描述了你创建一个nginx1.7.9镜像的deployment

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template: # create pods using pod definition in this template
    metadata:
      # unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is
      # generated from the deployment name
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
1 通过yaml创建这个应用
kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment.yaml
2 查看这个deployment的详细信息
kubectl describe deployment nginx-deployment
输出如下:
user@computer:~/website$ kubectl describe deployment nginx-deployment
Name:     nginx-deployment
Namespace:    default
CreationTimestamp:  Tue, 30 Aug 2016 18:11:37 -0700
Labels:     app=nginx
Annotations:    deployment.kubernetes.io/revision=1
Selector:   app=nginx
Replicas:   2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:   RollingUpdate
MinReadySeconds:  0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
Pod Template:
  Labels:       app=nginx
  Containers:
   nginx:
    Image:              nginx:1.7.9
    Port:               80/TCP
    Environment:        <none>
    Mounts:             <none>
  Volumes:              <none>
Conditions:
  Type          Status  Reason
  ----          ------  ------
  Available     True    MinimumReplicasAvailable
  Progressing   True    NewReplicaSetAvailable
OldReplicaSets:   <none>
NewReplicaSet:    nginx-deployment-1771418926 (2/2 replicas created)
No events.
3 列出这个deployment创建的pods
kubectl get pods -l app=nginx
输出如下:
NAME                                READY     STATUS    RESTARTS   AGE
nginx-deployment-1771418926-7o5ns   1/1       Running   0          16h
nginx-deployment-1771418926-r18az   1/1       Running   0          16h
4 展示pods详情

kubectl describe pod <pod-name>
升级应用

你可以通过yaml升级你的应用,下面的这个yaml文件描述了将nginx应用升级成1.8的语法。

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.8 # Update the version of nginx from 1.7.9 to 1.8
        ports:
        - containerPort: 80

1 应用这个新的yaml文件

kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment-update.yaml

2 查看这个deployment的pods的名字从旧的更新到新的

kubectl get pods -l app=nginx

通过增加副本扩展应用的数量

你可以通过一个新的yaml文件来扩展deployment的pods数量,这个yaml文件通过定义replicas是4,来确定deployment的pods数量为4

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 4 # Update the replicas from 2 to 4
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.8
        ports:
        - containerPort: 80


1 应用yaml文件

kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment-scale.yaml

2 确认deployments有4个pods

kubectl get pods -l app=nginx

输出如下

NAME                               READY     STATUS    RESTARTS   AGE
nginx-deployment-148880595-4zdqq   1/1       Running   0          25s
nginx-deployment-148880595-6zgi1   1/1       Running   0          25s
nginx-deployment-148880595-fxcez   1/1       Running   0          2m
nginx-deployment-148880595-rwovn   1/1       Running   0          2m


删除deployment

通过name删除

kubectl delete deployment nginx-deployment



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值