K8S的学习

1.k8s的组件的基本功能

2.k8s中常用的指令

查看集群的所有节点
kubectl get nodes 
根据配置文件给集群创建资源

kubectl apply -f xxxx.yaml

查看集群部署了哪些应用

docker ps === kubectl get pods -A
运行的应用叫容器,在k8s中叫pods

3.k8s的核心概念

1.NameSpace

NameSpace:名称空间,用来对集群资源进行隔离划分。默认只隔离资源,不隔离网络

kubectl get ns //获取命名空间
kubectl get pod -n namespace //查看某个命名空间下的pod
kubectl create ns hello //创建命名空间
kubectl delete ns hello //删除命名空间

使用yaml文件创建也可以:比如 hello.yaml

apiVersion: v1
kind: Namespace
metadata:
	name: hello

通过yaml创建使用指令:
kubectl apply -f hello.yaml//可以创建hello的ns
删除:kubectl delete -f hello.yaml 也可以

2.Pod

运行中的一组容器,pod是k8s中应用的最小单位
在这里插入图片描述
一个pod里面可以运行多个容器

1.命令管理pod

pod类似于一个员工宿舍,每个容器类似一个床位

kubectl run mynginx --image=nginx//创建一个名为mynginx的pod
kubectl describe pod myginx //查看mynginx的信息
kubectl get pod //查看default命名空间的pod

kubectl delete pod pod名字//删除pod
kubectl logs -f mynginx //查看pod运行的日志
#每个pod k8s都会分配一个ip地址
kubectl get pod -owide
#进入容器的控制台中
kubectl exec -it mynginx -- /bin/bash
#集群中的任意一个机器以及都可以通过pod分配的ip进行访问

使用yaml创建:

apiVersion: v1
kind: pod
metadata: 
	labels:
		run:mynginx
	name:mynginx
	namespace:default #在不同的命名空间下创建
spec:
	container:
	-	image:nginx
	 	name:mynginx	
	- 	image:ttt
		name:myttt	

删除:kubectl delete -f pod.yaml

2.多个应用运行在一个pod中

在这里插入图片描述
在对应的容器中比如nginx访问tomcat,只要用127.0.0.1:8080即可,同个pod中的不同容器共享网络和存储。注意不能占用相同的接口

3.Deployment

部署的意思
在这里插入图片描述

kubectl create deploy mytomcat --image=tomcat:version
#自愈能力,使用kubectl delete pod,使用depoy部署的会自动创建新的
kubectl get deploy //获取所有的deploy
1.多副本命令
kubectl create deploy mytomcat --image=tomcat:version --replicas=3
2.扩缩容

kubectl scale
假如原来有3个my-dep

kubectl scale deploy/my-dep --replicas=5//扩容
kubectl scale deploy/my-dep --replicas=2//缩容
3.自愈和故障转移

挂了,会重启-自愈
机器挂了,这个机器上的所有pod转移到其他机器上,这个叫做故障转移

4.滚动更新

会先部署新的升级版本,然后停掉老的

kubectl get deploy my-dep -oyaml //查看yaml文件中的内容
kubectl set image  deploy/my-dep nginx=nginx:1.16.1  --record
5.回滚
#查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2
#回滚到上次
kubectl rollout undo deployment/my-dep
#回滚到指定版本
kubectl rollout undo deploy/my-dep --to-revision=2

4.其他工作负载

在这里插入图片描述

3.Servcie

pod的服务发现与负载均衡

1.ClusterIP模式

在这里插入图片描述

对于三个pod使用下面的命令:

kubectl expose deploy my-dep --port=8000 --target-port=80 --type=ClusterIP:集群内部访问//暴露这个部署:expose deploy my-dep
#集群内使用servcie的ip:port就可以负载均衡的访问
#也可以使用域名的方式:服务名.所在的名称空间.svc my-dep.default.svc
curl my-dep.default.svc:8000//也可以访问

也可以使用yaml文件

apiVersion: v1
kind: service
metadata: 
	labels:
		app: my-dep
	name:my-dep
	namespace:default #在不同的命名空间下创建
spec:
	selector:
		app:my-dep
	ports:
	- port: 80000
	  protocol:tcp
	  targetPort:80
2.NodePort模式

在这里插入图片描述

kubectl expose deploy my-dep --port=8000 --target-port=80 --type=NodePort //不传默认时集群内部访问模式
同时还会开辟一个30000-32767范围内的一个端口

Nodeport范围:30000-32767之间

4.Ingress

入口的意思,Ingress:Servcie的统一网关入口,所有的请求先到达ingress,由ingress发送至哪个服务,然后由服务负载均衡到对应的pod,如图所示:
order.atguigu.com都会到service a,
user.atguigu.com都会到service b;
atguigu.com/product都会到service c
在这里插入图片描述
若user想查订单,就会向servcie a发送请求,直接由service通过负载均衡到pod app=a
pod层的网络和servcie层的网络,在安装k8s的时候设置的。
在这里插入图片描述

网络路由就是通过nginx配置的
在这里插入图片描述

1.域名访问

在这里插入图片描述
rules:路由规则
host:匹配的域名,向这个域名下发送请求
pathType:Prefix,path:"/",表示的意思是匹配所有的host/请求
backend:转给后台,后台服务名叫:hello-server
使用ingress进行配置上图中的路由

kubectl create -f ingress-rule.yaml
kubectl get ingress
kubectl edit ing ingress-host-bar//修改路由配置
2.流量限制

在这里插入图片描述

每秒的次数做个限制
当刷新太快后,会返回默认的503,也可以修改这个状态码

5.总结:k8s的网络模型

在这里插入图片描述
外部是到达ingress-service-pod
图片取自云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps的课程截图,侵删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值