24、 Kubernetes(一)单机启动及概念描述

1、在kubernetes里,一个pod能和其他机器上的pod进行通信,因为kubernetes采用了二级虚拟网络。
2、如果pod里面的业务容器down了,kubernetes会重启这个pod
3、如果node宕了,kubernetes会将node上的所有pod转移到其他node上

kind

kind是用来定义资源文件的类型,一般为ReplicationController,Service,Node,Pod,Deployment,
4、kubernetes上的所有资源都是通过文件描述创建的,如yaml或json。

Pod(豆瓣)

一个Pod为一个系统容器,里面包含多个用户容器;一个pod会分配一个独立的ip,提供一套ip:port机制让kube-proxy 访问。
5、对业务容器都定义在spec 下面,如:

template:
     spec:
      containers:
      - name: tomcat8
        image: docker.io/kubeguide/tomcat-app:v1
        ports: 
        - containerPort: 8080 //容器端口

label

6、一个资源对象可以有多个label,如 RC,SVC,Node,Pod上都可以。
7、打上label之后,可以使用label-selector来查询和筛选资源(类是sql)。
8、kube-controller通过label-selector来保证副本数量与设定的一致,kube-proxy通过label-selector来建立Service与Pod之间的链接,并完成负债均衡。

metadata:
  name: tomcat8
  labels:
      background,beta

ReplicationController

9、RC,定义了一套期望的容器集合,a,声明Pod的副本数量,b,筛选Pod的label-selector,c,用于创建Pod的模板。

spec:
  replicas: 5  
  selector:
    app: tomcat8
  template:
    ...

当执行kubectl create -f tomcat8-rc.yaml后,就相当于向kubernetes集群提交了一个RC,master节点上的kube-controller就得到通知,定期巡查集群中的pod,并确保pod的实例个树和设定一致。如果过多,就会停止一些,否则就创建。
10、通过rc的副本定义,实现了用户容器的高可用。
可以通过命令实现动态缩放:
kubectl scale rc redis-slave –replicas=3

Service

11、一个Service定义文件就是一个系统架构中的”微服务”。
frontend -> micro service ->label selector -> pods ->user container ;
rc保证了pods的服务能力。
同时Service也分配到一个全局唯一的IP;

apiVersion: v1                      
kind: Service                              #表明是K8s Service
metadata: 
  name: mysql                              #Service的全局唯一名称
spec:
  ports:
    - port: 3306                           #Service提供服务的端口号
  selector:                                #Service对应的Pod拥有这里定义的标签
    app: mysql

app: mysql 对应所有的 label为app:mysql的pod。

12、使用kubectl get endpoints 获取pod的服务地址

NAME         ENDPOINTS                                                     AGE
kubernetes   192.168.1.152:6443                                            4h
mysql        172.17.0.3:3306                                               2h
tomcat8      172.17.0.2:8080,172.17.0.4:8080,172.17.0.5:8080 + 2 more...   1h

13、使用 kubectl get svc查看Service的服务地址

NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.254.0.1       <none>        443/TCP          4h
mysql        10.254.197.175   <none>        3306/TCP         2h
tomcat8      10.254.249.65    <nodes>       8080:30001/TCP   1h

详情: kubectl get svc tomcat8 -o yaml

pec:
  clusterIP: 10.254.249.65
  ports:
  - nodePort: 30001
    port: 8080
    protocol: TCP
    targetPort: 8080

targetPort 是用来暴露Service的端口
nodePort 是暴露node的服务端口 ,如127.0.0.1:30001

kube-proxy

15、运行在每个node上的kube-proxy是一个负载均衡器,负责把Service的请求转发到某个Pod上去。

Volume文件挂载

<>

#!/bin/sh
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值