目录
一、namespace
1.查看所有namespace
2.查看指定的namespace
3.查看namespace并指定输出格式
4.查看namespace详情
5.创建namespace
6.删除namespace
7.通过yaml文件创建、删除namespace
二、pod
1.创建并运行pod
2.查看pod信息
3.查看pod详情
4.获取pod IP
5.删除指定pod
6.查看pod资源配置项
7.设置pod镜像拉取策略
8.设置污点
9.去除污点
10.去除所有污点
三、label
1.给pod资源打标签
2.更新pod标签
3.查看pod标签
4.筛选标签
5.删除标签
四、控制器
1.创建deployment
2.查看deployment信息
3.查看deployment详情
4.删除deployment
5.创建replicaSet
6.查看replicaSet
7.编辑rs副本数量
8.rs镜像升级
9.删除replicaSet,不保留pod
10.删除replicaSet,保留pod(不推荐)
11.通过yaml文件删除replicaset
12.deploy更改副本数量
13.deployment镜像变更
14.查看deployment当前升级版本状态
15.查看deployment历史升级记录
16.deployment版本回退
17.继续已暂停的版本升级过程
18.通过yaml文件删除deployment
五、service
一、namespace
1.查看所有namespace
- kubectl get ns
2.查看指定的namespace
- kubectl get ns ns名称
3.查看namespace并指定输出格式
- kubectl get ns ns名称 -o 格式参数
k8s支持的格式有:wide、json、yaml
4.查看namespace详情
- kubectl describe ns ns名称
5.创建namespace
- kubectl create ns namespace名称
6.删除namespace
- kubectl delete ns namespace名称
7.通过yaml文件创建、删除namespace
ns-dev.yaml文件:
apiVersion: v1
kind: Namespace
metadata:
name: dev
创建:kubectl create -f ns-dev.yaml
删除:kubectl delete -f ns-dev.yaml
二、pod
查看pod资源清单:
kubectl explain pod.spec.containers
pod资源清单:
apiVersion: v1 #必选,版本号,例如v1
kind: Pod #必选,资源类型,例如 Pod
metadata: #必选,元数据
name: string #必选,Pod名称
namespace: string #Pod所属的命名空间,默认为"default"
labels: #自定义标签列表
- name: string
spec: #必选,Pod中容器的详细定义
containers: #必选,Pod中容器列表
- name: string #必选,容器名称
image: string #必选,容器的镜像名称
imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略
command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令
args: [string] #容器的启动命令参数列表
workingDir: string #容器的工作目录
volumeMounts: #挂载到容器内部的存储卷配置
- name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符
readOnly: boolean #是否为只读模式
ports: #需要暴露的端口库号列表
- name: string #端口的名称
containerPort: int #容器需要监听的端口号
hostPort: int #容器所在主机需要监听的端口号,默认与Container相同
protocol: string #端口协议,支持TCP和UDP,默认TCP
env: #容器运行前需设置的环境变量列表
- name: string #环境变量名称
value: string #环境变量的值
resources: #资源限制和请求的设置
limits: #资源限制的设置
cpu: string #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
memory: string #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
requests: #资源请求的设置
cpu: string #Cpu请求,容器启动的初始可用数量
memory: string #内存请求,容器启动的初始可用数量
lifecycle: #生命周期钩子
postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启
preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止
livenessProbe: #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器
exec: #对Pod容器内检查方式设置为exec方式
command: [string] #exec方式需要制定的命令或脚本
httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
path: string
port: number
host: string
scheme: string
HttpHeaders:
- name: string
value: string
tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式
port: number
initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒
timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
successThreshold: 0
failureThreshold: 0
securityContext:
privileged: false
restartPolicy: [Always | Never | OnFailure] #Pod的重启策略
nodeName: <string> #设置NodeName表示将该Pod调度到指定到名称的node节点上
nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上
imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定
- name: string
hostNetwork: false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
volumes: #在该pod上定义共享存储卷列表
- name: string #共享存储卷名称 (volumes类型有很多种)
emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
path: string #Pod所在宿主机的目录,将被用于同期中mount的目录
secret: #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部
scretname: string
items:
- key: string
path: string
configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
name: string
items:
- key: string
path: string
1.创建并运行pod
方式一:
- kubectl run 控制器名称 --image=镜像名称:版本 --port=端口 --namespace namespace名称
方式二:通过yaml文件创建pod:
- 创建pod:kubectl apply -f pod-base.yaml, pod-base.yaml:
apiVersion: v1 #版本号
kind: Pod #资源类型
metadata:
name: Pod名称 #Pod名称
namespace: 命名空间名称 #Pod所属的命名空间
spec: #Pod中容器的详细定义
containers: #Pod中容器列表
- name: 容器名
image: 镜像名:版本
- name: 容器名
image: 镜像名:版本
2.查看pod信息
- kubectl get pod -n 命名空间名称
3.查看pod详情
- kubectl describe pod pod名称 -n 命名空间名称
4.获取pod IP
- kubectl get pod -n dev -o wide
5.删除指定pod
方式一:
- kubectl delete pod pod名称 -n 命名空间名称
方式二,通过yaml文件删除pod:
- kubectl delete -f pod-nginx.yaml, pod-base.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod名称
namespace: 命名空间
spec:
containers:
- image: 镜像名:版本
name: 容器名
ports:
- name: 端口的名称
containerPort: 容器需要监听的端口号
protocol: 端口协议,支持TCP和UDP
6.查看pod资源配置项
- kubectl explain pod
7.设置pod镜像拉取策略
pod-imagepullpolicy.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod名称
namespace: 命名空间
spec:
containers:
- name: 容器名
image: 镜像名:版本
imagePullPolicy: Never # 用于设置镜像拉取策略
使用kubectl create -f pod-imagepullpolicy.yaml命令即可
8.设置污点
- kubectl taint nodes node名字 key=value:effect
- key和value是污点的标签,effect描述污点的作用
- effect选项:PreferNoSchedule、NoSchedule、NoExecute
9.去除污点
- kubectl taint nodes node名字 key:effect-
10.去除所有污点
- kubectl taint nodes node名字key-
三、label
1.给pod资源打标签
- kubectl label pod nginx-pod 标签key=标签value -n 命名空间
2.更新pod标签
- kubectl label pod pod名称 标签key=标签value -n 命名空间 --overwrite
3.查看pod标签
- kubectl get pod pod名称 -n 命名空间 --show-labels
4.筛选标签
- kubectl get pod -n 命名空间 -l 标签key=标签value --show-labels
- kubectl get pod -n 命名空间 -l 标签key!=标签value --show-labels
5.删除标签
- kubectl label pod pod名称 标签key- -n 命名空间
四、控制器
replicaSet资源清单:
apiVersion: apps/v1 # 版本号
kind: ReplicaSet # 类型
metadata: # 元数据
name: # rs名称
namespace: # 所属命名空间
labels: #标签
controller: rs
spec: # 详情描述
replicas: 3 # 副本数量
selector: # 选择器,通过它指定该控制器管理哪些pod
matchLabels: # Labels匹配规则
app: nginx-pod
matchExpressions: # Expressions匹配规则
- {key: app, operator: In, values: [nginx-pod]}
template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
deployment资源清单:
apiVersion: apps/v1 # 版本号
kind: Deployment # 类型
metadata: # 元数据
name: # rs名称
namespace: # 所属命名空间
labels: #标签
controller: deploy
spec: # 详情描述
replicas: 3 # 副本数量
revisionHistoryLimit: 3 # 保留历史版本
paused: false # 暂停部署,默认是false
progressDeadlineSeconds: 600 # 部署超时时间(s),默认是600
strategy: # 策略
type: RollingUpdate # 滚动更新策略,可选Recreate重建更新
rollingUpdate: # 滚动更新
maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
maxUnavailable: 30% # 最大不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
selector: # 选择器,通过它指定该控制器管理哪些pod
matchLabels: # Labels匹配规则
app: nginx-pod
matchExpressions: # Expressions匹配规则
- {key: app, operator: In, values: [nginx-pod]}
template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
1.创建deployment
方式一:
- kubectl create deployment名称 --image=镜像名:版本 --port=端口号 --replicas=要创建的pod数量 -n 命名空间
方式二:
- kubectl create -f deploy-demo.yaml
deploy-demo.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy名称
namespace: 命名空间名称
spec:
replicas: 3 #pod数量
selector: #选择器,通过它指定该控制器管理哪些pod
matchLabels: #标签匹配规则
run: nginx
template:
metadata:
labels:
run: nginx
spec:
containers:
- image: nginx:latest
name: nginx
ports:
- containerPort: 80
protocol: TCP
2.查看deployment信息
- kubectl get deploy -n 命名空间 -o wide
3.查看deployment详情
- kubectl describe deploy deployment名称 -n dev
4.删除deployment
- kubectl delete deploy deploy名称 -n 命名空间
5.创建replicaSet
pc-replicaset.yaml文件:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: pc-replicaset
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
- kubectl create -f pc-replicaset.yaml
6.查看replicaSet
- kubectl get rs rs名字 -n 命名空间名称 -o wide
7.编辑rs副本数量
方式一:
- kubectl edit rs rs名称 -n 命名空间名称,然后修改yaml文件中replicas数量即可
方式二:
- kubectl scale rs rs名称 --replicas=副本数量 -n 命名空间名称
8.rs镜像升级
方式一:
- kubectl edit rs rs名称 -n 命名空间名称,然后修改yaml文件中image即可
方式二:
- kubectl set image rs rs名称 容器=镜像名:镜像版本 -n 命名空间名称
9.删除replicaSet,不保留pod
- kubectl delete rs rs名称 -n 命名空间
10.删除replicaSet,保留pod(不推荐)
- kubectl delete rs rs名称 -n 命名空间名称 --cascade=false
11.通过yaml文件删除replicaset
- kubectl delete -f pc-replicaset.yaml
12.deploy更改副本数量
方式一:
- kubectl scale deploy deploy名称 --replicas=副本数量 -n 命名空间名称
方式二:
- kubectl edit deploy deploy名称 -n 命名空间,然后直接修改yaml文件中replicas数量即可
13.deployment镜像变更
- kubectl set image deploy deploy名称 容器=镜像名:版本 -n 命名空间名称
14.查看deployment当前升级版本状态
- kubectl rollout status deploy deploy名称 -n 命名空间名称
15.查看deployment历史升级记录
- kubectl rollout history deploy deploy名称 -n 命名空间名称
16.deployment版本回退
- kubectl rollout undo deploy deploy名称 --to-revision=回退版本 -n 命名空间名称
忽略 --to-revision选项就是回退到上个版本,历史版本通过第15条命令查看。
17.继续已暂停的版本升级过程
- kubectl rollout resume deploy deploy名称 -n 命名空间名称
18.通过yaml文件删除deployment
- kubectl delete -f deploy-demo.yaml
deploy-demo.yaml在第一条命令中文章来源:https://www.toymoban.com/news/detail-741853.html
五、service
service资源清单:文章来源地址https://www.toymoban.com/news/detail-741853.html
kind: Service # 资源类型
apiVersion: v1 # 资源版本
metadata: # 元数据
name: service # 资源名称
namespace: dev # 命名空间
spec: # 描述
selector: # 标签选择器,用于确定当前service代理哪些pod
app: nginx
type: # Service类型,指定service的访问方式
clusterIP: # 虚拟服务的ip地址
sessionAffinity: # session亲和性,支持ClientIP、None两个选项
ports: # 端口信息
- protocol: TCP
port: 3017 # service端口
targetPort: 5003 # pod端口
nodePort: 31122 # 主机端口
到了这里,关于k8s常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!