zoukankan      html  css  js  c++  java
  • K8S 通过命令操作deployment,service,pod,标签

    上一篇文章中,我们一创建了一个简单的 K8S 集群,https://www.cnblogs.com/klvchen/p/9553499.html
    这里我们开始使用 kubectl 命令来创建应用,下面创建的 pod ,service 的 ip 地址范围是我们创建 K8S 集群中时所指定的 (kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap)
    pod 地址范围为 10.244.0.0/16
    service 地址范围为 10.96.0.0/12

    创建 deployment

    # 通过 kuectl run 命令来创建一个 deployment
    kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --dry-run=true
    

    nginx-deploy 是我们创建 deployment 的名字
    --image : 指定使用的镜像
    --port=80 :容器暴露的端口,该端口只能在 K8S 集群中访问
    -dry-run=true : 检测语法是否错误,不会正在创建
    
    # 创建 nginx-deploy
    kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 
    
    # 查看 deployment
    kubectl get deployment
    

    # 查看 pod
    kubectl get pods 或 kubectl get pods -o wide
    


    这里我们可以使用 K8S 集群中任意一台服务器访问 curl 10.244.2.2 获得 nginx 的内容

    删除 pod

    # kubectl delete 删除 pod
    kubectl delete pods  nginx-deploy-5b595999-zp4b4
    


    当我们再查看时,发现 pod 删除后自动再创建了,而且所在的节点也改变了,对应的 pod 的 ip 也改变了

    创建 service

    上面 pod 删除后重新创建,ip地址会发生改变,为解决这问题,我们使用 service

    kubectl expose deployment nginx-deploy --name=nginx --port=80 --protocol=TCP
    
    # 查看 service
    kubectl get svc
    
    # 取得确认对象的详细信息
    kubectl describe svc nginx
    
    # 可以通过 edit 把 ClusterIP 改成 NodePort,然后通过所有的物理机IP进行访问
    kubectl edit svc nginx
    


    我们使用集群中的任何服务器访问 curl 10.98.120.192 获得 nginx 的内容,即使 pod 删除后再重建

    删除 nginx-deploy , nginx
    kubectl delete deployment nginx-deploy
    kubectl delete svc nginx
    

    扩容缩容Pod的操作

    # 重新创建一个 pod
    kubectl run myapp --image=ikubernetes/myapp:v1 --port=80
    
    # 创建 service
    kubectl expose deployment myapp --name=myapp --port=80
    kubectl get svc
    


    访问 service myapp

    # 执行扩容缩容Pod的操作
    kubectl scale --replicas=5 deployment myapp
    kubectl get pods -o wide
    

    升级镜像

    # 通过 kubectl set image 升级镜像
    kubectl set image deployment myapp myapp=ikubernetes/myapp:v2
    
    # 再次访问 service ip
    curl 10.110.3.25
    

    恢复到上一个版本

    # 恢复上一个版本的镜像
    kubectl rollout undo deployment myapp
    kubectl rollout status deployment myapp 
    
    # 再次访问 service ip
    curl 10.110.3.25
    

    查看标标签

    kubectl get pods --show-labels
    


    service 是根据 pod 的标签来进行管理

    添加标签

    # 添加 release 标签,值为 stable
    kubectl label pods myapp-6865459dff-445x2 release=stable
    

    标签选择器

    kubectl get pods -l release!=stable
    kubectl get pods -l "release in (stable,beta,alpha)"
    kubectl get pods -l "release notin (stable,beta,alpha)"
    

    节点的标签

    # 获取节点的标签
    kubectl get nodes --show-labels
    
    # 添加节点的标签
    kubectl label nodes node1 disktype=ssd
    
    # 删除节点的标签
    kubectl label nodes node1 disktype-
    
  • 相关阅读:
    并发编程学习笔记(七、Thread源码分析)
    并发编程学习笔记(六、线程组)
    并发编程学习笔记(五、线程中常用的方法)
    并发编程学习笔记(四、线程的优先级)
    并发编程学习笔记(三、如何安全地终止线程)
    sql server登陆账号时遇到233错误
    github上传shh公匙问题
    mysql简单复习
    idea导入jstl标签库
    山高有攀头,路远有奔头~
  • 原文地址:https://www.cnblogs.com/klvchen/p/9901152.html
Copyright © 2011-2022 走看看