4 Kubctl 命令行管理工具

本文详细介绍如何使用Kubectl命令行工具管理Kubernetes集群。包括检查集群状态、部署应用、配置资源等核心操作,并提供了丰富的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 查看集群状态

2 kubeconfig 配置文件

3 kubectl 常用命令

3.1 常用指令列表

3.2 kubectl 指令部署应用


本文目的:首先通过第一节“查看集群状态”来直接上手使用一些常用的Kubectl指令,然后通过Kubectl指令部署一个应用。

1 查看集群状态

1.1 查看K8S集群中的节点状态

只要机器上部署了kubelet,本指令就能查到该机器,Master机器也能被查到。

kubectl get node

1.2 列出K8S中所涉及到的所有资源

字段:资源名、缩写、组、是否支持命名空间、资源名称

kubectl api-resources

1.3 查看Master组件状态

kubectl get cs

然而,输入完上述指令后,默认情况下Matser组件中的scheduler和controller-manager没有被监听到,这是因为这两个组件的配置文件中端口号被默认配置为0,将下图中那一行注释掉即可。 

 如下图:分别注释到两个配置文件中的那一行

#分别打开配置文件,注释到端口为0的那一行
vi /etc/kubernetes/manifests/kube-controller-manager.yaml
vi /etc/kubernetes/manifests/kube-scheduler.yaml

#重启kubelet
systemctl restart kubelet

修改配置文件后:

 1.4 查看Apiserver代理的URL

kubectl cluster-info

 1.5 查看K8S集群详细信息

会列出特别多的信息

kubectl cluster-info dump

1.6 查看资源信息

kubectl describe <资源> <主机名称>

#查看集群中Matser节点的详细信息
kubectl describe node kubeadm-master

2 kubeconfig 配置文件

kubectl使用kubeconfig认证文件连接K8s集群,使用kubectl config指令生成kubeconfig文件。

默认情况下Matser节点上有该配置文件而其他Node节点上则没有。如果想在Node机器上访问,就必须也生成一份kubeconfig配置文件。

查看kubeconfig配置文件:

cat /root/.kube/config

3 kubectl 常用命令

3.1 常用指令列表

kubectl帮助文档,里面有个网址可查看更详细信息:

kubectl --help

kubectl常用命令整理后如下: 

                                                                kubectl管理命令汇总
         类型     命令                                               描述
          基础命令create通过文件名或标准输入创建资源
expose为Deployment、Pod创建Service
run在集群中运行一个特定的镜像
set在对象上设置特定的功能
explain文档参考资料
get显示一个或多个资源
edit使用系统编辑器编辑一个资源。
delete通过文件名、标准输入、资源名称或标签选择器来删除资源。
          部署命令rollout管理Deployment,Daemonset资源的发布(例如状态、发布记录、回滚等)
rolling-update滚动升级,仅限ReplicationController
scale对Deployment、ReplicaSet、RC或Job资源扩容或缩容Pod数量
autoscale为Deploy,RS,RC配置自动伸缩规则(依赖metrics-server和hpa)
       集群管理命令certificate修改证书资源
cluster-info显示集群信息
top查看资源利用率(依赖metrics-server)
cordon标记节点不可调度
uncordon标记节点可调度
drain驱逐节点上的应用,准备下线维护
taint修改节点taint标记
  故障诊断和调试命令describe显示资源详细信息
logs查看Pod内容器日志,如果Pod有多个容器,-c参数指定容器名称
attach附加到Pod内的一个容器
exec在容器内执行命令
port-forward为Pod创建本地端口映
proxy为KubernetesAPIserver创建代理
cp拷贝文件或目录到容器中,或者从容器内向外拷贝
           高级命令apply从文件名或标准输入对资源创建/更新
patch使用补丁方式修改、更新资源的某些字段
replace从文件名或标准输入替换一个资源
convert在不同API版本之间转换对象定义
           设置命令label给资源设置、更新标签
annotate给资源设置、更新注解
completionkubectl工具自动补全,source<(kubectlcompletionbash)(依赖软件包bash-completion)
           其他命令api-resources查看所有资源
api-versions打印受支持的API版本
config修改kubeconfig文件(用于访问API,比如配置认证信息)
help所有命令帮助
version查看kubectl和k8s版本

3.2 kubectl 指令部署应用

(1)部署镜像到K8S集群

#1.1 使用Deployment控制器部署镜像(生成Pod)到K8S集群中:
kubectl create deployment java-demo --image=lizhenliang/java-demo
#1.2 查看Pod
kubectl get pods
#1.3 查看资源信息(kubectl describe <资源类型> <具体名字>)
kubectl describe pod java-demo-56d54df448-2cw44

(2)使用Service将Pod暴露出去

#2.1 使用Service将Pod暴露出去(80端口是负载均衡的端口,8080是容器中应用程序的端口,NodePort是service的类型,用于让浏览器访问):
kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort
#2.2 获取service(随机生成的3xxxx端口用于从外部访问容器)
kubectl get service

 (3)访问应用

port通过kubectl get svc 获取,http://NodeIP:PORT/

到目前为止,已经介绍了通过kubectl指令在命令行中部署应用,在后面的学习中,会介绍通过yaml配置文件部署应用的方法。

### 实现阿里云云效流水线 RuoYi-SpringBoot 项目自动化部署 #### 准备工作 为了在阿里云云效流水线上实现RuoYi-SpringBoot项目的自动化部署,需先完成一些准备工作。确保已创建好阿里云账号并开通了云效服务;同时,在本地环境中准备好待部署的Spring Boot应用源码以及Dockerfile文件用于构建镜像[^1]。 #### 创建仓库与分支策略 将RuoYi-SpringBoot工程推送到GitLab或其他支持Webhook功能的版本控制系统中去,并设置合理的分支管理策略以便于后续触发CI/CD流程。对于主要开发工作的master/main分支建议开启保护模式防止误操作影响生产环境稳定性[^2]。 #### 构建自定义Maven命令 针对特定需求定制maven打包指令,比如指定JDK版本、跳过测试用例执行等参数优化编译效率。此部分可通过`.mvn/jvm.config` 和 `.mvn/mvn.config` 文件来配置全局变量或者通过pipeline脚本动态传递给maven插件使用[^3]。 ```bash # .mvn/jvm.config -Xms512m -Xmx1024m # .mvn/mvn.config -DskipTests=true clean package ``` #### 编写Pipeline YAML配置文件 编写适用于当前场景下的持续集成管道描述文档(通常是yaml格式),明确定义各个阶段的任务列表及其依赖关系。下面是一个简单的例子展示了如何利用官方提供的Java模板快速搭建起一套完整的CICD体系结构: ```yaml version: 1.0 stages: - compile - test - build_image - deploy jobs: maven_compile_job: stage: compile steps: - mvn clean install -Dmaven.test.skip=true unit_test_job: stage: test script: - mvn test docker_build_push_job: image: registry.cn-hangzhou.aliyuncs.com/cloudnative/docker:latest stage: build_image only: changes: - '**/*.java' services: - docker:dind before_script: - export DOCKER_BUILDKIT=1 script: - echo "$DOCKER_PASSWORD" | docker login --username="$DOCKER_USERNAME" --password-stdin $REGISTRY_URL - cd ./ruoyi-cloud/ - docker build -t ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG} . - docker push ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG} kubernetes_deploy_job: type: deploy environment: name: production url: http://${K8S_SERVICE_IP}/api/v1/namespaces/${NAMESPACE}/services/${SERVICE_NAME}:http/proxy/ when: manual dependencies: - docker_build_push_job script: - apk add curl - curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - chmod +x ./kubectl - mv ./kubectl /usr/local/bin/ - mkdir -p ~/.kube - echo "${KUBECONFIG}" >~/.kube/config - kubectl apply -f deployment.yaml ``` 上述代码片段实现了从源码拉取到最终发布上线整个过程中涉及到的关键环节控制逻辑表达[^4]。 #### Kubernetes集群中的资源对象声明 最后一步是在目标Kubernetes集群内部署应用程序所需的各类资源配置清单,如Deployment、Service、Ingress等API对象的具体属性设定。这通常保存在一个名为`deployment.yaml` 的文本文件里供kubctl工具读取解析后提交至apiserver处理请求。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: ruoyi-springboot-app name: ruoyi-springboot-deployment spec: replicas: 3 selector: matchLabels: app: ruoyi-springboot-app template: metadata: labels: app: ruoyi-springboot-app spec: containers: - envFrom: - secretRef: name: db-secret image: 'registry.cn-hangzhou.aliyuncs.com/my-repo/ruoyi-springboot:${TAG}' livenessProbe: failureThreshold: 3 initialDelaySeconds: 40 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 9090 name: ruoyi-springboot-container ports: - containerPort: 9090 --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: lb-wz9hjg**** labels: app: ruoyi-springboot-service name: ruoyi-springboot-service spec: externalTrafficPolicy: Cluster healthCheckNodePort: 30727 loadBalancerID: lb-wz9hjg**** ports: - nodePort: 30727 port: 80 protocol: TCP targetPort: 9090 selector: app: ruoyi-springboot-app sessionAffinity: None type: LoadBalancer ``` 以上就是关于如何借助阿里云云效平台实施RuoYi-SpringBoot项目的自动部署方案介绍[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值