k8s之命令式编程
2024-08-25 00:01:00  阅读数 280

Kubernates提供声明式编程命令式编程两种相对的高级编程概念

kubectl -h #查看支持的命令 --kubeconfig参数 指定连接Kubernetes集群的配置文件(支持远程连接)

kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。 您可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件,默认文件/etc/kubernetes/admin.conf
优先级--kubeconfig > KUBECONFIG 环境变量 > $HOME/.kube/config

常用的命令:

空间管理

  • 创建空间
kubectl create namespace test
  • 查看空间
kubectl get namespace #或者简写 kubectl get ns
  • 查看空间下存在的资源
kubectl get  pod,service,deployment -n default

可以简写成:

kubectl get  po,svc,deploy -n default
  • 删除指定空间下所有资源
kubectl delete all --all -n default #空间不删除
#或者通过删除命名空间
kubectl delete namespace/ingress-nginx 

部署运行

  • 创建运行Pod
kubectl run nginx-test --image=nginx   -l app=nginx -n default
  • 创建运行Pod并生成Service对象
kubectl run nginx-test --image=nginx  --expose=true --port=80  -l app=nginx  -n default
  • 创建Deployment
kubectl create deployment nginx-dm --image=nginx -r 2 -n default
  • 通过Pod创建Service
kubectl create service clusterip nginx-svc --image=nginx --tcp=8000:80  -n default
  • 通过Deployment创建Service
kubectl expose  deployment nginx-dm  --port=8000 --target-port=80 --name=nginx-http  -n default

声明式文件

  • 创建更新
kubectl apply -f ./pod.yaml
cat ./pod.yaml | kubectl apply -f -

apply 如果资源不存在会创建,如果存在会自定对比更新

变更升级

  • 缩放升级
#先将副本调整0
kubectl scale deployment nginx-dm -n default --replicas=0 
#再改回原副本数
kubectl scale deployment nginx-dm -n default --replicas=5
  • 滚动升级(推荐)
#重启
kubectl rollout restart deployment/nginx-dm -n default
#查看状态
kubectl rollout status deployment/nginx-dm -n default
#查看历史版本
kubectl rollout history deployment/nginx-dm -n default
#还原到上一个版本
kubectl rollout undo deployment/nginx-dm -n default #--to-revision=2 指定回滚的版本
  • replace强制先删再建
kubectl get deploy/nginx-dm -o yaml -n default | kubectl replace -f- --force

分析排错

  • 进入容器
kubectl exec nginx -it -n default -- /bin/bash
  • 查看详细信息
kubectl describe  pod/nginx  -n default
  • 查看日志
kubectl logs  nginx -it -n default -- /bin/bash
  • 文件拷贝
#拷贝Pod中文件到宿主机
kubectl cp nginx:/tmp/foo /tmp/bar
#拷贝宿主机文件到Pod中
kubectl cp  /tmp/foo  nginx:/tmp/bar

集群配置

  • 查看API资源
#查看所有资源
kubectl api-resources
#查看位于名称空间的资源
kubectl api-resources --namespaced=true
  • 查看集群配置
kubectl config view
  • 查看集群信息
kubectl cluster-info

上下文管理

  • 设置/创建上下文
kubectl config set-context cxt-test --namespace=ns-test --user=kubernetes-admin --cluster=kubernetes-admin
  • 查看当前上下文
kubectl config current-context
  • 切换到上下文test
kubectl config use-context test

标签管理

  • 显示Pod标签
kubectl get po --show-labels -n default
  • 设置Pod标签
kubectl label pods nginx run=nginx -n default
  • 更新Pod标签
kubectl label pods nginx run=nginx-test --overwrite -n default
  • 删除Pod标签"-"
kubectl label pods nginx run-
  • 设置所有Pod标签
kubectl label pods --all status=unhealthy  -n default