# K8s ## kubectl ```bash ###################### 查看信息 ###################### kubectl get pod -n kube-system -owide # 查看默认命名空间pod kubectl --kubeconfig config-test get pod -A # 指定配置文件,查看所有pod # 查看kube系统组件状态 kubectl get nodes # 查看node状态 kubectl get namespace # 命名空间 kubectl get svc # 查看services kubectl get deployment,pod,service -n test # 查看test命名空间 deployment,pod,service kubectl get endpoints # 获取endpoints列表 kubectl get pod nginx-lb-b99649675-9hkb5 -o yaml # pod详细信息 kubectl describe node xxx # 显示 node 的详细信息 kubectl -n test describe pod xxx # 显示 pod 的详细信息 kubectl describe svc -n kube-system # 查看svc网路明细 ###################### 创建pod ###################### kubectl create namespace test # 创建命名空间 kubectl create -f Deployment/nginx.yml # 部署nginx kubectl get deployment -n test -owide # 查看test命名空间 deployment kubectl -n test scale deployment/nginx-deployment --replicas=1 # 调整Deployment副本数,replicas=0 重启 kubectl create deployment nginx --image nginx --port 80 --replicas=1 # 创建 nginx pod kubectl -n test expose deployment nginx-deployment --type=NodePort --port=80 # 添加NodePort # kubectl port-forward service/nginx-lb 80:8080 ###################### 查看pod日志 ###################### kubectl -n test logs -f nginx-deployment-585449566-vglh4 # 查看log ###################### 进入pod ###################### kubectl -n test exec -it nginx-deployment-585449566-vglh4 -- bash ###################### 释放pod ###################### kubectl delete pod --all # 删除所有 Pod kubectl delete service nginx-lb # 删除service kubectl delete deployment,pod,service web1 # 删除deployment,pod,service kubectl delete pod test-web --force --grace-period=0 # 强制删除,设置优雅关闭时间为0 kubectl delete -f recommended.yaml # 基于yml删除 kubectl delete pod,service --all -n kubernetes-dashboard # 清理指定命名空间po,svc ###################### app部署管理 ###################### kubectl set image deployment/{应用名称} {容器名称}={镜像库地址} -n {命名空间} # 更新镜像版本 kubectl cordon node主机 # 将k8s-node1节点设置为不可调度模式 kubectl drain node主机 # 将当前运行在k8s-node1节点上的容器驱离 kubectl uncordon node主机 # #执行完维护后,将节点重新加入调度 kubectl describe node k8s-m1| grep Taints # 查看master only状态 kubectl taint nodes k8s-m1 node-role.kubernetes.io/master- # 希望master当node使用 kubectl taint nodes k8s-m1 node-role.kubernetes.io/master=:NoSchedule # 还原taint ###################### labels标签管理 ###################### kubectl get node --show-labels # 查看节点 labels kubectl -n test get pod --show-labels # 查看pod labels kubectl delete pod,svc -l name= # 删除所有包含某个 label 的pod 和 service kubectl label nodes node主机 uname=snake # 节点设置标签 kubectl label nodes node主机 uname- # 节点删除标签 kubectl label nodes k8s-s1 standalone=true # 节点设置标签... ###################### create 和 apply ###################### kubectl create -f pod.yaml kubectl apply -f pod.yaml # apply 可以重复执行,create 不行; # 如果在单个文件上运行操作已创建资源,则create和apply基本相同。 但是, apply允许您在目录下的多个文件上同时创建和修补。 ###################### yaml ###################### kubectl create deployment web --image=nginx -o yaml --dry-run >> nginx.yml # 生成yaml配置文件 kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml >> nginx-web1.yaml # 对外暴露访问端口,生成yaml配置文件 kubectl edit deployment/nginx-deployment -n test # 编辑部署文件 ###################### istio ###################### kubectl get virtualservice # 查看虚拟服务 kubectl get destinationrule # 查看虚拟服务详情 kubectl describe virtualservice # 自动注入代理边车 kubectl label namespace istio-injection=enabled ###################### more ###################### # cp文件 kubectl -n test cp busybox-x86_64 cmdb:/home/app/busybox # 重启 pod kubectl get pod -n -o yaml | kubectl replace --force -f - # 修改网络类型 kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}' # 查看前一个 pod 的日志,logs -p 选项 kubectl logs --tail 100 -p user-klvchen-v1.0-6f67dcc46b-5b4qb > pre.log ###################### docker ###################### # docker资源限制 --cpuset-cpus=0 多核CPU下绑定cpu核心标记 0-3范围 0,3多个 --cpu-shares=1024 繁忙时段所占CPU比例 -m 限制内存 -m 512m 限制512m内存 cpu-period: 设定docker运行容器重新分配CPU时间的周期(单位微秒) 1000微秒=1毫秒 最大值1000000=1秒 cpu-quota: 在设置周期内分配给当前容器的CPU执行时间 # 更新运行中的docker限制 docker update -m 4000m --memory-swap -1 ${name} ```