根据上文完成部署k8s后,我们需要了解如何使用k8s.首先我们需要了解如何使用K8S的一些基础命令及主要概念。
尚不清楚如何部署的请参考:单master部署简要步骤
如果您熟悉了k8s基本命令,可以跳过此章节。
目录
先看一下这张图
2. 节点 node
3. pod - 最小可部署的计算单元
4. 服务 service
5. 部署控制器 deployment
4. 任务/作业 job
先看一下这张图
1. 命名空间 namespace
此处的命名空间就如同代码语言中命名空间,主要起分组的作用。
- 创建一个namespace
kubectl create namespace <namespace名称>
执行后,系统会提示:
namespace/dev created
- 获取namespace
kubectl get ns
运行结果示例:
NAME STATUS AGE
default Active 18h
kube-flannel Active 59m
kube-node-lease Active 18h
kube-public Active 18h
kube-system Active 18h
大家可以看到,此处ns就是namesapce的缩写
默认的namespace是default
2. 节点 node
node是k8s主要的载体单位,承载1个或多个pod。有master和子节点的区分。常规master节点不安装业务pod。
节点信息通过k8s api控制(增删查改),并保存在etcd上。
节点可以是真是主机,也可以是虚拟设备。
Pod、容器与Node的关系图:
查看节点信息
kubectl describe node <节点名称>
3. pod - 最小可部署的计算单元
1 pod = 1 Pause容器 + n * User Container
Pod里的多个业务容器:共享Pause容器的IP、共享Pause容器挂接的Volume(数据卷)
- 在此namespace下创建并运行一个nginx的Pod
kubectl run pod --image=nginx:latest -n dev
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/pod created
- 查看namespace ( 这里是dev)下的pod
kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pod-xx 1/1 Running 0 21s
此外常用参数还有--show-labels,显示pod标签
[root@n22 ~]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
hello-28104718-2v2xp 0/1 Completed 0 5m8s controller-uid=ee2cf0e0-59de-4656-8713-ae0c182edae5,job-name=hello-28104718
- 删除指定的pod
kubectl delete pod nginx-7cbb8cd5d8-b28pc
成功提示:pod "nginx-7cbb8cd5d8-b28pc" deleted
- 删除指定的namespace,这里是dev
kubectl delete ns dev
成功提示:namespace "dev" deleted
4. 服务 service
service引入主要是解决pod的动态变化,提供统一的访问入口。
5. 部署控制器 deployment
一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。
使用场景:
1、创建一个Deplyment对象来生成对应的ReplicaSet,并完成Pod副本的创建过程。
2、检查Deployment的状态来看部署动作是否完成(Pod副本的数量是否达到预期的值)。
3、更新Deployment以创建新的Pod(eg:镜像升级)。
4、如果当前Deployment不稳定,则回滚到一个早先的Deployment版本。
5、暂停和恢复Deployment,以便于一次性修改多个PodTemplateSpec 的配置项,之后再恢复Deployment,进行新的发布。
6、扩容和所容。扩容情况下,Deployment可以应对更高的负载。
7、查看Deployment的状态,以此作为发布是否成功的指标。
8、清理不再需要的旧版本ReplicaSets。
这里需要说明几点:
1、development不是必须的
2、development可以被用来管理多个pod,避免用户单独维护pod
- 查看创建的deployment
kubectl get deployments
- 创建deployment
一般采用yaml配置文件的方式创建development ,配置文件参考:集群管理 | Kubernetes
kubectl apply -f nginx-deployment.yaml
- 更新deployment
更新版本
kubectl set image deployment/nginx nginx=nginx:1.22.1
查看更新进度
kubectl rollout status deployment/nginx
编辑deployment来更新,编辑保存后会自动更新配置
kubectl edit deployment/nginx
- 删除deployment
如果同一个配置文件中包含多个资源对象,可以批量删除
kubectl delete -f https://k8s.io/examples/application/nginx-app.yaml
单个deployment删除
kubectl delete deployment/nginx
4. 任务/作业 job
任务是定时执行指定任务的一个功能,比较常用的。Linux服务之前通常使用crontab完成。
使用yanml文件进行配置
应用配置文件:
kubectl apply -f k8scron-job-cron.yaml
删除job
# 删除指定job
kubectl delete job <job-name>
# 删除已完成job
kubectl delete job $(kubectl get jobs | awk '$3 ~ 1' | awk '{print $1}')
# 删除未完成job
kubectl delete job $(kubectl get jobs | awk '$3 ~ 0' | awk '{print $1}')
可以看作资源对象的有:Node、Pod、Replication Controller、Service
参考文章:文章来源:https://www.toymoban.com/news/detail-511642.html
K8S核心概念及名词讲解(kubernetes 前言篇)_爵影子的博客-CSDN博客 k8s之Service_k8s service_江南道人的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-511642.html
到了这里,关于K8S 使用(1)- 基本命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!