k8s-应用部署和组件及常用命令

1、相关组件介绍:

node是k8s的集群节点,和实际的机器对应

pod是应用容器,不同的应用部署在不同的pod中,k8s协调资源,将pod部署到集群中的node节点上(非master节点)。

同时pod又是挂在namespace下面的,命名空间之间互相隔离。

pause 管理多个应用容器:搭建k8s集群的时候有一个镜像名字就是 registry.k8s.io/pause:3.9

label 大规模管理pod

volume: 挂载应用数据,应用产生的数据(如日志)和应用配置数据(如configMap)

deployment : 应用部署管理:rs副本管理

service/ingress: 应用访问,对外开放tcp、http、https

flannel: 节点间的网络访问的解决方案。我们部署时采用的这个,也有其他的

2、常用操作指令

kubectl -h 查看命令信息:

具体命令的使用和参数也可以使用 kubectl 命令 -h 查看

2.1 get 查看

kubectl get -h

查看资源:get

查看node:

kubectl get nodes

查看命名空间:

kubectl get ns

查看pod:

kubectl get pods -A 查看所有命名空间的pod

kubectl get pods -n 命名空间 查看指定命名空间的pod

kubectl get pods -n kube-system 查看kube-system命名空间的pod

2.2、创建pod的方式

1.命令模式 run

kubectl run -h` 查看命令使用

kubectl run NAME --image=image --env="key=value" --port=port --dry-run=server\|client --overrides=inline-json

--command\] -- \[COMMAND\] \[args...\] \[options

我们使用之前自己做的那个nginx镜像来创建一个nginx。

kubectl run my-nginx --image=k8s-harbor.taoyao.com/nijunyang/my-nginx:1.29.1

kubectl describe pod my-nginx 查看my-nginx 详细信息

kubectl logs my-nginx 查看my-nginx 日志

kubectl exec -it my-nginx -- bin/bash 进入容器内部进行交互操作 进入容器之后curl localhost 可以看到nginx的页面内容 exit 退出容器内部交互

kubectl get pods 不指定命名空间,默认使用是default

kubectl get pods -o wide 输出一些扩展信息

这里有个ip,这个ip就是这个pod在k8s中的ip,去到k8s的其他节点都能访问:curl 10.244.1.2

2.yaml资源清单方式

kubectl get pod my-nginx -o yaml 以yaml方式查看资源信息,,这个是一个实际的状态而k8s就是负责资源预期状态到实际状态。

kubectl run my-nginx --image=k8s-harbor.taoyao.com/nijunyang/my-nginx:1.29.1 --dry-run=client -o yaml 获取这个资源创建的预期状态,--dry-run 不会实际执行。

kind: Pod:说明这个 YAML 文件定义的是一个 Pod 资源

kubectl run my-nginx --image=k8s-harbor.taoyao.com/nijunyang/my-nginx:1.29.1 --dry-run=client -o yaml > nginx.yaml 把内容写到资源清单文件中去,用这个文件来创建资源

kubectl apply -f nginx.yaml 以资源清单方式创建资源

2.3 deployment 应用部署管理器

deployment 应用部署管理器,让应用向预期状态靠近,比如 RS 副本管理,pod数量少了,就会自动帮你启动到设置数量。

创建 deployment

命令方式kubectl create deployment

kubectl create deployment NAME --image=image -- COMMAND args... options

kubectl create deployment my-nginx-deploment --image=k8s-harbor.taoyao.com/nijunyang/my-nginx:1.29.1

pod和deployment 还有rs 都创建好了

名字也有层级关系:deployment名字-RS名字-pod名字

资源清单方式:

kubectl create deployment my-nginx-deploment --image=k8s-harbor.taoyao.com/nijunyang/my-nginx:1.29.1 --dry-run=client -o yaml > my-nginx-deploment.yaml 把内容写到资源清单文件中去,用这个文件来创建资源

replicas 副本数改成2

kubectl apply -f my-nginx-deploment.yaml

直接就启动了两个pod

2.4 资源对象扩缩容:

edit:直接在现有的资源上修改属性

scale:直接动态调整数量

kubectl edit deployments.apps my-nginx-deploment 和vim操作一样 i 编辑模式 :wq 退出保存

修改为三个,保存之后k8s自动给我们调整为了三个

kubectl scale --resource-version=version --current-replicas=count --replicas=COUNT (-f FILENAME | TYPE NAME)

options

kubectl scale deployment my-nginx-deploment --replicas 5 设置为5个

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun2 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
赵文宇(温玉)2 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
忆~遂愿3 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
Thneonl3 天前
你的 Pod 为什么 Pending:调度器两阶段
后端·kubernetes
不吃香菜kkk、3 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove3 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21