minikube安装
(首先电脑版本需要支持!)
# 启动集群
minikube start
# 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具
kubectl get node
# 停止集群
minikube stop
# 清空集群
minikube delete --all
# 安装集群可视化 Web UI 控制台
minikube dashboard
部署应用到集群中
部署一个 nodejs web 应用,源码地址:Github
相关命令:
# 切换命名空间
kubens kube-system # kubens 需要手动安装
# 创建命名空间
kubectl create namespace yuming # namespace缩写成ns也可以
# 获取命名空间
kubectl get ns
# 删除命名空间
kubectl delete namespaces test-ns
# 创建pod
kubectl create -f https://k8s.io/examples/pods/pod-nginx.yaml --record
# 部署应用deployment, 带record参数时,创建这些版本时执行的 kubectl 命令,都会被记录下来
kubectl apply -f app.yaml --record
# 查看 deployment
kubectl get deployment
# 查看deployment详情,含扩缩容、滚动更新等事件
kubectl describe deployment nginx-deployment
# 查看 ReplicaSet
kubectl get rs
# 查看 pod
kubectl get pod -o wide
# 查看 pod 详情,
kubectl describe pod pod-name
# 查看节点
kubectl get nodes
# 查看节点详情
kubectl describe nodes
# 查看pvc
kubectl get pvc -l app=nginx # -l 是过滤标签
# 查看详细job
kubectl describe jobs/pi
# 查看 pod 的 log
kubectl logs pod-name
# 进入 Pod 容器终端, -c container-name 可以指定进入哪个容器(因为一个pod中可以有一个或多个容器,注意副本数指的是pod的数量,不是pod中容器数量)。
kubectl exec -it pod-name -- bash
# 伸缩扩展副本(副本就是相同的pod的数量)
kubectl scale deployment test-k8s --replicas=5
# 把集群内端口映射到节点(8090是外部节点端口,8080是内部容器端口)
kubectl port-forward pod-name 8090:8080
# 查看DaemonSet、StatefulSet对象的历史版本,本质也是一个对象
kubectl get controllerrevision
# 查看某个历史版本的详情
kubectl describe controllerrevision fluentd-elasticsearch-64dc6799c9
# 查看历史版本(每次修改pod文件都会生成一个版本,扩缩容不算,每个history版本都是一个Replica)
kubectl rollout history deployment test-k8s
# 回到上个版本
kubectl rollout undo deployment test-k8s
# 回到指定版本
kubectl rollout undo deployment test-k8s --to-revision=2
# 查看rollout操作状态
kubectl rollout status deployment/nginx-deployment
# 暂停;暂停期间对deployment的修改不会创建新的 ReplicaSet
kubectl rollout pause deployment/nginx-deployment
# 恢复;暂停到恢复期间,对 Deployment 进行的所有修改,最后只会触发一次“滚动更新”,生成一个ReplicaSet
kubectl rollout resume deployment/nginx-deployment
# 更新了yaml后,更新应用
kubectl replace -f nginx.yaml
# 修改deployment对象(修改在远程的ETCD里的API 对象,本质是把 API 对象的内容下载到了本地文件,修改完成后再提交上去。)
kubectl edit deployment/nginx-deployment
# 直接修改 nginx-deployment 所使用的镜像。会生成一个history版本
kubectl set image deployment/nginx-deployment nginx=nginx:1.91
# 删除部署
kubectl delete deployment test-k8s
更多命令:
# 查看全部
kubectl get all
# 重新部署
kubectl rollout restart deployment test-k8s
# 命令修改镜像,--record 表示把这个命令记录到操作历史中
kubectl set image deployment test-k8s test-k8s=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v2-with-error --record
# 暂停运行,暂停后,对 deployment 的修改不会立刻生效,恢复后才应用设置
kubectl rollout pause deployment test-k8s
# 恢复
kubectl rollout resume deployment test-k8s
# 把已经部署的资源输出到yaml文件
kubectl get deployment test-k8s -o yaml >> app2.yaml
# 删除全部资源
kubectl delete all --all
命令共性小结:
create -f # 创建pod、命名空间
apply -f # 部署应用deployment、service
get node/deployment/service/pod/ # 查看节点、应用、服务、pod
describe # 查看详情
scale ... --replicas=5 # 伸缩扩展副本
rollout # 回退版本
delete # 删除
logs # 查看日志
exec -it ... --bash # 进入pod中某个容器
kubens 使用
- k8s每次查看指定命名空间的资源都需要加 -n 命名空间 来指定命名空间;
- 我们可以通过开源项目kubens来切换当前命名空间,切换命名空间后,就无需每次都使用 -n 命令来指定命名空间了
# 安装
yum install -y git ##安装git
git clone https://github.com/ahmetb/kubectx.git ##clone项目
cp kubectx/kube* /usr/local/bin/ ##把相关文件放到可执行目录里
# 使用
kubens ##列出当前命名空间 (当前所在的命名空间会用黑底标出)
kubens kube-system ##切换命名空间为kube-system
kubectl get pods ##切换命名空间后,无需指定命名空间,即可查看切换后的命名空间资源
kubens - #在最近两个命名空间来还切换 类似 cd -
额外参数
- –record 记录录下你每次操作所执行的命令,以方便后面查看。