K8S部署总结以及相关常用命令吐血总结

本文详细介绍Docker镜像的构建、推送及Kubernetes的基本操作,包括pod状态查询、镜像库秘钥生成、pod删除与信息查询、日志查看等关键步骤。同时,解决Dockerfile中shell脚本在不同操作系统间兼容性问题。

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

1.制作镜像

  在工程的根目录下,也就是包含有Dockerfile文件的目录下,执行如下命令:

docker build -t imageName:tag .

2. 打tag:执行命令

docker tag imageName:tag domain/project/imageName:tag

3.登录镜像库:

docker login -p pwd -u username https://domain

4.push镜像到仓库:

docker push domain/project/imageName:tag

5.打包helm chart

//因为是父子包,所以需要加-u来更新依赖的子包
helm package -u app-chart

6.helm 安装

helm install appName helmChart包 -n my-namespace

7.查询pods的状态:

kubectl get pods -n namespace

8.生成镜像库的秘钥:

kubectl create secret docker-registry my-secret --docker-server=https://domain/project --docker-username=uname --docker-password=pwd --docker-email=emain

9.删除指定的pod

kubectl delete pod podName --force -n ns

10.查询指定pod的详细信息

kubectl describe pod/podName -n ns

11.查询指定pod下指定容器的日志

kubectl logs -c containerName podName  -n ns

12.查询指定secrect的详细信息,例如db secrect的详细信息:

kubectl get secret my-secreat  -o yaml -n ns

13.在指定pod的指定容器中执行特定命令

kubectl exec podName -c containerName -n ns -- cmd1para cmd2para

 

特殊问题:一般在Dockerfile的ENTRYPOINT中会调用shell脚本,但是shell脚本需要linux下的分隔符,在windows下的idea默认是使用CRLF,这个时候在linux环境下运行image的时候,会出现exec user process caused "no such file or directory"的错误信息。需要将分割符修改为LF即可,然后重新打镜像再运行容器。

<think>好的,用户让我总结一下Kubernetes(k8s)的用法以及各个命令。我需要先回想一下k8s的基本概念和常用命令。首先,k8s是容器编排平台,管理容器化应用,所以可能需要从集群管理、部署应用、扩展、更新等方面入手。 用户可能是刚开始学习k8s,或者想快速回顾命令的使用。他们可能需要一个结构清晰的总结,涵盖常用命令和主要用途。需要分门别类,比如集群管理、资源操作、故障排查等部分。 接下来要考虑的是k8s的核心命令,比如kubectl,这是最常用的命令行工具。得列举常用的子命令,如get、create、apply、delete、describe、logs、exec等,并解释每个命令的作用和典型用法。例如,kubectl get pods用于查看Pod状态,kubectl apply -f来应用配置文件。 另外,可能还需要提到一些高级命令,比如滚动更新、回滚、扩缩容等。例如,kubectl rollout用于管理部署的更新过程,kubectl scale调整副本数。用户可能也需要了解如何查看日志和进入容器调试,所以logs和exec命令也很重要。 还需要注意命令的语法和常用参数,比如-n指定命名空间,--all-namespaces查看所有命名空间的资源。同时,要提醒用户配置文件的重要性,比如YAML文件的使用,以及声明式管理和命令式管理的区别,比如apply和create的不同。 可能还需要检查是否有遗漏的关键命令,比如kubectl explain查看资源定义,kubectl port-forward端口转发,kubectl proxy访问API等。此外,标签选择器的使用,如-l app=nginx,也应该提到。 用户可能还会对资源类型缩写感兴趣,比如po代表pods,deploy代表deployments,svc代表services,这些缩写可以加快命令输入。同时,可能需要给出一些示例,让用户更容易理解每个命令的具体应用场景。 最后,要确保语言简洁明了,结构清晰,方便用户快速查找需要的命令和用法。避免使用过于技术化的术语,但也要准确无误。可能需要分几个部分,比如基本命令、部署管理、调试与故障排查、高级操作等,每个部分下再详细列出相关命令和说明。</think>以下是Kubernetes(k8s)核心用法及常用命令总结: --- ### **一、核心概念** - **集群**:由Master(控制节点)和Node(工作节点)组成 - **Pod**:最小调度单元,包含一个或多个容器 - **Deployment**:管理Pod的副本数量和滚动更新 - **Service**:为Pod提供稳定的网络访问端点 - **Namespace**:逻辑隔离资源的分区 --- ### **二、基础命令** #### 1. 集群管理 ```bash kubectl cluster-info # 查看集群信息 kubectl get nodes # 查看节点状态 kubectl version # 查看客户端和服务端版本 ``` #### 2. 资源操作 ```bash kubectl get <resource> # 查看资源(如 pods, deployments, services) kubectl describe <resource>/<name> # 查看资源详细信息 kubectl create -f file.yaml # 通过YAML文件创建资源 kubectl apply -f file.yaml # 声明式更新资源 kubectl delete -f file.yaml # 删除YAML定义的资源 ``` --- ### **三、部署管理** #### 1. Pod操作 ```bash kubectl get pods [-n namespace] # 查看Pod列表 kubectl logs <pod-name> [-c container] # 查看Pod日志 kubectl exec -it <pod-name> -- /bin/sh # 进入Pod的Shell ``` #### 2. Deployment操作 ```bash kubectl scale deploy/<name> --replicas=3 # 扩缩容 kubectl rollout status deploy/<name> # 查看更新状态 kubectl rollout history deploy/<name> # 查看更新历史 kubectl rollout undo deploy/<name> # 回滚到上一个版本 ``` #### 3. Service操作 ```bash kubectl expose deploy/<name> --port=80 --target-port=8080 # 创建Service kubectl get svc # 查看服务列表 ``` --- ### **四、调试与故障排查** ```bash kubectl describe pod <pod-name> # 查看Pod事件和状态细节 kubectl logs --tail=100 <pod-name> # 查看最近100行日志 kubectl top node/pod # 查看资源使用率(需安装metrics-server) kubectl port-forward <pod-name> 8080:80 # 端口转发到本地 ``` --- ### **五、高级操作** ```bash kubectl label pod <name> env=prod # 添加标签 kubectl get pods -l app=nginx # 按标签筛选 kubectl edit deploy/<name> # 直接编辑资源配置 kubectl cp <pod-name>:/path /local # 与Pod之间复制文件 kubectl api-resources # 查看所有资源类型 ``` --- ### **六、常用参数** - `-n <namespace>`:指定命名空间 - `--all-namespaces`:跨所有命名空间操作 - `-o wide/yaml/json`:指定输出格式 - `--dry-run=client`:模拟执行(不实际创建资源) --- ### **七、典型工作流** 1. 编写YAML配置文件(如 `deployment.yaml`) 2. 部署应用:`kubectl apply -f deployment.yaml` 3. 查看状态:`kubectl get pods -l app=myapp` 4. 暴露服务:`kubectl expose deployment/myapp --type=NodePort` 5. 滚动更新:修改YAML后重新执行 `kubectl apply` 6. 监控日志:`kubectl logs -f <pod-name>` --- $$ \text{提示:善用 } kubectl \ explain \ <resource> \ \text{查看资源字段的详细说明} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值