【k8s常用资源的使用】deployment资源、service资源的使用——kubernetes从放弃到入门

deployment资源可以同时创建多个pod,它可以保证同时多个pod存活,deploy创建后先生成个rs,由rs再启多个pod。

service资源可以为k8s中的容器做映射,来达到被外界访问的目的。

创建deployment资源有两种方式 :yaml文件方式和命令行方式。

创建deployment方式一:yaml文件方式

    在master节点创建nginx-deploy.yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: 192.168.1.5:5000/nginx:1.13
        ports:
        - containerPort: 80

  执行创建语句:

kubectl create -f nginx-deploy.yaml

  可以看到k8s生成了一个名为“nginx-deployment”的deploy,一个rs,rs自动创建了三个pod在三个不同节点。


 为此deployment资源关联service资源

 kubectl expose deployment nginx-deployment --port=80 --type=NodePort

 可以看到生成了一个名为nginx-deployment的service资源 ,映射的端口为31956

 访问三个node的ip+31956端口都可以正常访问nginx服务。


 service资源的负载均衡功能

 给三个node中的nginx的主目录添加html文件

echo 'node1'>index.html
kubectl cp index.html nginx-deployment-3653720-kzn1h:/usr/share/nginx/html/index.html
echo 'node2'>index.html
kubectl cp index.html nginx-deployment-3653720-zr3j9:/usr/share/nginx/html/index.html
echo 'node3'>index.html
kubectl cp index.html nginx-deployment-3653720-7kqtc:/usr/share/nginx/html/index.html


利用deployment进行升级及回滚

 curl -I 192.168.1.5:31956

    可以看到当前nginx版本为1.13 

 kubectl edit deployment nginx-deployment     --改为1.15
 kubectl get all -o wide

    可以看到生成了新的rs,镜像使用的是1.15,原来的rs没有pod资源了

 curl -I 192.168.1.5:31956

    查看pod资源中的nginx已修改为1.15版本

    升级回滚及查询历史版本

kubectl rollout undo deployment nginx-deployment   --自动回滚到上一个版本
kubectl rollout history deployment nginx-deployment   --配置文件生成deployment资源看不到历史版本号

   经查询,pod中容器版本已回滚到1.13,但是用yaml文件生成的deployment看不到历史的版本号。 


   创建deployment方式二:用命令行方式

kubectl run nginx --image=192.168.1.5:5000/nginx:1.13 --replicas=3 --record

  可以看到同样生成了一个rs,rs生成了三个pod节点。

kubectl rollout history deployment nginx  --此时查看版本

  用命令行升级deployment

kubectl set image deploy nginx nginx=192.168.1.5:5000/nginx:1.15

  回滚到指定版本

kubectl rollout undo deployment nginx --to-revision=1

  此时查看历史版本

此时可通过如下命令行给名为nginx的deployment添加service资源,后续步骤同上,不再赘述。

kubectl expose deployment nginx --port=80 --type=NodePort

小结:

       由本文可见,可使用deployment资源来创建多个pod,其可以保证随时多个pod同时在线,如其中有死项,deployment可自动创建保证多可用。此外可以给deployment关联service资源,通过端口映射,让外界通过访问node节点的宿主机来访问pod容器资源,service资源还有负载均衡的功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值