deployment
- deployment
- 创建指定数量的pod
- 检查pod健康状态和数量
- 创建deployment
# 使用Kubard创建
# run创建
kubectl run nginx-dep1 --image=nginx:1.8 --replicas=1 # 创建(只生成一个副本)
kubectl get deployment # 查看
# 使用yaml文件创建
vim ngx-dep.yaml # 创建yaml文件
kubectl apply -f ngx-dep.yaml # 执行yaml文件
ngx-dep.yaml文件
apiVersion: apps/v1 # 指定api版本信息
kind: Deployment # 指定创建的是什么,创建对象的类型
metadata: # 指定原数据信息
name: ngx-dep3 # 创建的deployment的名称
labels: # 设置标签(标签名、标签值),作用:过滤筛选特定容器
apps: ngx # 标签名称:标签的值 | (名称可以任意取)
type: weservice
spec: # 设置deployment中的详细信息
replicas: 1 # 指定副本数量
selector: # 选择器
matchLabels: # 标签选择器
app: ngx # 过滤app标签,app的值为ngx的
template: # 创建pod的时候,基于什么模板来创建pod
metadata: # 创建的pod的原数据信息
labels: # 创建的pod的标签
app: ngx
type: webService
spec: # 指定创建的pod的具体的设置信息
containers:
- name: nginx
image: nginx:1.8
状态查询
- 查看k8s对象状态
- kubectl get 资源类型 [-0 wide 查看更详细的信息]
- 资源类型:
- node
- pod
- service
- deployment
- namespace
- … …
- 选项
- n:指定名称空间(namepase)
- A:显示所有名称空间中的资源
- 资源类型:
- kubectl describe 资源类型
- kubectl describe pod pod_name -n namespace
- 默认名称空间中:kubectl describe pod myweb-5b79bf86d4-9cs2h
- 其他名称空间中:kubectl describe pod kuboard-5cb789755d-44p9j
- kubectl describe pod pod_name -n namespace
- kubectl logs pod_name
- 显示pod中的容器,在运行中产生的日志信息
- 进入容器
- kubectl exec -it pod_name /bin/bash
- kubectl get 资源类型 [-0 wide 查看更详细的信息]
发布应用
通过yaml文件创建deployment,通过deployment创建pod,发布pod应用
ngx-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: ngx-svc
labels:
app: ngx
spec:
selector:
app: ngx
ports: # 把pod中容器的端口暴露出来
- name: nginx-ports
protocol: TCP # 使用的是什么协议
port: 80 # 暴露80端口(pod和service通信的端口)
nodePort: 32002 # 映射的端口:30000-32767(客户端访问的)
targetPort: 80 # 将收到请求转发到pod的80端口
type: NodePort # 类型
# 创建
kubectl apply -f ngx-svc.yaml
# 查看
kubectl get service
# 通过任意一个worker节点的指定端口号即可访问
# 主要通过selector的标签选择器来实现pod和service的关联
服务伸缩(scalling)
如何实现自动伸缩?
根据客户端的请求流量实现弹性管理(修改副本数量)
# 编辑pod对应的yaml文件
vim ngx-dep.yaml
# 修改 replicas: 1 # 指定副本数量
# 再重新创建就可以了
kubectl apply -f ngx-dep.yaml
滚动更新
集群中有多个容器,在更新的时候,多个容器,
依次发生变化
创建出来一个pod,更新掉一个pod
# 查看所有的pod
kubectl get pods
# 查看pod的详细信息
kubectl describe pod nginx-dep1-6dd5d75f8b-zns64
vim ngx-dep.yaml
# 通过yaml文件,重新创建pod
kubectl apply -f ngx-dep.yaml
# 查看指定标签app=ngx的pod的状态
watch kubectl get pods -l ngx
- 实际使用
- 先要编写Dockerfile,通过Dockerfile创建镜像
- 系统镜像
- 运行镜像(项目运行的环境)
- 项目镜像(写好的项目)
- 将镜像文件发布到dockerhub上
- 通过编写yaml文件,从dockerhub上下载镜像
- 完成更新
- 先要编写Dockerfile,通过Dockerfile创建镜像
评论区