kubectl命令
1.管理集群
1.1 kubectl命令
kubectl是控制k8s集群的命令行工具
kubectl [command] [type] [name] [flags] 语法格式
- command 子命令: create,get,describe,delete
- type: 资源类型,可以表示为单数,复数或缩写形式
- name: 资源的名称,如果省略,则显示所有资源的详细信息
- flags: 指定可选标志,或附加的参数
1.2 kubectl基本命令
# 查看帮助
kubectl help
# 客户端版本信息
kubectl version
# 查看集群状态信息
kubectl cluster-info
# 查看资源对象类型
kubectl api-resources
# 查看节点
kubectl get node -o wide
# 查看容器资源
kubectl get pod -o wide
# 查看资源名称
kubectl get deployment
# 创建pod容器
kubectl run myweb --image=harbor:443/library/image:httpd
# 创建交互时pod容器
kubectl run mypod -it --image=harbor:443/library/image:yum
# 查看命名空间
kubectl get namespace
# 查看指定命名空间的pod
kubectl -n kube-system get pod
# 查看详细信息
kubectl describe pod myweb
# 查看pod日志信息
kubectl logs myweb
1.3 kubectl节点命令
# 查看node的标签
kubectl get nodes node1 --show-labels
# 打标签
kubectl label node1 disk=ssd
# 删除标签
kubectl label nodes node1 disk-
# 动态直接给容器扩容
kubectl scale deployment my-deploy --replicas=3
2.管理pod
2.1 pod与控制器
控制器:控制器是k8s内置的管理工具,可以帮助用户实现Pod的自动部署,自维护,扩容,滚动更新等功能的自动化程序
# 创建一个带控制器的pod资源
kubectl create deployment myapache --images=harbor:443/library/image:httpd
# 链接控制器 --:是shell指令的扩展终止符,后面的内容被认为是指令
kubectl exec -it myapache-67bdb5889-wzfzw -- /bin/bash
# 查看顶层控制器,deployments可以为集群提供升级和滚动
kubectl get deployments.apps
# 查看二级控制器,replicasets管理pod,给定参数会自动扩容节点,检测pod状态,发现pod坏掉会重新生成
kubectl get replicasets.apps
# 查看底层pod
kubectl get pod
# 删除要从顶层资源删起
kubectl delete deployments.app myapache
kubectl delete pod myweb
2.2 DaemonSet控制器
DaemonSet:每个机器都要启动运行的pod,确保全部或一些Node上运行pod副本
删除DaemonSet,会删除所有它创建的pod副本,典型应用:ceph节点、监控节点、filebeat日志收集等
系统服务kube-proxy就是这种类型
2.3 Job控制器
Job控制器可以理解为定时任务,单任务控制器
CronJob重复多次任务控制器
# cronjob.yaml
---
apiVersion: batch/v1 #版本
kind: CronJob #资源类型
metadata:
name: cronjob-pi #资源对象名称
spec:
schedule: "*/1 * * * *" #定义周期时间,分时日月周
jobTemplate: #引用job模板
spec:
template:
spec:
containers:
- name: pi
image: harbor:443/library/image:yum
command: ["/bin/bash"]
args:
- -c
- |
echo "Hello World."
restartPolicy: OnFailure
2.4 污点标签
PreferNoSchedule尽量不调度、 NoSchedule不会被调度、NoExecute驱逐污点
驱逐污点使用:node1机器出现故障,可以使用驱逐污点,让node1的容器迁移到其它节点上,清除污点,已调度走的容器不会再回来了
# 查看所有污点标签
kubectl describe nodes | grep Taints
# 设置污点
kubectl taint node node1 k1=v1:NoSchedule
# 删除污点
kubectl taint node node1 k1-
3.yaml资源对象文件
3.1 资源对象文件定义
资源对象文件:描述和定义kubernetes资源的文件,包含资源的配置信息,可以创建、删除、管理资源对象
# 定义一个简单的资源对象文件 pod.yaml
---
apiVersion: v1 #版本
kind: Pod #资源类型
metadata: #元数据
name: my-pod #资源的名字
spec: #具体的资源详细信息
containers: #容器配置
- name: my-pod #容器名字
image: harbor:443/library/image:httpd #镜像地址
ports: #定义服务端口
- protocol: TCP #使用的协议
containerPort: 80 #容器端口
# 启动资源
kubectl apply -f pod.yaml
# 查看
kubectl get pod
# 关闭资源
kubectl delete -f pod.yaml
# 查询一个资源对象文件(如果不会写,可以找到一个已经存在的资源,查看)
kubectl get deployment.apps my-deploy -o yaml
kubectl get deployment.apps my-deploy -o wide
kubectl get deployment.apps my-deploy -o json
# 获取资源对象文件模板
# pod模板案例
kubectl run pod --image=harbor:443/library/image:yum --dry-run=client -o yaml
# deployment模板案例
kubectl create deployment test-deploy --image=harbor:443/library/image:yum --dry-run=client -o yaml
4.ConfigMap映射
# 创建configMap
kubectl create configmap nginx-conf --from-file=nginx.conf
# 查看configMap
kubectl get configmaps
# yaml文件内配置
configMap:
name: nginx-conf #ConfigMap名字