1、概念
陈述式资源管理方式(命令行)
管理(增删改查)
创建资源对象:pod、控制器、service,用声明式yaml文件写
2、相关命令
陈述式命令的开头:kubectl 命令行工具
#查看集群的版本
kubectl version
#查看集群资源对象的版本和简写
kubectl api-resources
#查看集群的信息
kubectl cluster-info
#查看日志
tail -f /var/log/messages
#查看集群的日志
journalctl -u kubelet -f
#查看集群的基本信息
kubectl get cs
#查看集群组件的健康状态
kubectl get node
#查看节点的状态
kubectl get pod
#查询默认命名空间里面当前运行的pod default.
NAME READY STATUS RESTARTS AGE
coredns-7f89b7bc75-52pwb 1/1 Running 0 43h
coredns-7f89b7bc75-v4m7q 1/1 Running 0 43h
name:pod的名称 ready:1/1正常状态
status:running运行 表明pod属于正常整体
restarts:pod的重启次数。自愈功能,pod非正常状态下会自动进行重启,状态正常之后就不会再重启
AGE:当前pod运行的时间
#创建命名空间
kubectl create ns xy102
#删除命名空间
kubectl delete namespaces xy102
kubectl get all
#查看当前命名空间的所有资源
kubectl get pod -o wide
#查看pod的详细信息,pod被部署在哪个节点上
Deployment的部署方式:资源对象的部署方式叫做deployment
无状态部署方式,pod的名称是随机生成的
1、创建时可以指定副本数(pod)
2、实现滚动更新,先更新一个,更新好了之后再更新余下的pod
3、自我修复,默认策略是重启容器,删除pod相当于重启pod
基于控制器(资源对象)deployment创建的pod,delete pod相当于重启pod,不能删除pod
4、支持回滚。如果更新有问题可以恢复到上一个版本
5、pod数量的扩容和缩容(手动)
3、Deployment的部署方式
资源对象的部署方式叫做deployment
无状态部署方式,pod的名称是随机生成的
1、创建时可以指定副本数(pod)
2、实现滚动更新,先更新一个,更新好了之后再更新余下的pod
3、自我修复,默认策略是重启容器,删除pod相当于重启pod
基于控制器(资源对象)deployment创建的pod,delete pod相当于重启pod,不能删除pod
4、支持回滚。如果更新有问题可以恢复到上一个版本
5、pod数量的扩容和缩容(手动)
相关命令:
#创建pod
kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3 -n xy102
#删除pod,delete pod相当于重启pod,不能删除pod
kubectl delete pod nginx1 -n xy102
kubectl run nginx2 --image=nginx:1.22 -n xy102
#这种方式创建pod,delete pod是真正的删除
#删除deployment
kubectl get deployments.apps -n xy102 nginx1
kubectl delete deployments.apps nginx1 -n xy102
#查看pod的详细信息
kubectl describe pod -n xy102 nginx1-654cb56c4-66rrt
#查看资源对象的详细信息
kubectl describe deployments.apps -n xy102 nginx1
kubectl logs nginx1-654cb56c4-66rrt -n xy102
#查看日志
#进入pod内的容器
kubectl exec -it -n xy102 nginx1-654cb56c4-66rrt bash
#缩容
方法一:
kubectl scale deployment nginx1 -n xy102 --replicas=1
方法二:
kubectl edit deployments.qpps nginx1 -n xy102
replicas:1
#扩容
kubectl scale deployment nginx1 -n xy102 --replicas=3
#更新版本号
kubectl set image deployment/nginx1 nginx=nginx:1.18 -n xy102
#查看还原点
kubectl rollout history deployment/nginx1 -n xy102
数字大小决定了距离上次更新操作的远近,数字越大就是最近的一次操作
kubectl set image deployment/nginx1 nginx=nginx:1.12 --record -n xy102
#回滚
kubectl rollout undo deployment/nginx1 --to-revision=5 -n xy102
pod的ip地址随着pod的生命周期有可能会发生改变,内部访问通过pod的ip可以直接访问,外部访问是否收到影响?
service的类型以及工作原理
service如何与pod进行关联,这种关联不受pod的ip地址变化的影响
4、service
4.1命令
#创建service
kubectl expose deployment nginx1 --port=80 --target-port=80 --name=nginx1 -n xy102
前一个port是集群的service的端口,和容器内的80端口做的映射
#删除service
kubectl delete svc -n xy102 nginx1
#查看
kubectl get svc -n xy102
#修改service类型
kubectl edit svc -n xy102 nginx1
type: NodePort
4.2service的类型
4.2.1ClusterIP(默认类型)
提供集群内部的一个虚拟ip地址,让其他的pod访问的,pod可以通过这个service ip直接访问到内部的容器
内部组件通信使用
*4.2.2NodePort
在每个节点(集群的所有节点)都会开放一个端口,外部就可以通过本机的ip+端口(nodeport端口)访问pod内的容器服务。每个节点的nodeport端口都是一致的,端口的范围:30000-32767
NodePort:service根据标签来匹配对应的pod,只要标签匹配都能转发到指定的pod内的容器
4.2.3LoadBalance
云平台的运营商(阿里云、腾讯云)提供loadbalance的地址,需要付费的。提供之后,也是通过访问负载均衡的地址,可以实现pod的流量转发
4.2.4ExternalName
把service的名称映射到DNS的域名上,让pod去访问集群外部的资源,而且设置为此类型,serv将不能提供四层负载均衡服务
4.2.5ingress
不属于service类型,是独立的,可以实现域名访问,做七层代理
5、k8s项目的生命周期
发布——修改——更新——回滚——销毁
977

被折叠的 条评论
为什么被折叠?



