Kubernetes 常用命令集
Kubernetes 常用操作笔记###
kubectl 命令行自动补全#####
## bash-completion-extras需要epelrepo源
yum install -y bash-completion bash-completion-extras
# 配置自动补全
source /usr/share/bash-completion/bash_completion
# 临时生效kubectl自动补全
source <(kubectl completion bash)
## 只在当前用户生效kubectl自动补全
echo 'source <(kubectl completion bash)' >>~/.bashrc
## 全局生效
echo 'source <(kubectl completion bash)' >/etc/profile.d/k8s.sh && source /etc/profile
# 生成kubectl的自动补全脚本
kubectl completion bash >/etc/bash_completion.d/kubectl
Kubectl命令行管理对象
类型 命令 描述
基础命令
create 通过文件名或标准输入创建资源。
expose 将一个资源公开为一个新的Kubernetes服务。
run
创建并运行一个特定的镜像,可能是副本。
创建一个deployment或job管理创建的容器。
set 配置应用资源。
修改现有应用程序资源。
get 显示一个或多个资源。
explain 文档参考资料。
edit 使用默认的编辑器编辑一个资源。
delete 通过文件名、标准输入、资源名称或标签选择器来删除资源。
部署命令
rollout 管理资源的发布。
rolling-update 执行指定复制控制的滚动更新。
scale 扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job。
autoscale 创建一个自动选择扩容或缩容并设置Pod数量。
集群管理命令
certificate 修改证书资源。
cluster-info 显示集群信息。
top 显示资源(CPU/Memory/Storage)使用。需要Heapster运行。
cordon 标记节点不可调度。
uncordon 标记节点可调度。
drain 维护期间排除节点。
taint
kubectl get all # 查看所有
kubectl get all --all-namespaces
kubectl get pods|deployments.|replicasets.|service -o wide
kubectl get nodes|pods|service --show-labels # 查看node标签
# 创建资源,更新资源
kubectl create -f xxx.yml
kubectl apply -f xxx.yml
# 删除资源
kubectl delete pods|deployments.|replicasets.|service xxx_name
kubectl delete -f xxx.yml
# 编辑内存里配置文件.应该是及时修改后生效,但测试并未生效
kubectl edit daemonsets. kube-proxy --namespace=kube-system
kubectl edit service nginx-svc
kubectl api-versions # 查看k8s当前支持的api版本
kubectl run busybox --rm -it --image=busybox /bin/sh # 临时启用一个工具箱
kubectl apply -f httpd.v1.yml --record # 登记到revision,用于回滚
kubectl rollout history deployment httpd # 查看历史记录,为回滚做准备
kubectl rollout undo deployment httpd --to-revision=1 # 回滚到版本1
kubectl exec mypod-id touch /mydata/hello # 到Pod的container里执行指令
kubectl exec mypod-id df | grep data # 到Pod里执行指令
kubectl create configmap game-config --from-file=docs/gameconfig/ # 目录内含有多个配置文件(每个配置文件里可以有很多内容)
journalctl -l -u kubelet # 查看kubelet日志
kubectl get pods -o yaml # 配置yaml格式详情
kubectl get endpoints # 查看终端服务节点
kubeadm reset # 重置K8S集群
# 滚动升级
kubectl create deploy nginx-test --image=nginx:1.16
kubectl scale deployment nginx-test --replicas 10 # --replicas 副本集数量
如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展示例:
# 创建pod和service
$ kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80
service "php-apache" created
deployment "php-apache" created
# 创建autoscaler
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
kubectl get hpa
# 增加负载
kubectl run -i --tty load-generator --image=busybox /bin/sh
Hit enter for command prompt
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
# 过一会就可以看到负载升高了
kubectl get hpa
# autoscaler将这个deployment扩展为7个pod
kubectl get deployment php-apache
# 删除刚才创建的负载增加pod动降回1个
kubectl get hpa
故障排查主要使用
kubectl logs pod_name # 查看pod内进程输出 (查看最后200行 kubectl logs --tail=200 pod_name 或最后1小时 --since=1h )
kubectl describe pods|deployments.|replicasets.|service xxx_name
kubectl top node node1 --v=8 #开启debug模式输出.使用top指令查看资源情况,需部署metric-service
作者:一毛
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不应该感到悲伤。记住一句话:越努力,越幸运。