Kubernetes集群

1. 整个架构由两大部分构成:master node 和 node

     1.1 master node:  API server +  controller manager + scheduler + etcd

           API server:集群统一入口:

           scheduler:调度节点

           controller manager: 处理集群中常规后台任务,一个资源对应一个controller

           etcd:数据储存

     1.2 node:kubelet + kube_proxy

           kubelet:master node 在node中的代表

           kube_proxy:节点的网络代理

那么,到底如何形象化的理解呢?

而k8s具体的工作流程是怎样的呢?

2. 核心概念:

       2.1 Pod:

            k8s中最小的部署单元   有很多个容器组成   Pod中各容器共享网络  生命周期短暂

       2.2 controller:直白点,就是通过controller来创建node

       2.3 service:定义一组pod的访问规则 

        注意 pod,container,docker的区别:docker不是容器,容器是container。Docker是一种技术,用来创建和管理容器的。可以看作是一台简易的虚拟机。现在来说,应用程序在硬件上的部署都是通过容器化的方式进行的。而pod是k8s为了集群管理docker方便在容器这一级概念上的向上抽象,即一组容器,也是k8s中最小的部署单元。他们的关系如图:

k8s中有哪些资源对象:

首先明确一点,资源对象的建立都有两种方式:通过yaml配置文件定义资源对象或者通过命令行方式创建。

1. Namespace:

 实现某种意义上的封装。

2. pod

创建并启动pod:

3. Service:

一组pod的IP地址各不相同,如果挨个访问将会麻烦。

我们通过service将关联的一组pod统一管理

4. Deployment:

一个应用(Pod)可能会被使用多次,我们希望能够快速部署;

同时希望如果有一个pod挂掉不会影响其他的pod,即实现所谓的负载均衡。

通俗点理解,也即是自愈能力。

对于Deployment的YAML文件配置:Deployments | Kubernetes

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment

  labels:

    app: nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx:1.14.2

        ports:

        - containerPort: 80

那么YAML文件怎么看呢?

apiVersion:此处值是v1,这个版本号需要根据安装的Kubernetes版本和资源类型进行变化,记住不是写死的。
kind:此处创建的是Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。
metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息。
spec:包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。

创建Deployment:

root@master-01 YAML_k8s]# kubectl create -f nginx-deployment.yaml
deployment.apps "nginx-deployment" created
[root@master-01 YAML_k8s]# kubectl get pod -o  wide
NAME                                READY     STATUS    RESTARTS   AGE       IP              NODE
nginx-deployment-6b7b4d57b4-26wzj   1/1       Running   0          2m        10.20.184.83    master-01
nginx-deployment-6b7b4d57b4-9w7tm   1/1       Running   0          2m        10.20.190.60    node-01
nginx-deployment-6b7b4d57b4-mhh8t   1/1       Running   0          2m        10.20.254.108   node-03
[root@master-01 YAML_k8s]# kubectl get deployment
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3         3         3            3           2m

那么,通过kubernetes集群部署容器化应用到服务器上的流程是怎样的?

1.本地将项目的文件打包,并制作镜像。

2.上传镜像到服务器的镜像仓库。

3.服务器拉取镜像并通过deployment来创建pod来集群运行容器化应用。

4.目前的话只能通过集群内的节点来访问应用,如果想要外网也能访问需要暴露应用。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值