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 {
        width: 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 {
        width: 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

  

posted @ 2018-06-20 10:52  Bigberg  阅读(598)  评论(0编辑  收藏  举报