1. 管理工具远程连接集群

客户端工具主要功能是用于管理集群中的资源。工具可以对资源进行创建、删除和更改等操作。工具默认连接本地.0.0.1:8080。通过-s选项指定集群HTTP非安全IP地址和端口进行访问,命令如下所示

[root@master ~]# kubectl -s 127.0.0.1:8080 get node
NAME STATUS ROLES AGE VERSION
192.168.10.10 Ready  3h v1.10.2
192.168.10.6 Ready  3h v1.10.2
192.168.10.7 Ready  3h v1.10.2
192.168.10.8 Ready  3h v1.10.2
192.168.10.9 Ready  3h v1.10.2 

默认通过HTTP访问API集群接口,若想在集群其他节点通过HTTPS去访问集群接口需将工具拷贝到集群其它的节点中,命令如下所示。

[root@master ~]# scp /opt/kubernetes/bin/kubectl root@192.168.10.6:/usr/local/bin/
[root@node-1 ~]# ls /usr/local/bin/
kubectl

创建ca证书和admin证书,admin是用于客户端去管理集群的,所以需将admin证书拷贝到客户端访问集群的节点中,命令如下所示。

[root@master ssl]# scp admin*pem root@192.168.10.6:/root/
[root@node-1 ~]# cp /opt/kubernetes/ssl/ca.pem ./
[root@node-1 ~]# ls
admin-key.pem admin.pem anaconda-ks.cfg ca.pem node node.zip

创建用于命令去调用文件中的配置信息去访问集群,默认会在.kube/目录下创建缓存目录,包括也要放在此处才会引用,命令可以快速帮助我们生成配置文件,只需设置集群项中名为的地址与根证书即可,命令如下所示。

[root@node-1 ~]# kubectl config set-cluster kubernetes --server=https://192.168.10.5:6443 --certificate-authority=ca.pem
Cluster "kubernetes" set.
[root@node-1 ~]# ls .kube/
config

设置用户项中-admin用户证书认证字段,命令如下所示。

[root@node-1 ~]# kubectl config set-credentials cluster-admin --certificate-authority=ca.pem --client-key=admin-key.pem --client-certificate=admin.pem
User "cluster-admin" set.

设置环境项中名为的默认集群和用户,命令如下所示。

[root@node-1 ~]# kubectl config set-context default --cluster=kubernetes --user=cluster-admin
Context "default" created.

设置默认环境项为,配置完毕后可/root/.kube/查看配置信息通过命令如下所示。

[root@node-1 ~]# kubectl config use-context default
Switched to context "default".
[root@node-1 ~]# cat /root/.kube/config

通过 get node命令可以正常获取到集群节点信息说明没有问题,如果将/root/.kube隐藏目录下的配置文件移走,则会提示你没有指定要连接集群的IP和端口,如图1所示。

kubectl命令_kubectl怎么读_kubectl

图1

通过 get all命令即可查看默认命名空间中所有的资源,如图2所示。

kubectl_kubectl怎么读_kubectl命令

图2

注意

将上述配置和文件打包移植到其他服务器集群的节点中也可实现访问。

2. 管理命令

如图3所示,表中列出的是常用的管理命令的功能介绍。

kubectl命令_kubectl_kubectl怎么读

图3

图3所示的命令是通过 –help命令列出来的,然而每个列出的命令后面也可加–help查看命令的使用状态,如查看命令如何使用,命令如下所示。

[root@node-1 ~]# kubectl create --help

3.工具管理集群应用

上一节中给大家列出了管理工具一些指令的概要,的每个命令都存在哪些作用。若想更好的使用管理工具的唯一途径是查看帮助文档。帮助文档中会列出很多子指令和一些选项。本节将根据在集群中部署应用管理周期的需求来讲解是如何使用管理工具的。

3.工具创建资源

删除前面创建的资源,避免混淆,删除资源需删除和,删除命令如下所示。

[root@master ~]# kubectl delete deploy/nginx
deployment.extensions "nginx" deleted
[root@master ~]# kubectl delete svc/nginx
service "nginx" deleted
[root@master ~]# kubectl get all

在集群中创建一个新资源,如创建目前企业主流的Nginx服务,该服务是从上获取,命令如下所示。创建后通过 get all命令查看资源的状态,如图4所示。

[root@master ~]# kubectl run nginx --replicas=5 --labels="app=nginx-example" --image=nginx:1.10 --port=80
deployment.apps "nginx" created

kubectl_kubectl怎么读_kubectl命令

图4

注意

通过run创建的对象默认都是。 run –help可以查看run的帮助信息。

3.2 工具查看资源信息

通过 命令可以查看该pod的详细信息,重点查看末尾最后几行信息,如图5所示。

kubectl怎么读_kubectl_kubectl命令

图5

get svc可以列出,如果想列出多个资源可以用逗号作为分隔符,如列出svc和的资源,如图6所示。

kubectl怎么读_kubectl_kubectl命令

图6

在创建Nginx 时指定了一个标签(),也可以通过标签去匹配具体的pod,如图7所示。

kubectl_kubectl怎么读_kubectl命令

图7

通过 get pods -o wide命令可以查看资源的详细信息,如查看pod具体分配到哪个节点上和哪个IP上,通过 get -o wide命令可以具体的查看对象使用了哪些镜像,如图8所示。

kubectl怎么读_kubectl命令_kubectl

图8

3.3 工具发布应用

部署的应用如果正常就可以发布了。如果部署完应用后不进行发布,用户是无法访问的,通过命令使应用在外部暴露一个端口。此方法相当于给应用加负载均衡,因为Pod分配在不同的节点上,所以,对用户只能提供一个入口,最后负载均衡到里面。该需求是由Node节点上的kube-proxy实现的,发布命令如下所示。

[root@master ~]# kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service
service "nginx-service" exposed

Nginx服务发布后通过 get svc命令查看创建的,如图9所示。在图9中可以看到服务的名称,服务的类型和集群的IP,创建的都会为集群分配-IP,-IP是在启动kube-组件时指定的网段,如图10所示。

kubectl命令_kubectl怎么读_kubectl

图9

kubectl怎么读_kubectl命令_kubectl

图10

通过外部浏览器,输入Node节点IP地址加暴露在外部的端口号即可访问Nginx页面,如图11所示。也可使用curl命令或命令访问内部IP和端口号进行访问,如图12所示。

kubectl_kubectl怎么读_kubectl命令

图11

kubectl_kubectl命令_kubectl怎么读

图12

3.4 工具故障排查

在部署应用时是无法做到每次都部署成功的,都会存在一些不可避免的因素。当然出现问题对于我们来说是一件很好的事情,只有出现问题才可以提高我们排查错误的水平和能力。

应用出现问题时可以通过命令查看资源事件类型,类型可以是、rs、po。指定类型后加上资源名称,还可查看svc的具体配置信息,命令如下所示。

[root@master ~]# kubectl describe po/nginx-f95d765f9-dss2v
[root@master ~]# kubectl describe deploy/nginx
[root@master ~]# kubectl describe rs/nginx-f95d765f9
[root@master ~]# kubectl describe svc
[root@master ~]# kubectl describe svc nginx-service

通过 logs命令可以查看pod运行时输出的日志信息,如图13所示。

kubectl命令_kubectl怎么读_kubectl

图13

exec命令可以进入pod查看具体应用的一些状态信息,如修改index.html文件中的内容为,命令如下所示。

[root@node-1 ~]# kubectl exec -it nginx-f95d765f9-qpx4l bash
root@nginx-f95d765f9-qpx4l:/# cd /usr/share/nginx/html/
root@nginx-f95d765f9-qpx4l:/usr/share/nginx/html# echo "HuMingZhe" > index.html
root@nginx-f95d765f9-qpx4l:/usr/share/nginx/html# cat index.html 
HuMingZhe

3.5 工具更新应用

应用部署起来后,后期会做一些升级,或者更换一些镜像。更新镜像可以通过 set命令进行更新,如前面小节中Nginx镜像版本是1.10,现在更新为1.13.8,查询是否更新成功可使用 命令进行查看,命令如下所示。

[root@master ~]# kubectl set image deployment/nginx nginx=nginx:1.13.8
deployment "nginx" image updated
[root@master ~]# kubectl describe pod nginx-f56ffcb44-4lpg5
Containers:
 nginx:
 Container ID: docker://4bac9958cbd72c64a23f874af4c6a9b82b80ffaafdde7c0840319395929f5d1a
 Image: nginx:1.13.8
 Image ID: docker-pullable://nginx@sha256:0ffc09487404ea43807a1fd9e33d9e924d2c8b48a7b7897e4d1231a396052ff9
 Port: 80/TCP
 State: Running
	 Started: Fri, 02 Mar 2018 21:45:27 +0800

通过 edit命令编辑Nginx的资源,找到Nginx版本所在位置,将nginx:1.13.8改为nginx:1.12,命令如下所示。

[root@master ~]# kubectl edit deploy/nginx
 spec:
 containers:
 - image: nginx:1.12
deployment "nginx" edited
[root@master ~]# kubectl describe pod nginx-667655d949-8gtrz
nginx:
 Container ID: docker://8ddb2c2326542bf08c856c3a1f713c3c0616adfa06a53ed279e780a019d9c062
 Image: nginx:1.12
 Image ID: docker-pullable://nginx@sha256:813be5ee155f914d063e8ed39878267995d31d7046a9010001f0a9e8192412a5

通过curl -I 指定内部IP地址和端口号也可以查看Nginx的版本信息,命令如下所示。

[root@node-1 ~]# curl -I 10.10.10.155:88
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sat, 21 Apr 2018 13:41:57 GMT
Content-Type: text/html
Content-Length: 10
Last-Modified: Sat, 21 Apr 2018 13:40:02 GMT
Connection: keep-alive
ETag: "5adb3f32-a"
Accept-Ranges: bytes

项目升级到最新版本后,通过 命令可以查看发布的状态信息,命令如下所示。

[root@master ~]# kubectl rollout status deploy/nginx
deployment "nginx" successfully rolled out

命令可以查看发布的版本,通过查看共显示了三个版本。第一个版本是1.10,第二个版本是1.13.8,第三个版本是1.12.2,命令如下所示。

[root@master ~]# kubectl rollout history deploy/nginx
deployments "nginx"
REVISION CHANGE-CAUSE
1 
2 
3 

查看时发现默认全部为none,这是因为没有记录版本信息造成的,可以再修改nginx版本信息的后面加上–选项,让其记录命令,命令如下所示。

[root@master ~]# kubectl set image deployment/nginx nginx=nginx:1.13.8 --record
deployment "nginx" image updated
[root@master ~]# kubectl rollout history deploy/nginx
deployments "nginx"
REVISION CHANGE-CAUSE
1 
3 
5 
6 
7 kubectl set image deployment/nginx nginx=nginx:1.13.8 --record=true

现有3个Nginx副本数提供服务,在618或双11这种购物节日,访问量会倍增,此时,就需要更多的Nginx服务来支支撑更大的并发,所以,需要进行扩容来增加pod的数量。 scale命令可以针对进行伸缩处理,如将Nginx副本数改为10,扩容在在查看pods会变为10个,当购物节过去后,此时不在需要这么多,可以改回3个,如图14所示。

kubectl怎么读_kubectl命令_kubectl

图14

3.6 工具资源回滚

更新镜像到最新版本后发现镜像存在问题,可以通过 undo命令实现回滚,默认回滚到上一个版本,命令如下所示。

[root@master ~]# kubectl rollout undo deployment/nginx
deployment "nginx" 

3.7 工具删除资源

现在维护应用的生命周期已经接近尾声,此时不在需要这些应用,所以,可以进行删除,先删除,在删除,命令如下所示。

[root@master ~]# kubectl get all
[root@master ~]# kubectl delete deploy/nginx 
deployment "nginx" deleted
[root@master ~]# kubectl delete svc/nginx-service
service "nginx-service" deleted
[root@master ~]# kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes ClusterIP 10.10.10.1  443/TCP 2h

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!