Kubernetes Deployments

A Deployment controller provides declarative updates for Pods and ReplicaSets.
Deployments提供了Pods 和 ReplicaSets 的更新和维护

  1. Deployments配置文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.12.2
        ports:
        - containerPort: 80
  1. 创建
kubectl create -f deployment_nginx.yml
  1. 查看
kubectl get deployment
  1. 查看更多信息
kubectl get deployment -o wide
  1. 升级image
kubectl set image deployment nginx-deployment nginx=nginx:1.13
  1. 查看rollout历史
kubectl rollout history deployment nginx-deployment
  1. 回到上一个版本
kubectl rollout undo deployment nginx-deployment
  1. 查看node情况
kubectl get node
  1. 查看node详情
kubectl get node -o wide
  1. 把服务暴露给外部
kubectl expose deployment nginx-deployment --type=NodePort
  1. 查看服务
kubectl get svc
  1. 删除服务
kubectl delete services nginx-deployment
  1. 创建deployment的services
kubectl expose deployment service-test

如果deployment有多个pod,那么用services的IP访问的时候,会自动进行负载均衡

services的服务有三种类型
ClusterIp
内部能访问的,ClusterIp的IP是不会变的
创建pod的services

kubectl expose pods nginx-pod

NodePort
外部能访问的,绑定在Node上面
创建的时候指定type=NodePort,不指定则是默认的ClusterIp

kubectl expose deployment nginx-deployment --type=NodePort

创建之后,就可以通过node的IP和端口访问了,并且每一台Node都可以访问
另外创建方式是通过配置文件创建services
service_nginx.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  ports:
  - port: 32333
    # 映射到外部的端口
    nodePort: 32333
    targetPort: nginx-port
    protocol: TCP
  selector:
    app: nginx
  # services类型  
  type: NodePort

LoadBalancer
云服务商提供的

  1. 编辑deployment服务
kubectl edit deployment service-test

猜你喜欢

转载自blog.csdn.net/fanxl10/article/details/84348931