kubernetes增删改查,k8s_crud

kubernetes增删改查,k8s_crud

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都可以

  1. resource
  • kubectl api-resources 查看所有api资源对象
  • kubectl api-versions 查看资源版本
  • kubectl explain pod 查看资源对象拥有的一级属性字段
  • kubectl explain svc –recursive 查看资源对象拥有的所有属性字段
  • kubectl explain svc.spec.ports 查看到service下的spec下的ports字段的信息
  1. 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}'
  1. logs,日志
    kubectl logs igo-pod –previous
    kubectl logs igo-pod -c igo-container 多container场景指定具体container
    kubectl logs deploy/igo-deployment
  2. 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

Avatar photo
igoZhang

互联网应用,虚拟化,容器

评论已关闭。