kebectl 部署常用操作

2020/05/20 k8s

kubectl安装 https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#verify-kubectl-configuration

kebectl 部署常用操作

配置多集群

# 2个集群配置config、rec_config
$ export KUBECONFIG=$KUBECONFIG:~/.kube/config:~/.kube/rec_config
$ source ~/.bash_profile
$kubectl config view

查看集群

kubectl config get-contexts

K8S context 方式切换集群

kubectl config use-context $(K8S)

起deployment、service、cronJob、ingress

kubectl apply -f web-click.yaml

delete

kubectl delete -f web-click.yaml

获取deployment

kubectl get deployment –namespace=bigdata

pod

kubectl get pods --namespace=bigdata |grep adc
kubectl get pods  -o wide -n bigdata # 显示详细信息 如ip

查看pod日志

kubectl logs adc-web-click-5f64b5fc-6qs6w  -n bigdata

查看pod崩溃重启前的日志

kubectl logs gateway-canary-85b8fcd898-xnqvn --tail 100 -n adx-prod --previous

往前追日志:向前追4000行,从3000开始打印前1000行

kubectl logs gateway-canary-64995d5664-xrqtp --tail 40000 -n adx-prod --previous | tail -n +30000 | head -n 1000

实时记录日志(对云服务厂商端coolshell抓不到情况作为补充措施,请在本地执行以免影响线上机器)

kubectl logs gateway-canary-57b68b68f4-ql44z -n adx-prod --tail=0 -f| tee -a log.txt

pod操作


#删除deployment
kubectl delete deployment adc-web-click --namespace=bigdata

# 查找服务
 kubectl get svc -n bigdata

# 删除服务
kubectl delete svc adc-web -n bigdata

# 查看详细信息
kubectl describe pods adc-web-click-5f64b5fc-5v5n4 -n bigdata

# 查看ingress
kubectl get ingress -n bigdata
kubectl describe ingress adc-ingress -n bigdata

# cronjob查看
kubectl get cronjob smcheck-cronjob  -n bigdata

## 监控job
kubectl get jobs --watch -n bigdata

# Replace "hello-4111706356" with the job name in your system
pods=$(kubectl get pods --selector=job-name=smcheck-cronjob-1589540820 --output=jsonpath={.items[*].metadata.name})

kubectl get pods --selector=job-name=smcheck-cronjob-1589540640

smcheck-cronjob-1589536140y

查看容器

kubectl exec -it [pod name] --container [container name] -n [namespace] [执行命令]

kubectl exec -it callbackconsume-job-758874f99d-pgmtf –container adc-callback -n bigdata ls config/debug

查看日志

kubectl logs callbackconsume-job-758874f99d-pgmtf -n bigdata

下载日志

kubectl  logs -f  sort-65b8b976c8-4p78m -n recommend-prod > ~/Downloads/sort-65b8b976c8-4p78m.log

# -f 代表持续
# -p 可获取重启pod前面的日志内容

将pod分配给节点

https://kubernetes.io/zh/docs/concepts/configuration/assign-pod-node/

查看节点 显示标签

kubectl get nodes --show-labels

添加标签

kubectl label nodes <node-name> <label-key>=<label-value>

添加 nodeSelector 字段到 pod 配置中

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd

kubectl apply -f https://k8s.io/examples/pods/pod-nginx.yaml 命令,pod 将会调度到将标签添加到的节点上。 可以通过运行 kubectl get pods -o wide 并查看分配给 pod 的 “NODE” 来验证其是否有效

pod滚动更新

https://cloud.tencent.com/developer/article/1772150

存活、就绪和启动探针

https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

就绪探针:应用会暂时性的无法为请求提供服务。 如应用在启动时可能需要加载大量的数据或配置文件,或是启动后要依赖等待外部服务。 在这种情况下,既不想杀死应用,也不想给它发送请求。 Kubernetes 提供了就绪探针来发现并缓解这些情况。

  • 容器所在 Pod 上报还未就绪的信息,并且不接受通过 a’nl Service 的流量。

Probe 有很多配置字段,可以使用这些字段精确地控制启动、存活和就绪检测的行为:

  • initialDelaySeconds:容器启动后要等待多少秒后才启动启动、存活和就绪探针。 如果定义了启动探针,则存活探针和就绪探针的延迟将在启动探针已成功之后才开始计算。 默认是 0 秒,最小值是 0。
  • periodSeconds:执行探测的时间间隔(单位是秒)。默认是 10 秒。最小值是 1。
  • timeoutSeconds:探测的超时后等待多少秒。默认值是 1 秒。最小值是 1。
  • successThreshold:探针在失败后,被视为成功的最小连续成功数。默认值是 1。 存活和启动探测的这个值必须是 1。最小值是 1。

  • failureThreshold:探针连续失败了 failureThreshold 次之后, Kubernetes 认为总体上检查已失败:容器状态未就绪、不健康、不活跃。 对于启动探针或存活探针而言,如果至少有 failureThreshold 个探针已失败, Kubernetes 会将容器视为不健康并为这个特定的容器触发重启操作。 kubelet 遵循该容器的 terminationGracePeriodSeconds 设置。 对于失败的就绪探针,kubelet 继续运行检查失败的容器,并继续运行更多探针; 因为检查失败,kubelet 将 Pod 的 Ready 状况设置为 false

  • terminationGracePeriodSeconds:为 kubelet 配置从为失败的容器触发终止操作到强制容器运行时停止该容器之前等待的宽限时长。 默认值是继承 Pod 级别的 terminationGracePeriodSeconds 值(如果不设置则为 30 秒),最小值为 1。 更多细节请参见探针级别 terminationGracePeriodSeconds

Search

    Table of Contents