一、NameSpace
对资源进行隔离,比如开发环境和测试环境等。
- 命令
# 查看所有命名空间的资源
kubectl get pod -A
# 查看单独某个命名空间下的资源
kubectl get pod -n <空间名称>
# 查看所有命名空间
kubectl get ns
# 创建命名空间
kubectl create ns <空间名称>
# 上次命名空间
kubectl delete ns <空间名称>
2、yaml创建
goods.yaml
apiVersion: v1
kind: Namespace
metadata :
name: goods
创建kubectl apply -f goods.yaml
删除kubectl delete -f nginx.yaml
二、Pod
运行中的一组容器,所以一个pod里有一个或者多个容器。
1、命令
# 创建pod
kubectl run pod名称 --image=镜像名称
kubectl run mynginx --image=nginx
# 查看pod细节
kubectl describe pod mynginx
# 删除pod
kubectl delete pod pod名称 -n 命名空间名称(默认是default,不用谢-n)
kubectl delete pod mynginx -n default
2、yaml
apiVersion: v1
kind: Pod
metadata :
labels:
run: mynginx
name: mynginx
# namespace: default
spec:
containers :
- image: nginx
name: mynginx
3、平台界面操作
4、查看日志
kubectl logs -f pod名称
kubectl logs mynginx
5、查看pod的容器访问地址
k8s会给每个pod分配ip,具体网络端是在初始化master的时候配置的(pod-network-cidr)
kubectl get pod -owide
目前之能curl访问,因为没对外暴露地址,浏览器还不能访问成功。
6、登录pod
kubectl exec -it mynginx /bin/bash
三、Deployment
控制Pod,使Pod拥有多副本,自愈,扩缩容等能力
- 创建删除部署
# 创建部署
kubectl create deployment 部署名称 --image=镜像name
# 获取所有部署
kubectl get deployment
# 删除部署
kubectl delete deployment 部署名称
2、自愈能力
# 用这种办法创建的pod,如果删了pod,就删了
kubectl run pod名称 --image=镜像名称
# 用这种办法创建的pod,如果删了,会自动再创建一个pod
kubectl create deployment nginx0112 --image=nginx
这就是这两者创建pod的区别。所以以后我们再部署pod的时候都是以这种方式部署,防止pod意外宕机,造成损失。
3、多副本
把应用部署多份pod
kubectl create deployment 部署名称 --image=镜像name --replicas=<部署的份数>
1)界面操作
2)yaml创建
这可以百度下
4、扩缩容能力
kubectl scale deployment/<部署名> --replicas=<扩缩容数量> [-n <命名空间>]
# 扩缩容数量如果你写的比当前 pod数量多就是扩容,比当前pod数量少就是缩容。
1)yaml
kubectl edit deploy <应用名称>
# 这个命令会直接进入编写yaml的操作,你只要把参数该成你想扩缩容的数量即可完成
2)界面操作
5、滚动更新
1)滚动更新
流程:拉一份新镜像,启动新镜像,如果启动成功就会把旧镜像下掉。启动一个pod下掉一个。
kubectl set image deployment/<应用名称> <镜像名称>=版本号 --record
kubectl set image deployment/mynginx nginx=1.16.1 --record
2)滚动回退
# 查看应用的版本信息
kubectl rollout history deployment/<应用名称>
kubectl rollout history deployment/mynginx
#回退到指定版本
kubectl rollout undo deployment/<应用名> --to-revision=<版本号>
kubectl rollout undo deployment/mynginx --to-revision=1
#回退到上个版本
kubectl rollout undo deployment/mynginx