K8S 集群客户端工具_kubectl | 学习笔记

简介: 快速学习 K8S 集群客户端工具_kubectl

开发者学堂课程【Kubernetes 极速入门:K8S 集群客户端工具_kubectl】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/658/detail/10904


K8S 集群客户端工具_kubectl

内容介绍:

一、场景

二、学习目标

三、学习步骤

四、课程内容

五、学习总结

 

一、场景

通过上次课程的学习播仔已经实现 k8s 集群的部署,接下来需要在 K8S 集群中去运行企业相关应用,而播仔应该如何使用 k8S 集群运行企业的应用程序呢?

那在这里边我们就需要提到在集群部署软件安装的时候的一个软件 kubectl,我们使用 kubectl 命令就可以来在 K8S 集群当中部署相关的应用。

二、学习目标

本次课程的学习目标主要有两个,第一,了解 kubectl 命令的帮助获取的方法;

第二,了解 kubectl 命令的使用分类,知道了使用分类以后,能够对我们的整个kubectl 集群的操控更加精准一些。

 

三、学习步骤

学习步骤是按照学习目标进行设置的,也两步,第一步就是 kubectl 命令的使用帮助方法,第二步就是 kubectl 命令的使用分类,当然这里面命令指的是他的字命令

1、kubectl 命令帮助方法

2、kubectl 子命令使用分类

 

四、课程内容

1、kubectl 的帮助方法

第一个内容就是的 kubectl 的帮助方法,如果我们想获得 kubectl 的帮助方法,首先我们确认是否真的已经安装了 kubectlkubectl 这个命令并不需要在集群的所有主机中都进行安装但是我们在前期准备过程中已经全部完成了安装上,为什么说不一定需要全部安装,我们会在后期进行讲解。

l 代码命令:

[root@master1 ~]# rpm -qa | grep kubect1

首先检查 kubect1是否安装,我们可以使用 rpm -qa 命令,然后用过滤检查是否安装,如果已经安装了,那么我们就可以在此主机当中对 kubect1 集群进行相关的操作

[root@master1 ~]# kubect7 --help

第二个我们来看一下获取 kubectl 帮助具体方法是什么,只需要在 kubect1后面--help 即可,操作十分简便。

l 下面我们进行实际的操作

我们在三个主机当中都进行相应的操作,输入 rpm-qa|grep kubectl 回车可以看到我们现在安装软件版本,然后我们用相同的命令,看到另一主机上也是有kubectl 相关的安装,第三个点也是一样的,可以看到在第三个点当中,我们也已经安装kubectl 软件,那么是否含有 kubectl 的相关命令,我们可以通过kubectl,然后直接使用 table,会看到三个命令,kubeadmkubectl kubelet,对于 worker1 和 worker22来讲也是一样的,可以看到也是三个相同命令,如果已经安装了,就可以获取到帮助方法,获取方法输入 kubectl--help,然后直接回车,就可以看到 kubectl 相关命令的帮助,这个帮助的内容是相当多的,也就意味着使用 kubectl 来操作 conatect 集群的话,会非常的方便,也非常的简单

帮助的内容中 kubectl 是来控制集群管理的,如果需要去找更多的信息,可以查看相关链接。下面则是 kubectl 相关的一些命令分类,kubectl 在命令的使用过程当中,会对命令有很多类型的分类,比如说有基础命令的分类(Basic Commands -(Beginner))即适用于初学者的命令分类,还有基础命令分类(Basic Commands (Intermediate)),适用于中级的命令分类,然后还有部署类的命令分类(Deploy Commands),还有集群管理类的命令分类(Cluster Management Commands)等等,这些都属于 kubectl 子命令的分类,接下来我们来看一下我们的具体的子命令的分类。

2、kubectl子命令使用分类

在我们的课程当中提到了很多的分类群组,可以看到有基础命令,有部署命令、集群管理命令、故障诊断命令,还有高级命令、设置命令和其他命令等等,这些就是我们刚才在获得帮助的时候看到的一些命令。

l 基础命令(Basic Commands)

基础命令提到了两个,一个是适用于初学者的基础命令(Basic Commands -(Beginner)),一个是适用于中级的基础命令(Basic Commands (Intermediate))。

初学者的基础命令,比如说创建集群资源的方法(creat),不管是从哪个文件创建呢,还是从标准输入创建都是可以的;还有暴露一些应用的服务,那可以通过 expose命令来完成;可以通过 run 命令在集群当中去运行;利用 set 命令去设置对象的标签、资源的内容等等。在中级基础命令中,get 可以获得资源相关的查看内容,edit可以编辑资源内容,delete 可以删除资源,可以通过文件删除,也可以通过标准输入删除。以上统称为基础命令。

类型

命令

描述

基础命令

create

通过文件名或标准输入创建资源

expose

将一个资源公开为一个新的Service

run

在集群中运行一个特定的镜像

set

在对象上设置特定的功能

get

显示一个或多个资源

explain

文档参考资料

edit

使用默认的编辑器编辑一个资源。

delete

通过文件名、标准输入、资源名称或标签选择器来删除资源。

 

类型

命令

描述

部署命令

rollout

管理资源的发布

rolling-update

对给定的复制控制器滚动更新

scale

扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job

autoscale

创建一个自动选择扩容或缩容并设置Pod数量

l 部署类命令(Deploy Commands)

部署命令主要是对资源进行滚动更新的管理、应用的规模以及自动扩缩容等等。具体如下表所示:

l 集群管理类的命令

集群管理的命令主要是用来做集群相关的信息查看或者是查看资源占用的 cpu 等等,具体如下表所示:

类型

命令

描述

集群管理命令

certificate

修改证书资源

cluster-info

显示集群信息

top

显示资源(CPU/Memory/Storage)使用。需要Heapster运行

cordon

标记节点不可调度

uncordon

标记节点可调度

drain

驱逐节点上的应用,准备下线维护

taint

修改节点taint标记

l 故障诊断和调试命令

故障诊断和调试命令,比如说当我们遇到某些资源出现一些故障的时候,我们可以通过 describe 命令看资源的描述,了解显示的信息;logs 命令主要是打印容器的相关信息,看容器的日志输出;通过 attach 命令进入容器当中去;通过 exec去执行某些命令,以测试应用是否正确,甚至于可以通过 copy 命令文件夹或者脚本复制到容器当中去

类型

命令

描述

故障诊断和调试命令

describe

显示特定资源或资源组的详细信息

logs

在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的

attach

附加到一个运行的容器

exec

执行命令到容器

port-forward

转发一个或多个本地端口到一个pod

proxy

运行一个proxy到Kubernetes API server

cp

拷贝文件或目录到容器中

auth

检查授权

l 高级命令

高级命令主要是用来在集群当中应用一些高级类型的选项比如说 apply 命令就是通过文件名或者是标准输入对资源进行应用部署,它与基础命令 create 的功能是差不多的;patch 命令使用补丁的修改或者是更新资源字段,后期使用过程中我们会用到

类型

命令

描述

高级命令

apply

通过文件名或标准输入对资源应用配置

patch

使用补丁修改、更新资源的字段

replace

通过文件名或标准输入替换一个资源

convert

不同的API版本之间转换配置文件

l 设置类命令

设置的命令里面比如说可以设置一些资源的标签,或者更新一些资源标签等等,具体如下表所示:

类型

命令

描述

设置命令

label

更新资源上的标签

annotate

更新资源上的注释

completion

用于实现kubect1工具自动补全

l 其他命令

其他的命令比如 api resource、api version等等,具体如下所示:

类型

命令

描述

其他命令

api-versions

打印受支持的API版本

config

修改kubeconfig文件(用于访问API,比如配置认证信息)

help

所有命令帮助

plugin

运行一个命令行插件

version

打印客户端和服务版本信息

大家使用过程当中可以针对这些命令的分组来进行使用,当然我们在使用过程中会刻意的去进行分组,因为大家所有的命令都能够熟练掌握后就不需要去分组了

3、使用 kubectl 命令必要环境

使用 kubectl 命令来设置必要环境,我们在集群的三个点当中,都已经安装了 kubectl,但并不是所有的节点都能够通过 kubectl 命令来管理群,或者查看信息。

下面可以进行一个简单的验证,首先在 Quick connect master节点当中,直接使用 kubectl getnodes 后可以看到集群的所有节点,如果在 worker3当中也使用相同命令,我们无法完成全部的操作会发现系统报错,表示连接服务器过程中被拒绝。

系统会询问是否提供了正确的主机或者端口意味着 worker3虽然安装了 kubectl 命令,但是无法通过命令来查看相关的集群操作,主要原因是 kubectl 命令在运行过程中用具有必要环境

部署完 kubectl 命令以后,我们要想使用它来管理集群的时候,会发现一个隐藏的kube 文件夹,在 kube 文件当中有一个 config 文件,需要注意的是使用 kubectl命令来管理集群的时候必须使用config文件,因此一个主机获得文件,哪个主机就可以来完成整个集群的管理操作

其实这个文件中写的是 apiVersion:v1,然后下面一个集群和一个证书,再往下最重要的是192.168.216.100643,是用来连接 kubernetes 的 IP 地址加端口,也就是说如果能够联系到这个 api 的 IP 加端口,就可以管理到集群了,所以当这个config 文件放在 worker1中,worker1 就可以完成对集群地管理

l 如何将 config 文件放置呢?

首先第一步在worker1当中创建一个隐藏文件夹,然后把master1 root 中的kube/config文件拷贝到当前目录下来此时就可以开始用 kubectl 进行相关的操作。

l 具体代码:

mkdir .kube

创建一个隐藏的文件夹,当然这个文件夹的名字可以自定义

scp master1:/root/.kube/config .kube/

处理完成以后,我们直接拷贝 master1的 root 目录当中.kube 下面config,然后把它拷贝到当前位置来,放到这个目录就可以了,拷贝完成以后,使用 kubectl get nodes 来进行相关的验证,可以看到整个集群的主机节点情况,也可以使用kubectl get pods -n kube -system,查看系统 pods 的运行情况

以上就是对 kubectl 命令使用的过程必要环境的讲解,如果没有必要环境就无法完成 kubectl 应用


五、学习总结

本次的课程,主要讲解了K8S集群客户端工具 kubectl 命令的使用方法,主要分三个部分进行讲解
image.png

第一,kubectl 命令的帮助方法其实很简单,只要安装kubectl直接使 kubectl--help可以

第二,了解 kubectl 命令的分类,分为基础命令部署命令集群管理命令故障诊断和调试命令,还有一些高级命令,比如说kuber apply等高级命令,还有一些是设置类命令,设置某些功能的命令,然后还有一些其他的命令,比如说像api resourses 等等

第三就是如何使用kubectl 命令来访问或者是管理群,以及它的必要的环境是什么,即config文件,这个文件如果存在于某一个主机当中,该主机就可以来管理

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
17天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
14天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12
|
19天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
38 2
|
1月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
83 1
|
2月前
|
Kubernetes 安全 容器
关于K8s,不错的开源工具
【10月更文挑战第12天】
|
3月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
3月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
2月前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】Kubernetes命令行管理工具:kubectl
kubectl 是 Kubernetes 的命令行工具,用于管理和操作 Kubernetes 集群。本文通过视频讲解和具体示例,介绍了 kubectl 的常用命令,包括显示 Pod 信息、创建 Deployment 和 Service、更新和回滚 Deployment、以及删除资源等操作。