linux系统kubernetes的deployment使用

deployment

概念

deployment ==》deploy    //可以简写
kubectl create deployment myweb --image=nginx --dry-run -o yaml > nginx.yaml  创建文件

kubectl expose deployment myweb --name=web-svc --port=80 --type=NodePort --target-port=80 --drt-run -o yaml > web.yaml     对公网暴露端口

kubectl apply -f web.yaml

kubectl get svc   //查看service服务
kubectl get ep    //查看后台挂载端口

如果Pod出现故障,对应的服务也会挂掉,所以Kubernetes提供了一个Deployment的概念 ,目的是让Kubernetes去管理一组Pod的副本,也就是副本集 ,这样就能够保证一定数量的副本一直可用,不会因为某一个Pod挂掉导致整个服务挂掉。

Deployment 还负责在 Pod 定义发生变化时,对每个副本进行滚动更新(Rolling Update)。

使用yaml创建Deployment
k8s deployment资源创建流程:
1. 用户通过 kubectl 创建 Deployment。
2. Deployment 创建 ReplicaSet。
3. ReplicaSet 创建 Pod。
对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字

Deployment是一个定义及管理多副本应用(即多个副本 Pod)的新一代对象,与Replication Controller相比,它提供了更加完善的功能,使用起来更加简单方便。

示例

例1:
apiVersion: apps/v1
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.7.9
       ports:
       - containerPort: 80
例2:在上面yaml的基础上添加了volume
[root@kub-k8s-master prome]# vim deployment.yaml
apiVersion: apps/v1  #注意版本号
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:  #属性,选择器
  matchLabels:
    app: nginx
replicas: 2  #管理的副本个数
template:  #模板属性
  metadata: #对pod的描述
    labels:
      app: nginx
  spec:
    volumes:   #定义共享卷
    - name: nginx-vol
      emptyDir: {}
    containers:
    - name: nginx
      image: daocloud.io/library/nginx
      ports:
      - containerPort: 80
      volumeMounts:  #定义挂载卷
      - mountPath: "/usr/share/nginx/html"
        name: nginx-vol

文件说明

创建Deployment:
将上述的YAML文件保存为deployment.yaml,然后创建Deployment:
kubectl apply -f deployment.yaml


检查Deployment的列表:启动之后需要创建时间比较长
kubectl get deployments


kubectl get pods -l app=nginx


在这里加上了一个 -l 参数,即获取所有匹配 app: nginx 标签的 Pod。需要注意的是,在命令行中,所有 key-value 格式的参数,都使用"="而非":"表示。

删除Deployment:
kubectl delete deployments nginx-deployment
或者
kubectl delete -f deployment.yaml

deployment可用字段

replicas: 1 # 声明副本数目
revisionHistoryLimit: 3 # 保留历史版本
selector: # 选择器

服务暴露

NodePort  对外暴露


ClusterIP  内部访问,内部访问可以跨命名空间

ClusterIP 
此类型会提供一个集群内部的虚拟IP(与Pod不在同一网段),以供集群内部的pod之间通信使用。ClusterIP也是Kubernetes service的默认类型。 



NodePort
外网client--->nodeIP+nodePort--->podIP+PodPort
为每个节点暴露一个端口,通过nodeip + nodeport可以访问这个服务,同时服务依然会有cluster类型的ip+port。内部通过clusterip方式访问,外部通过nodeport方式访问。



loadbalance
LoadBalancer在NodePort基础上,K8S可以请求底层云平台创建一个负载均衡器,将每个Node作为后端,进行服务分发。

Ingress
Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端。

相关推荐

  1. linux系统kubernetesdeployment使用

    2024-03-23 07:10:03       40 阅读
  2. 深入理解KubernetesDeployment

    2024-03-23 07:10:03       38 阅读
  3. linux系统kubernetesyaml文件

    2024-03-23 07:10:03       40 阅读
  4. linux系统kubernetes概念

    2024-03-23 07:10:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 07:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 07:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 07:10:03       87 阅读
  4. Python语言-面向对象

    2024-03-23 07:10:03       96 阅读

热门阅读

  1. bclinux编译升级vsftpd3.0.5

    2024-03-23 07:10:03       41 阅读
  2. 57. 爬楼梯(第八期模拟笔试)

    2024-03-23 07:10:03       34 阅读
  3. win10 下Msys2编译FFmpeg的流程方法

    2024-03-23 07:10:03       47 阅读
  4. ARMday7

    ARMday7

    2024-03-23 07:10:03      44 阅读
  5. TensorFlow

    2024-03-23 07:10:03       42 阅读
  6. 1. 控制系统

    2024-03-23 07:10:03       34 阅读
  7. pta 7-31 字符串循环左移 C语言

    2024-03-23 07:10:03       33 阅读
  8. 关于Pyqt更换资源内容运行软件不生效的解决办法

    2024-03-23 07:10:03       36 阅读