zoukankan      html  css  js  c++  java
  • Kubernetes--kubectl

    一、Kubectl命令行说明

    类型 命令 描述
    基础命令 create  通过文件名或标准输入创建资源
    expose  将一个资源公开为一个新的kubernetes服务
    run

     创建并运行一个特定的镜像,可能是副本

     创建一个deployment或job管理创建的容器

    set

     配置应用资源

     修改现有应用程序资源

    get  显示一个或多个资源
    explain  文档参考资料
    edit  使用默认的编辑器编辑一个资源
    delete  通过文件名、标准输入、资源名称或标签选择器来删除资源
    部署命令 rollout  管理资源的发布
    rolling-update  执行指定复制控制器的滚动更新
    scale  扩容或缩容Pod数量,Deployment、ReplicasSet、RC或Job
    autoscale  创建一个自动选择扩容或者缩容并设置Pod数量
    集群管理命令 certificate  修改证书资源
    cluster-info  显示集群信息
    top  显示资源(CPUMemory/Storage)
    cordon  标记节点为不可调度
    uncordon  标记节点可调度
    drain  维护期间排除节点
    taint  更新一个或多个节点上的污点
    排错/调试 describe  显示特定资源或资源组的详细信息
    logs  打印pod中容器的日志
    attach   连接到一个运行的容器,既可以查看output stream,也可以与容器(stdin)进行交互
    exec   在容器中执行命令
    port-forward   将一个或多个本地端口转发到pod中
    proxy   运行Kubernetes API服务器的代理
    cp   从容器中复制文件或目录
    auth   检查授权
    高级命令 apply  通过文件名或标准输入将配置应用于资源
    patch  使用(patch)补丁修改、更新资源的字段
    replace  用文件名或标准输入替换资源
    convert  在不同的API版本之间转换配置文件
    设置命令 label  更新资源的标签
    annotate  更新资源上的注释
    completion  输出指定shell的代码(bash or zsh)
    其他命令 api-versions  在服务器上打印支持的API版本,格式为“group / version”
    config  修改Kubernetes的文件
    help  help命令
    plugin  显示安装的插件
    version  显示版本信息

      具体可以参考:https://kubernetes.io/docs/reference/kubectl/kubectl/

    二、kubectl事例

       (1)创建一个deployment(deployment用来管理Pod和RS)

    # kubectl run hello-world --replicas=3 --labels="app=example_nginx" --image=nginx:1.10 --port=80
    deployment.apps "hello-world" created
    
    
    # 备注
    hello-world  : deployment的名称
    
    --replicas:副本数
    
    --labels:标签(非唯一,用于识别用途等特点)
    
    --image:使用的镜像
    
    --port:暴露的端口
    

      (2)查看pod

    [root@master-01 ~]# kubectl get pod
    NAME                          READY     STATUS    RESTARTS   AGE
    hello-world-76c54b84b-b5bcz   1/1       Running   0          11m
    hello-world-76c54b84b-bmhsd   1/1       Running   0          11m
    hello-world-76c54b84b-rgn2q   1/1       Running   0          11m
    [root@master-01 ~]# kubectl get pod -o wide
    NAME                          READY     STATUS    RESTARTS   AGE       IP              NODE
    hello-world-76c54b84b-b5bcz   1/1       Running   0          11m       10.20.184.81    master-01
    hello-world-76c54b84b-bmhsd   1/1       Running   0          11m       10.20.254.104   node-03
    hello-world-76c54b84b-rgn2q   1/1       Running   0          11m       10.20.190.57    node-01
    

      (3)查看deployment

    [root@master-01 ~]# kubectl get deployment
    NAME          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    hello-world   3         3         3            3           12
    

      (4)查看pod的描述信息  

    [root@master-01 ~]# kubectl describe pod hello-world-76c54b84b-b5bcz
    Name:           hello-world-76c54b84b-b5bcz
    Namespace:      default
    Node:           master-01/172.16.60.95
    Start Time:     Wed, 20 Jun 2018 09:53:07 +0800
    Labels:         app=example_nginx
                    pod-template-hash=327106406
    Annotations:    <none>
    Status:         Running
    IP:             10.20.184.81
    Controlled By:  ReplicaSet/hello-world-76c54b84
    .
    .
    .
    

      (5)描述deployment信息

    [root@master-01 ~]# kubectl describe deploy/hello-world
    Name:                   hello-world
    Namespace:              default
    CreationTimestamp:      Wed, 20 Jun 2018 09:53:07 +0800
    Labels:                 app=example_nginx
    Annotations:            deployment.kubernetes.io/revision=1
    Selector:               app=example_nginx
    Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
    StrategyType:           RollingUpdate
    MinReadySeconds:        0
    RollingUpdateStrategy:  1 max unavailable, 1 max surge
    Pod Template:
      Labels:  app=example_nginx
      Containers:
       hello-world:
        Image:        nginx:1.10
        Port:         80/TCP
        Host Port:    0/TCP
        Environment:  <none>
        Mounts:       <none>
      Volumes:        <none>
    Conditions:
      Type           Status  Reason
      ----           ------  ------
      Available      True    MinimumReplicasAvailable
      Progressing    True    NewReplicaSetAvailable
    OldReplicaSets:  <none>
    NewReplicaSet:   hello-world-76c54b84b (3/3 replicas created)
    Events:
      Type    Reason             Age   From                   Message
      ----    ------             ----  ----                   -------
      Normal  ScalingReplicaSet  18m   deployment-controller  Scaled up replica set hello-world-76c54b84b to 3

      (6)查看其它命名空间的资源(--namespace xxx / -n xxx)

    [root@master-01 ~]# kubectl get pod -o wide -n kube-system
    NAME                                     READY     STATUS    RESTARTS   AGE       IP             NODE
    calico-kube-controllers-98989846-gjk55   1/1       Running   1          8d        172.16.60.98   node-02
    calico-node-4mxvv                        1/1       Running   1          8d        172.16.60.98   node-02
    calico-node-ftg9v                        1/1       Running   1          8d        172.16.60.96   master-02
    calico-node-hctvm                        1/1       Running   1          8d        172.16.60.97   node-01
    calico-node-rbv5b                        1/1       Running   1          8d        172.16.60.99   node-0
    

      (7)edit修改配置

    # 将刚才port的80 改为8088
    
    [root@master-01 ~]# kubectl edit deploy hello-world
    
    ...
    ...
    ...
        ports:
            - containerPort: 8088
    ...
    ...
    

      describe检查 

    [root@master-01 ~]# kubectl describe deploy/hello-world
    ...
    ...
    ...
    Pod Template:
      Labels:  app=example_nginx
      Containers:
       hello-world:
        Image:        nginx:1.10
        Port:         8088/TCP
        Host Port:    0/TCP
    

      (8)创建一个Service对象,暴露Deployment端口 

    [root@master-01 ~]# kubectl expose deploy/hello-world --port=88 --type=NodePort --target-port=80 --name=example-nginx-service
    service "example-nginx-service" exposed
    
    # 备注
    --port=88:Service服务的端口
    
    --target-port=80: 容器暴露的端口
    
    --type=NodePort:会随机开放一个宿主机端口(端口范围在apiserver中定义)
    

      查看/描述 服务  

    [root@master-01 ~]# kubectl get svc
    NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    example-nginx-service   NodePort    10.254.43.65   <none>        88:40591/TCP   5m
    
    [root@master-01 ~]# kubectl describe svc example-nginx-service
    Name:                     example-nginx-service
    Namespace:                default
    Labels:                   app=example_nginx
    Annotations:              <none>
    Selector:                 app=example_nginx
    Type:                     NodePort
    IP:                       10.254.43.65
    Port:                     <unset>  88/TCP
    TargetPort:               80/TCP
    NodePort:                 <unset>  40591/TCP
    Endpoints:                10.20.184.82:80,10.20.190.59:80,10.20.254.106:80
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>
    

      访问nginx

    # 可以通过Service 的cluster-ip:88 / ndoe-ip:40591
    
    [root@master-01 ~]# curl 10.254.43.65:88
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
             35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    

      

    # 任意node-ip
    [root@master-01 ~]# curl 172.16.60.95:40591
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
             35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    

      (9)创建一个Service对象,暴露UDP端口 

    # kubectl expose deploy/hello-world --port=4123 --type=NodePort --protocol=udp --target-port=80 --name=example-upd-service
    

      (10)查看Pod日志

    [root@master-01 ~]# kubectl logs pods/hello-world-76c54b84b-rx4vz
    
    172.16.60.95 - - [20/Jun/2018:02:35:20 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
    172.16.60.95 - - [20/Jun/2018:02:36:06 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
    172.16.60.95 - - [20/Jun/2018:02:36:43 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36" "-"
    

      (11)使用标签查询Pod

    [root@master-01 ~]# kubectl get pod --selector="app=example_nginx" -o wide
    NAME                          READY     STATUS    RESTARTS   AGE       IP              NODE
    hello-world-76c54b84b-8zn5j   1/1       Running   0          18m       10.20.190.59    node-01
    hello-world-76c54b84b-pbp9h   1/1       Running   0          18m       10.20.254.106   node-03
    hello-world-76c54b84b-rx4vz   1/1       Running   0          18m       10.20.184.82    master-01
    

      

  • 相关阅读:
    Spring4 MVC json问题(406 Not Acceptable)
    java 从网络Url中下载文件
    Java基础知识(一) 自增、自减运算符
    java文件读写操作
    java集合运算:求交集,并集,集合差
    httpclient+jsoup实现网页信息抓取
    java web使用gradle配置详情
    关于mysql登录异常处理方法
    windows server 2012 r2 远程桌面连接指南
    Java生成带小图标的二维码-google zxing 工具类
  • 原文地址:https://www.cnblogs.com/bigberg/p/9174403.html
Copyright © 2011-2022 走看看