• kubernetes学习笔记-集群管访问理篇


    集群搭建:https://blog.csdn.net/u013271384/article/details/125507588

    部署

    命名为:deploy1:

    kubectl create deployment deploy1 --image=nginx
    
    • 1

    查看

    kubectl describe deployment  deploy1
    
    • 1

    kubectl get deploy
    
    • 1

    扩/缩 服务

    kubectl scale --replicas=2 deploy/deploy1
    
    • 1

    kubectl scale --replicas=2 deployment/deploy1
    
    • 1

    使用上面的方法指定了两个副本
    监视器查看

    kubectl get rs
    
    • 1

    kubectl describe rs 
    
    • 1

    删除(监视器还在的情况下,删除pod,pod还会被重建)

    kubectl delete deploy deploy1
    
    • 1

    配置查看

    kubectl create deployment deploy1 --image=nginx --dry-run=client -o yaml
    
    • 1

    输出yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        app: deploy1
      name: deploy1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: deploy1
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: deploy1
        spec:
          containers:
          - image: nginx
            name: nginx
            resources: {}
    status: {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    更新:

    kubectl set image deployments deploy1 nginx=nginx:1.18 --record
    
    • 1

    查看部署历史:(–record指定后,会有注释显示出来)

    kubectl rollout history deploy deploy1
    
    • 1

    回退

    kubectl rollout undo deployment/deploy1
    
    • 1

    或 回退至指定版本:

    kubectl rollout undo daemonset/deploy1 --to-revision=3
    
    
    • 1
    • 2

    滚动更新策略
    (默认启动一个pod,关闭一个pod,当要更新很多时,可以修改更新策略)
    修改上面生成的yaml中的strategy: {}
    创建10%个pod,再删除10%个pod

    strategy:
      type: RollingUpdate                      # type值: RollingUpdate(默认,滚动更新),Recreate(重新创建)
      rollingUpdate:
        maxSurge: 10%                          #一次最多创建 10%的节点,可以直接写固定值10,表示一次性创建10个
        maxUnavailable: 0                      #最大不可用数量为0,要求更新的每个pod都可用,即先增加一个再减少一个节点
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看pod集群内ip

    kubectl get pods -o wide
    
    • 1

    集群内pod访问

    删除上面的pod,新增yaml,
    运行命令输出yaml后修改kubectl create deployment deploy1 --image=nginx --dry-run=client -o=yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: deploy1
      name: deploy1
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: deploy1
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0
      template:
        metadata:
          labels:
            app: deploy1
        spec:
          containers:
          - image: nginx
            name: nginx
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    上面保存成 deploy1.yaml后运行命令(默认情况下,Master Node不参与工作负载,即pod不能部署到master节点上,只能部署到node节点):

    kubectl apply -f deploy1.yaml
    
    • 1

    kubectl create -f deploy1.yaml
    
    • 1

    查看pod状态

    kubectl get pod -o wide
    
    • 1

    结果:

    NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
    deploy1-74b8bd969b-6hx5z   1/1     Running   0          61m   10.244.1.8   node1   <none>           <none>
    deploy1-74b8bd969b-w9x74   1/1     Running   0          61m   10.244.1.7   node1   <none>           <none>
    
    • 1
    • 2
    • 3

    内部访问成功:

    curl http://10.244.1.7
    
    • 1

    1. 通过service

    1. 集群内部访问四种模式:
     clusterip      Create a ClusterIP service
     externalname   Create an ExternalName service 依赖云服务商
     loadbalancer   Create a LoadBalancer service 依赖云服务商
     nodeport       Create a NodePort service
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    kubectl create service clusterip deploy1 --tcp=80:80
    
    • 1
    1. 集群外部访问
    kubectl create service nodeport deploy1 --tcp=80:80 --node-port=30000
    
    • 1

    --node-port=0 用于把集群内node上的服务暴露出来,有效范围30000-32767。

    查看yaml: kubectl create service nodeport deploy1 --tcp=80:80 --node-port=30000 --dry-run=client -o yaml

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      labels:
        app: deploy1
      name: deploy1
    spec:
      ports:
      - name: 80-80
        nodePort: 30000
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: deploy1
      type: NodePort
    status:
      loadBalancer: {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    service跟据selectorlabel值为app: deploy1的deployment关联,默认的selector只能指定app:的标签,其他标签可以打印出yaml修改对应selector的值

    2. 通过Ingress

    https://blog.csdn.net/u013271384/article/details/126238695


    配置 IPv4/IPv6 双协议栈
    https://kubernetes.io/zh-cn/docs/concepts/services-networking/dual-stack/

  • 相关阅读:
    LINUX
    Node.js之Buffer(缓冲器)
    VUE(递归)语法没错,但报 ESLint: ‘formatToTree‘ is not defined.(no-undef)
    vue+element-ui el-table组件二次封装实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题
    悦音配音狂欢双十一丨惊喜等你来
    带有@Transactional注解的方法事务失效问题以及解决方法
    设计模式之命令模式
    2022杭电多校七 F-Sumire(数位DP+实用技巧)
    Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
    谷歌浏览器最新版和浏览器驱动下载地址
  • 原文地址:https://blog.csdn.net/u013271384/article/details/125554357