Kubernetes中所有的内容都抽象为资源,资源实例化(被调用、被执行了)之后,叫做对象;
常用资源类型
资源类型 | 资源名称 |
---|---|
集群级别资源 | Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding |
工作负载资源(workload) | Pod: Kubernetes中最小的负载单元 ReplicaSet:简称RC,管理Pod的创建,通过标签控制副本数 Deployment:控制器,通过控制RC去创建Pod StatefulSet:主要用于有状态服务 DaemonSet:在每个节点都运行一个Pod组件 Job、CronJob:为了(批)处理、在kubernetes v1.11中被废弃的 ReplicationController |
服务发现及负载均衡资源 | Service、Ingress… 配置与存储类型:Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷,现在市面上的大多数存储都是支持CSI。) |
特殊类型存储卷 | ConfigMap(当成配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给环境,比如把运行Pod的所在Node的NodeIp传进Pod) |
元数据(metadata) | HPA、PodTemplate、LimitRange(资源限制) |
标签
kubernetes_lables是一个KV类型的数据,可以附着于任何资源之上,可以创建时指定,也可以按需随时添加
kubectl [command] [TYPE] [NAME] [flags]
TYPE不分单双数,比如POD,PODS都可以
查询
- resource
- kubectl api-resources 查看所有api资源对象
- kubectl api-versions 查看资源版本
- kubectl explain pod 查看资源对象拥有的一级属性字段
- kubectl explain svc –recursive 查看资源对象拥有的所有属性字段
- kubectl explain svc.spec.ports 查看到service下的spec下的ports字段的信息
- pods
- kubectl get pods –show-labels #查看pod对象,并显示标签
- kubectl get pods –all-namespaces
- kubectl get pods -A 等于上一条命令
- kubectl get pods -o wide 显示更详细的信息
- kubectl get pods -l app=mysql
- kubectl get pods -l “app in (myapp)”
- kubectl get pod igo-pod -o yaml >/igo-pod.yaml
按重启次数排序 - kubectl get pods –sort-by=’.status.containerStatuses[0].restartCount’
获取包含 app=igoapp 标签的所有 Pods 的 version 标签
kubectl get pods --selector=app=igoapp -o \
jsonpath='{.items[*].metadata.labels.version}'
- logs,日志
kubectl logs igo-pod –previous
kubectl logs igo-pod -c igo-container 多container场景指定具体container
kubectl logs deploy/igo-deployment - others
- kubectl get nodes –show-labels
- kubectl describe nodes igo-node
- kubectl get services
- kubectl get pv –sort-by=.spec.capacity.storage
- kubectl events –types=Warning
增加(创建)
kubectl create -f kubernetes-demo.yaml 使用预定义文件创建资源
kubectl apply -f ./igo01.yaml -f ./igo02.yaml 使用多个文件
kubectl apply -f https://k8s.io/examples/application/mysql/mysql-pv.yaml
kubectl run nginx –image=nginx –replicas=3 –dry-run
kubectl run -it –rm –image=mysql:5.6 –restart=Never mysql-client — mysql -h mysql -ppassword
- 创建一个打印 “Hello World” 的 Job
kubectl create job hello –image=busybox:1.28 — echo “Hello World” - 创建一个打印 “Hello World” 间隔1分钟的 CronJob
kubectl create cronjob hello --image=busybox:1.28 --schedule="*/1 * * * *" -- echo "Hello World"
kubectl label pods/pod-demo env=production 添加env标签
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000000"
---
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
EOF
修改
kubectl label pods/pod-demo env=testing –overwrite 修改env标签
kubectl scale –replicas=3 rs/igo 将igo副本集调整到3副本
如果当前是2,调整到3
kubectl scale –current-replicas=2 –replicas=3 deployment/mysql
监听本地5000转发到igo-deployment创建的pod的6000端口
kubectl port-forward deploy/igo-deployment 5000:6000
删除
kubectl label pods igo-pod bar- 删除igo-pod容器的bar标签
kubectl delete pod igo-pod –now 立刻删除
kubectl delete pods,deployment,svc -l name=myLabel
kubectl delete pvc mysql-pv-claim
kubectl delete pv mysql-pv-volume
kubectl delete -f ./igopod.json
交互
kubectl exec –stdin –tty igo-pod — /bin/sh
kubectl top pod POD_NAME –sort-by=cpu
kubectl cp /tmp/foo_dir igo-pod:/tmp/bar_dir