【云原生 | 从零开始学Kubernetes】三、Kubernetes集群管理工具kubectl

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。

概述


kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。


21.png


命令格式


命令格式如下


kubectl [command] [type] [name] [flags]


参数


·command:指定要对资源执行的操作,例如create、get、describe、delete


·type:指定资源类型,资源类型是大小写敏感的,开发者能够以单数,复数,缩略的形式指定。


·name:指定资源的名称,名称也是大小写敏感的,如果省略名称,则会显示所有的资源。


·flags:指定额外的可选参数,比如可以用 -s 或者 -server参数指定Kubernetes API server的地址和端口


例如:


kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
kubectl get pods


22.png


常见命令


kubectl help 获取更多信息


通过 help命令,能够获取帮助信息


# 获取kubectl的命令
kubectl --help
# 获取某个命令的介绍和使用
kubectl get --help
# 查看目前的状态
kubectl get cs
# 查看所有pod
kubectl get pod 
# 查看某个pod
kubectl get pod pod_name
# 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml


基础命令


常见的基础命令


命令

介绍

create

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

expose

将一个资源暴露为一个新的Service

run

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

set

在对象上设置特定的功能

get

显示一个或多个资源

explain

展示文档参考资料

edit

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

delete

通过文件名,标准输入,资源名称或标签来删除资源

apply

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

patch

补丁修改、更新资源

replace

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

convert

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

label

更新资源上的标签

annotate

更新资源上的注释

completion

用于实现kubectl工具自动补全

api-versions

打印受支持的API版本

config

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

help

所有命令帮助

plugin

运行一个命令行插件

version

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


部署命令


命令

介绍

rollout

管理资源的发布

rolling-update

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

scale

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

autoscale

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

集群管理命令


命令

介绍

certificate

修改证书资源

cluster-info

显示集群信息

top

显示资源(CPU/M)

cordon

标记节点不可调度

uncordon

标记节点可被调度

drain

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

taint

修改节点taint标记


故障和调试命令


命令

介绍

describe

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

logs

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

attach

附加到一个运行的容器

exec

执行命令到容器

port-forward

转发一个或多个

proxy

运行一个proxy到Kubernetes API Server

cp

拷贝文件或目录到容器中

auth

检查授权

目前经常使用的命令


# 创建一个nginx镜像
kubectl create deployment nginx --image=nginx
# 对外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看资源
kubectl get pod
# 查看详细信息ip,端口等。
kubectl get svc


演示


创建一个namespace


[root@k8smaster ~]# kubectl create namespace paopao
namespace/paopao created


获取namespace


[root@k8smaster ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   7d23h
kube-node-lease   Active   7d23h
kube-public       Active   7d23h
kube-system       Active   7d23h
paopao            Active   22s


在此namespace下创建并运行一个nginx的Pod


[root@k8smaster ~]# kubectl run pod --image=nginx:latest -n paopao
pod/pod created


查看新创建的pod


[root@k8smaster ~]# kubectl get pod -n paopao
NAME   READY   STATUS    RESTARTS   AGE
pod    1/1     Running   0          3m14s


删除指定的namespace


[root@master ~]# kubectl delete ns dev
namespace "dev" deleted


创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml


删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml


查询资源 使用命令式对象管理 kubectl get(describe) 资源名称


资源管理方式


命令式对象管理:直接使用命令去操作kubernetes资源,直接操作对象,适合测试用,比较简单,缺点是只能操作活动对象,无法审计跟踪。


kubectl run nginx-pod --image=nginx --port=80


命令式对象配置:通过命令配置和配置文件去操作kubernetes资源,直接操作文件,适合开发,可以审计以及跟踪,但是项目太大的话,配置文件多就会很多,操作麻烦。


kubectl create -f nginx-pod.yaml
kubectl patch -f nginx-pod.yaml


声明式对象配置:通过apply命令和配置文件去操作kubernetes资源,直接操作目录,适合开发,支持目录操作,但是不好调试。


kubectl apply -f nginx-pod.yaml


资源类型


kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:


kubectl api-resources


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1天前
|
消息中间件 运维 监控
|
5天前
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
33 5
|
5天前
|
Kubernetes Cloud Native 安全
Kubernetes云原生问题之GKE Autopilot 与现有 Kubernetes 生态的兼容度如何解决
Kubernetes云原生问题之GKE Autopilot 与现有 Kubernetes 生态的兼容度如何解决
23 4
|
22小时前
|
Kubernetes API 容器
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
|
1天前
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?
|
5天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生问题之GKE Autopilot 进行扩容和缩容如何解决
Kubernetes云原生问题之GKE Autopilot 进行扩容和缩容如何解决
25 0
|
7天前
|
Kubernetes Cloud Native 持续交付
云原生技术浪潮下的微服务架构实践
在数字化转型的今天,云原生技术成为推动企业IT革新的关键力量。本文将通过浅显易懂的语言和实际案例,带领读者了解云原生的核心概念、微服务架构的设计原则以及如何在云平台上高效部署和管理微服务。我们将从基础概念出发,逐步深入到微服务的生命周期管理,探讨如何在云原生生态中实现快速迭代和持续交付。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的指导和思考。
|
1天前
|
Cloud Native API 云计算
云原生架构:企业数字化转型的催化剂
【8月更文挑战第18天】在数字化浪潮不断推进的今天,云原生技术已成为推动企业IT转型的核心力量。通过深入探讨云原生架构的基本原理、优势以及实施策略,本文旨在为企业提供一个清晰的云原生应用路线图,帮助它们在竞争激烈的市场环境中获得灵活性和创新能力。文章将详细阐述云原生如何助力企业实现资源的最优配置,加速产品上市时间,并提高系统的可维护性和扩展性。
|
3天前
|
运维 Cloud Native 云计算
探索云原生架构的未来趋势与挑战
【8月更文挑战第17天】随着云计算技术的不断发展和成熟,云原生架构已经成为现代软件开发的重要趋势。本文将深入探讨云原生架构的核心概念、优势以及面临的未来挑战和发展趋势,旨在为读者提供一个全面了解云原生架构的窗口,同时展望其对未来软件开发模式的影响。
|
7天前
|
Cloud Native 持续交付 开发者
云原生之旅:从传统到现代的架构演化
本文将通过一次虚拟的旅行,带领读者穿越回过去,探索软件架构的发展脉络。我们将从单体应用开始,一路经过服务化拆分,最终抵达云原生的乐土。这不仅是一段技术演进的历史,也是对如何在不断变化的技术浪潮中保持初心与创新的启示录。
19 2

热门文章

最新文章

推荐镜像

更多