通过kubectl连接Kubernetes集群

kubectl是用于针对Kubernetes集群运行命令的命令行接口。你可以通过kubectl部署集群应用,检查和管理集群资源,查看日志等。

一、安装kubectl

  • Linux系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/linux/amd64/kubectl
  • Mac系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/darwin/amd64/kubectl
  • Windows系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/windows/amd64/kubectl.exe

注意:

kubenretes版本大于1.10请使用1.10以上的kubectl工具,小于1.10版本请使用1.10以下的kubectl工具,上述命令中v1.8.13可根据需求替换成业务所需的kubectl版本。

添加可执行权限:

$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl

测试安装是否成功:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.5-tke.5", GitCommit:"ad6116adbd82fbf203e20adcca72be022425441c", GitTreeState:"clean", BuildDate:"2019-06-17T10:59:40Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

二、配置kubectl

以腾讯云容器服务为例。下图是在腾讯云上创建的k8s集群:

腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。使用该服务,您将无需安装、运维、扩展您的集群管理基础设施,只需进行简单的 API 调用,便可启动和停止 Docker 应用程序,查询集群的完整状态,以及使用各种云服务。您可以根据资源需求和可用性要求在集群中安排容器的置放,满足业务或应用程序的特定要求。

image.png

点击“显示凭证”,弹出集群凭证信息:

image.png

按提示配置hosts信息:

sudo sed -i '$a 10.0.1.8 cls-xxxxxx.ccs.tencent-cloud.com' /etc/hosts

再配置:

kubectl config set-credentials default-admin --username=admin --password=<password>
kubectl config set-cluster default-cluster --server=https://cls-xxxxxx.ccs.tencent-cloud.com --certificate-authority=/etc/kubernetes/cluster-ca.crt
kubectl config set-context default-system --cluster=default-cluster --user=default-admin
kubectl config use-context default-system

其中/etc/kubernetes/cluster-ca.crt为证书路径,注意证书的权限要设置为只读权限。

运行结果如下:

[root@VM_13_85_centos ~]# kubectl config set-credentials default-admin --username=admin --password=xxxxx85a7RpEdZZxihcK1hO3eixxxxx
User "default-admin" set.
[root@VM_13_85_centos ~]# kubectl config set-cluster default-cluster --server=https://cls-xxxxxx.ccs.tencent-cloud.com --certificate-authority=/etc/kubernetes/cluster-ca.crt
Cluster "default-cluster" set.
[root@VM_13_85_centos ~]# kubectl config set-context default-system --cluster=default-cluster --user=default-admin
Context "default-system" created.
[root@VM_13_85_centos ~]# kubectl config use-context default-system
Switched to context "default-system".

三、kubectl常用命令

输入kubectl help,获取kubectl的帮助文档。

[root@VM_231_116_centos ~]# kubectl help
kubectl controls the Kubernetes cluster manager.

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

...

1. 创建资源对象

根据yaml配置文件一次性创建service和rc:

$ kubectl create -f my-service.yaml -f my-rc.yaml

根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作:

$ kubectl create -f <directory>

2. 查看资源对象

查看所有Pod列表:

$ kubectl get pods

#或者pod,po都可以
$ kubectl get po  

查看rc和service列表:

[root@VM_231_116_centos ~]# kubectl get rc
No resources found.

[root@VM_231_116_centos ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api-xxxLoadBalancer 192.168.255.115 10.0.3.25 8000:31256/TCP 97d
api-xx-due LoadBalancer 192.168.255.217 10.0.3.44 8000:31484/TCP 88d
api-xx-web LoadBalancer 192.168.255.11 10.0.3.3 80:30731/TCP 139d

3. 描述资源对象

显示Node的详细信息:

# 查看所有node
$ kubectl describe nodes

# 查看指定node
$ kubectl describe nodes <node-name>

显示Pod的详细信息

$ kubectl describe pods/<pod-name>

4. 删除资源对象

基于pod.yaml定义的名称删除Pod:

$ kubectl delete -f pod.yaml

删除所有包含某个label的Pod和service

$ kubectl delete pods, service -l name=<label-name>

删除所有Pod:

$ kubectl delete pods --all

5. 执行容器的命令

执行Pod的date命令,默认使用Pod中的第一个容器执行:

$ kubectl exec <pod-name> date

指定Pod某个容器执行date命令:

$ kubectl exec <pod-name> -c <container-name> date

进入容器:

$ kubectl exec -it <pod-name> -c <container-name> bash

docker exec -it <container-id> bash类似。

6. 查看容器的日志

查看容器输出到stdout的日志:

$ kubectl logs <pod-name>

查看容器的实时日志,相当于tail -f命令:

$ kubectl logs -f <pod-name> -c <container-name>

参考

  1. https://kubernetes.io/docs/tasks/tools/install-kubectl/
  2. https://kubernetes.io/docs/reference/kubectl/overview/
  3. 《Kubernetes权威指南》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342