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
。