zoukankan      html  css  js  c++  java
  • k8s(4)-使用服务公开应用程序

        Kubernetes中的服务是一个抽象,它定义了一组逻辑Pod和一个访问它们的策略。服务允许从属Pod之间的松散耦合。与所有Kubernetes对象一样,使用YAML (首选)或JSON 定义服务服务所针对的Pod集合通常由LabelSelector确定

    尽管每个Pod都具有唯一的IP地址,但如果没有服务,这些IP不会在群集外部公开。服务允许您的应用程序接收流量。通过type在ServiceSpec中指定a 可以以不同方式公开服务:

    • ClusterIP(默认) - 在群集中的内部IP上公开服务。此类型使服务只能从群集中访问。
    • NodePort - 使用NAT在集群中每个选定节点的同一端口上公开服务。使用可从群集外部访问服务<NodeIP>:<NodePort>ClusterIP的超集。
    • LoadBalancer - 在当前云中创建外部负载均衡器(如果支持),并为服务分配固定的外部IP。NodePort的超集。
    • ExternalName - externalName通过返回带有名称的CNAME记录,使用任意名称(在规范中指定公开服务没有代理使用。此类型需要v1.7或更高版本kube-dns

    1. 查看现有的部署
    [root@master ~]# kubectl get deployments
    NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
    kubernetes-bootcamp   1/1     1            1           4h12m
    

      

    2. 通过expose命令和NodePort参数创建一个新服务
    [root@master ~]# kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
    service/kubernetes-bootcamp exposed
    

      

    3. 查看创建的服务
    [root@master ~]# kubectl get service 
    NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    kubernetes            ClusterIP   10.96.0.1       <none>        443/TCP          2d12h
    kubernetes-bootcamp   NodePort    10.98.200.115   <none>        8080:31238/TCP   16s
    

     

    查看详细信息

    [root@master ~]# kubectl get service 
    NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    kubernetes            ClusterIP   10.96.0.1       <none>        443/TCP          2d13h
    kubernetes-bootcamp   NodePort    10.98.200.115   <none>        8080:31238/TCP   12m
    [root@master ~]# kubectl describe  service/kubernetes-bootcamp
    Name:                     kubernetes-bootcamp
    Namespace:                default
    Labels:                   run=kubernetes-bootcamp
    Annotations:              <none>
    Selector:                 run=kubernetes-bootcamp
    Type:                     NodePort
    IP:                       10.98.200.115
    Port:                     <unset>  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  31238/TCP
    Endpoints:                10.244.0.15:8080
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>
    
    •   8080: Pod的端口
    •        31238: NodePort,对集群外部公开
    •        Endpoints: Pod的IP+端口

       

    4.  打印NodePod
    [root@master ~]# export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
    [root@master ~]# echo NODE_PORT=$NODE_PORT
    NODE_PORT=31238
    

      

       5. 访问服务
    [root@master ~]# curl http://192.168.0.10:31238
    Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7f56b875dc-6zbjt | v=1
    

      

    6. 为Pod创建标签
    [root@master ~]# export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"
    "}}{{end}}')
    [root@master ~]# echo Name of the Pod: $POD_NAME Name of the Pod: kubernetes-bootcamp-7f56b875dc-6zbjt
    [root@master ~]# kubectl label pod $POD_NAME app=v1 pod/kubernetes-bootcamp-7f56b875dc-6zbjt labeled
    [root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE kubernetes-bootcamp-7f56b875dc-6zbjt 1/1 Running 0 4h52m
    [root@master ~]# kubectl describe pods Name: kubernetes-bootcamp-7f56b875dc-6zbjt Namespace: default Priority: 0 PriorityClassName: <none> Node: master/192.168.0.10 Start Time: Fri, 25 Jan 2019 09:55:50 +0800 Labels: app=v1

      

    7. 通过标签查找Pod
    [root@master ~]# kubectl get pods -l app=v1
    NAME                                   READY   STATUS    RESTARTS   AGE
    kubernetes-bootcamp-7f56b875dc-6zbjt   1/1     Running   0          4h55m
    

      

    8. 通过标签删除服务
    kubectl delete service -l run=kubernetes-bootcamp
    

      

  • 相关阅读:
    Python 正则表达式入门
    使用numpy与matplotlib.pyplot画图
    快乐python 零基础也能P图 —— PIL库
    Jieba库使用和好玩的词云
    python运用turtle 画出汉诺塔搬运过程
    有进度条圆周率计算
    用pythen画五角星
    pytest+allure+requests-接口自动化测试
    pytest---allure测试报告
    自动化测试---pytest
  • 原文地址:https://www.cnblogs.com/zydev/p/10319303.html
Copyright © 2011-2022 走看看