容器学习 --K8S入门

K8S介绍

k8s中的最小单元:pod

pod:是一组业务强相关容器的组合,这些容器间以container模式连接,共享网络和目录,这种模式成为side car模式;

side car模式可以方便我们进行故障注入测试,例如:在pod中新增一个容器,然后对新增容器进行断网操作,因为pod中的容器共享网络,所以其他容器的网络也会断掉,来达成网络故障的注入;

每个pod中都会存在一个默认的sendbox容器,该容器用k8s命令查看时无法查看到,但是确实存在,其作用是提供基础的网络环境;


deployment:
对应配置文件中的 kind:Deployment

用来管理pod的单位,一个deployment可以关联多个pod,depolyment负责保持其中运行的pod数量,当有pod因为各种原因处于不健康状态时,depolyment会再启动新的pod来保持其中可用pod的数量;(高可用性)


service:
对应配置文件中的 kind:Service

用来接管pod的网络,当一个service下关联多个pod时,service会将流量平均转发给每个pod;(负载均衡)

nodeport:端口映射

 Ports:
 	- port: 4444 
		 targetPort: 4444
		 nodePort: 31208

port: pod间通信端口
targetport:目标端口,也就是容器端口
nodeport:service节点端口,也就是对外端口


label: 标签,在k8s中万物皆资源,万物都可以打上标签;
同时deployment和service也是通过pod的label来判断接管哪些pod;

在用配置文件创建pod时可以使用label- name来为pod打标;

template:
	 metadata:
		 labels:
			 name: selenium-hun-1208

这样创建出来的pod便会带有selenium-hun-1208的label;

而在deployment和service的配置中可以通过selector - name 来选择标签;

 selector:
 	name: selenium-hun-1208

这样创建出来的deplyment 或 service 节点便只会选择带有selenium-hun-1208的pod来接管;

同样,deployment和service也可以打label,而pod在部署时可以通过selector-name来判断部署在哪个节点;

所以label是K8s中最重要的调度策略;


探针:
我们之前在说高可用性时,提到当pod处于不健康状态时,deployment会启动新的pod,那k8s是如何判断pod是否健康的?
👇使用探针:
支持:http, bash, tcp等

Liveness类型(存活探针):每隔一段时间探查服务接口,如果探查失败,证明服务不健康,这时候会杀掉pod,deployment则会在杀死pod后,重新尝试拉起一个新的pod,这个时候service会把老的pod的ip地址移除掉,把新的pod的ip地址加到ip池中(就是重启pod,一般IP地址不会变);

Readiness类型(就绪探针):每隔一段时间探查服务接口,如果探查失败,证明服务不健康,这时候不会杀掉pod,只是service会把这个pod的ip地址移除掉,以便之后的流量不会再打到这个不健康的pod中,在这之后探针会继续运行,一旦探针判断这个pod重新恢复了健康状态,就会把这个pod的ip加回来,继续发送流量;

livenessProbe:
	httpget:
		path: /grid/console  # 探查路径
		port: 4444  # 端口
		initialDelaySeconds: 30  # 初始时间(即pod启动多久后开始探查)
		timeoutSeconds: 5  # 超时时间
readinessProbe:
	httpGet:
		path: /grid/console
		port: 4444
		initialbelaySoconds: 30
		timeputseconds: 5

当pod创建后,首次探针探查结果返回之前,该pod是处于不可用状态的,pod的ip地址也不会加到service的ip池中;

K8S安装

安装教程:

初始化集群
• kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version
v1.13.3 --pod-network-cidr=10.244.0.0/16
• kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/D
ocumentation/kube-flannel.yml

删除污点
• kubectl get nodes 查看节点
• kubectl taint nodes 节点名称 node-role.kubernetes.io/master:NoSchedule

K8S命令

kubectl + 动作 + 资源 + -n 名称空间
动作:
    get:查询
    describe:资源的源信息
    delete:删除
    
资源:
    pod
    deploy(deployment)
    svc(service)
    
-n:
    不使用-n时,使用默认名称空间
    
kubectl logs -f  资源
    持续输出日志
    
kubectl exec -it 资源 bash
    作用和docker相同

kubectl create -f 文件名
    创建集群  当配置文件有修改时,需要先delete,再create

kubectl apply -f 文件名
    更新集群  当配置文件有修改时,会更新集群,一般用apply多于create
    

K8S dashboard

安装教程:https://zhuanlan.zhihu.com/p/99148477

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值