k8s基本概念及入门案例

  • 时间:
  • 浏览:0
  • 来源:彩神大发11选5_神彩大发11选5官方

为了实现Redis集群的主从数据同步,redis-slave前要知道redis-master的地址,所以在redis-slave镜像的启动命令 /run.sh中,都可否 输入下面内容:

replicas: 1

[root@localhost ~]# kubectl get service

service "frontend" created

spec:

ports:

selector: ## slaector是RC的Pod确定器,即监视和管理拥有这名标签(Lable)的Pod实例,确保当前集群上始终有且仅有replicas个Pod实例在运行,这里设置为 replicas: 1 ,表示只能运行一另一个多多(名为redis-master 的)Pod实例,当集群中运行的Pod实例小于replicas时,RC会根据 spec: 下 template: 段定义的Pod模版来生成一另一个多多新的Pod实例,lables属性指定了该Pod的标签,注意:这里的lables前要匹配RC的 spec:selector:

案例:搭建 Hello World 网页。

[root@localhost ~]# kubectl get rc

- Node

targetPort: 6379

- port: 6379

systemctl start kube-apiserver

kubectl create -f frontend-controller.yaml

redis-slave 192.168.1.132:6379,192.168.1.133:6379 3d

systemctl start etcd

4,下载镜像

metadata:

NAME DESIRED CURRENT READY AGE

在Node上运行的服务程序运行池池有kubelet,kube-proxy,docker daemon。

(2)接下来创建一另一个多多与之关联的Service(服务)—— redis-master的定义文件,文件名为

[root@localhost ~]# kubectl get pods

此图采用k8s部署架构,master 与 node的服务所处同一另一个多多虚拟机,通过创建 redis-master服务,redis-slave服务,和php-frontend服务(php前端),完成这名例子。

在pod启动后,系统会根据service的定义创建出与pod对应的Endpoint,以建立起service与后端pod的对应关系,。

Replication controllers

kubernetes 10.254.0.1 <none> 443/TCP 23h

- etcd 是高可用的key/value存储系统,用于持久化存储集群中所有资源对象,

- Pod

- 基本部署单元,都可否 进行创建,调度,管理,删除等

创建redis-slave服务,

redis-slave 10.254.157.219 <none> 6379/TCP 18m

redis-master-03fv1 1/1 Running 0 16h

redis-master-03fv1 1/1 Running 0 16h

Node(节点),是k8s集群中相对于master而言的工作主机(物理机或虚拟机),在每个Node上运行 用于启动和管理pod的服务(kubelet),并不能被maste管理。

运行Kubectl , 创建service。

redis-slave-0wfnk 1/1 Running 2 5h

kind: ReplicationController ##表示这是一另一个多多RC ,

此时,redis-master服务,被分配了一另一个多多值为10.254.208.57的ip地址(虚拟ip),就让 ,kubeenetes集群中或多或少新创建的Pod就都可否 通过这名虚拟IP地址+端口 6379来访问他了。(kubernetes 使用了linux的环境变量,在每个Pod的容器里奋都增加了一组Service相关的环境变量,用来记录从服务名到虚拟IP地址的映射关系。)

内容如下:

apiVersion: v1

存储卷的pod中不能被多个容器访问的共享目录。其与Pod的生命周期相同,与容器的生命周期无关。

metadata:

selector:

- Kubernets使用Etcd作为存储和通信顶端件,实现Master和Node的一致性,这是目前比较常见的做法,典型的SOA架构,解耦Master和Node。

selector:

name: redis-master

vi redis-master-service.yaml

参考资料:

docker pull kubeguide/guestbook-php-frontend

vi frontend-service.yaml

vi redis-slave-service.yaml

spec:

name: redis-master

name: redis-slave

# kubectl get rc

https://segmentfault.com/a/1190000004861499

- port: 6379

service "redis-master" created

(1)首先为 redis-master 服务创建一另一个多多名为redis-master的RC定义文件:

k8s 入门案例:搭建 Hello World 网页。

name: redis-master ( 表示拥有redis-master标签的Pod)

3,按顺序启动所有服务。

name: redis-master (服务名)

# kubectl get pods

至此,一另一个多多单机版的k8s集群环境就安装启动了。

docker pull kubeguide/redis-master

Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods这麼任何关联,都可否 修改pod 模板而不用对已创建pods有任何影响,不都可否 直接更新通过Replication Controller创建的pods。对于利用pod 模板创建的pods,Replication Controller根据label selector来关联,通过修改pods的label都可否 删除对应的pods。

- 用于推动相同功能集合的程序运行池池集中部署

frontend-fs42h 1/1 Running 0 1m

kubectl get endpoints

labels:

systemctl disable firewalld

- Label

redis-slave-0wfnk 1/1 Running 0 30m

内容如下



frontend-r6p75 1/1 Running 0 1m

redis-master 192.168.1.131:6379 3d

- key/value 键值对(基于etcd)

ports:

redis-master 10.254.82.44 <none> 6379/TCP 40s

labels:

1. Kubernetes介绍 

redis-slave-0wfnk 1/1 Running 0 1m

(2)Replication Controller:定期关联replicationController和pod,保证replicationController定义的克隆qq好友好友数量与实际运行pod的数量老是一致的。

http://cizixs.com/2016/10/25/kubernetes-intro-kubelet

OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'

vi /etc/kubernetes/apiserver

[root@localhost ~]# kubectl get service

- Volume

法子 :先定义RC来创建Pod,否则定义与之相关联的Service。

Kubernetes里各个服务(组件)的作用以及它们之间的交互关系。



一另一个多多service都可否 看作 一组提供相同服务的Pod 的对外接口。sevice作用于这名Pod是通过Label Selector来定义的。

frontend-mhxjr 1/1 Running 0 1m

systemctl start kube-scheduler

replicationcontroller "frontend" created

yum install -y etcd kubernetes

[root@localhost ~]# kubectl get pods

本文转移开源中国-

- 负责pod的动态扩容,缩容,保证pod的数量符合预期

redis-server --slaveof ${REDIS_MASTER_SERVICE_HOST} 6379

Replication Controller确保任何后后Kubernetes集群所含指定数量的pod副本(replicas)在运行, 不可能 少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。

创建好redis-master-controller.yaml后,在master节点执行命令:kubectl create -f <config_file>,

NAME DESIRED CURRENT READY AGE

Label是用于区分Pod、Service、Replication Controller的key/value键值对,Pod、Service、 Replication Controller都可否 有多个label,否则每个label的key只能对应一另一个多多value。Labels是Service和Replication Controller运行的基础,为了将访问Service的请求转发给后端提供服务的多个容器,正是通过标识容器的labels来确定正确的容器。同样,Replication Controller也使用labels来管理通过pod 模板创建的一组容器,原先Replication Controller都可否 更加容易,方便地管理多个容器,无论有十好多个 容器。

k8s支持多种类型的volume,否则一另一个多多pod都可否 同时使用任意多个volume。

systemctl start kube-proxy

redis-master 10.254.64.116 <none> 6379/TCP 2m

template:

kubernetes 192.168.1.183:6443 4d

kubectl scale rc redis-slave --relicas=3

内容如下:

frontend 192.168.1.128:30,192.168.1.129:30,192.168.1.130:30 2d

最后创建frontend Service ,主要目的是使用Service的NodePort给kubernetes集群中Service映射一另一个多多外网都可否 访问的端口,原先一来,内部管理就都可否 通过 NodeIP+NodePort的法子 访问集群中的服务了。

selector:

[root@localhost ~]# kubectl get pods

systemctl stop firewalld

ports:

基本概念:

修改配置文件

NAME READY STATUS RESTARTS AGE

scaled

Service也是Kubernetes的基本操作单元,是真实应用服务的抽象,每一另一个多多服务顶端全是所以对应的容器来支持 和服务selector决定服务请求传递给后端提供服务的容器,对外表现为一另一个多多单一访问接口,内部管理不前要了解后端怎样运行,这给扩展或维护后端带来很大的好处。

systemctl start kubelet

spec:

提示: replicationcontrollers "redis-master" created 表示创建成功。

关键点是设置type=N0dePort 并指定一另一个多多NodePort的值,表示使用NODE上的物理机端口提供对外访问的能力。

- Service

- name: redis-master

redis-slave-w8t4z 1/1 Running 0 30m

内容如下:

frontend 10.254.124.248 <nodes> 30:3001/TCP 28s

[root@localhost ~]# kubectl get rc



修改daocker

http://blog.csdn.net/yjk13703623757/article/details/53746273

修改kuberbetets apiservice

vi frontend-controller.yaml

- API Server作为kubernetes系统的入口,封装了核心对象的增完全查操作,以REST Ful接口法子 提供给内部管理客户和内部管理组件调用。它维护的REST对象将持久化到etcd(一另一个多多分布式强一致性的key/value存储)。

[root@localhost ~]# kubectl create -f frontend-service.yaml

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

pod

redis-master 1 1 1 16h

在运行时都可否 通过修改RC的副本数量,来实现Pod的动态缩放,k8s提供了kubectl scale命令一键完成

service "redis-slave" created

此时运行了一另一个多多redis-slave Pod

NAME READY STATUS RESTARTS AGE

解析:

NAME ENDPOINTS AGE

- 用于存储pod的tag标签,用于关联service和pod,replication controller和pod的关系

创建service

- Namespace

1,关闭防火墙

等。

frontend 3 3 0 11s

- 所含一另一个多多不可能 多个docker container,基于数据卷进行数据共享

[root@localhost ~]# kubectl get service

name: frontend

- Kubelet:责管控docker容器,如启动/停止、监控运行具体情况等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行具体情况。

将它发布到k8s集群中,就完成了redis-master的创建过程,

(4),创建frontend Pod 和服务

redis-master 10.254.82.44 <none> 6379/TCP 1h

image: kubeguide/redis-master

- Replication Controller

metadata.name 是Service的服务名(ServiceName),spec.selector确定了这名Pod对应到本服务,这里的定义表明拥有redis-master标签的Pod属于redis-master服务。另外,ports主次中的targetPort属性用来确定提供该服务的容器所暴露(EXPOSE)的端口号,即具体的服务程序运行池池在容器内的targetPort上提供服务,而port属性则定义了Service的虚端口。

frontend-fs42h 1/1 Running 2 5h

6,浏览器访问网页

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

- containerPort: 6379

kind: ReplicationController

name: redis-master

kubectl get pods,来查看当前系统中的Pod信息,redis-master-03fv1 这是kubernetes根据redis-master这名RC的定义自动创建的Pod,Runing,表示在运行。

apiVersion: v1

kubectl create -f redis-master-controller.yaml

redis-slave 2 2 2 49m

运行kubectl create命令

name: redis-slave

redis-master 1 1 1 2m

查看:

基本概念和术语

spec:

Kubernets属于主从的分布式集群架构,所含Master和Node:

replicationcontroller "redis-slave" created

spec:

创建一另一个多多名为 redis-slave-controller.yaml的RC文件,

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

metadata:

containers:

NAME READY STATUS RESTARTS AGE

apiVersion: v1kind: ReplicationControllermetadata: name: frontend labels: name: frontendspec: replicas: 3 selector: name: frontend template: metadata: labels: name: frontend spec: containers: - name: frontend image: kubeguide/guestbook-php-frontend env: - name: GET_HOSTS_FROM value: env ports: - containerPort: 30

2,Node是运行节点,运行业务容器,所含以下组件:

systemctl start docker

metadata:

label

frontend-mhxjr 1/1 Running 2 5h

redis-slave 10.254.135.254 <none> 6379/TCP 33s

replicas: 1



ip:3001

soec.port.NodePort的端口号定义范围有限制,默认为是3000~32767 , 或多或少则失效。

labels:

redis-master-03fv1 1/1 Running 2 21h

- Controller Manager:负责执行各种控制器,目前有两类:

(3),创建redis-slave-Pod和服务。

name: redis-slave

此时所有的pod都所处 Runing具体情况,表示成功创建成功。

把KUBE_ADMISSION_CONTROL="--admission-control=……参数中的ServiceAccount 删除。

[root@localhost ~]# kubectl create -f redis-master-service.yaml

vi /etc/sysconfig/docker

apiVersion: v1kind: Servicemetadata: name: frontend labels: name: frontendspec: type: NodePort ports: - port: 30 nodePort: 3001 selector:

注意:删除RC并不用影响通过该RC创建的Pod,为了删除所有Pod,都可否 设置replicas为0,否则更新 RC, 另外,客户端工具kubectl 提供了stop 和delete命令来完成一次性删除RC和RC控制的Pod。

NAME READY STATUS RESTARTS AGE

2,安装ectd和kubernetes,会自动安装docker

redis-slave-w8t4z 1/1 Running 2 5h

(1)Endpoint Controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射老是最新的。

name: redis-master

http://www.mamicode.com/info-detail-590007.html

apiVersion: v1

frontend-r6p75 1/1 Running 2 5h

name: redis-master

运行:

redis-master-03fv1 1/1 Running 0 3m

先定义frontened的RC配置文件,

redis-master 1 1 1 16h

- Kube Proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问或多或少pod时,访问请求会经过本机proxy做转发。

参考yaml。

redis-slave 2 2 2 1m

kind: Service

- 提供laber selector供内部管理调用,获取索引对应的value

Pod是Kubernetes的基本操作单元,把相关的一另一个多多或多个容器构成一另一个多多Pod,通常Pod里的容器运行相同的应用。Pod所含的容器运行在同一另一个多多Node(Host)上,看作一另一个多多统一管理单元,共享相同的volumes和network namespace/IP和Port空间。

pod的ip是Docker Daemon 根据docker0网桥的ip地址进行分配的,

kubernetes 10.254.0.1 <none> 443/TCP 10m

环境:centos7 ,

systemctl start kube-controller-manager

NAME DESIRED CURRENT READY AGE

Kubernetes里各个服务(组件)的作用以及它们之间的交互关系。

查看 pod的 ip+port

[root@localhost ~]# kubectl create -f redis-slave-controller.yaml

不可能 启动redis-slave服务的一另一个多多副本,每个副本上的Redis程序运行池池都与redis-master所对应的redis程序运行池池进行数据同步,十个 Redis实例组成一另一个多多具备读写分离功能的Redis 集群。 留言板PHP程序运行池池通过redis-slave服务来获取已保存的留言数据。

解析:

vi redis-master-controller.yaml

前要下载十个 镜像,redis-master , guestbook-redis-slave, guestbook-php-frontend,

apiVersion: v1kind: ReplicationControllermetadata: name: redis-slavespec: replicas: 2 selector: name: redis-slave template: metadata: name: redis-slave labels: name: redis-slave spec: containers: - name: redis-slave image: kubeguide/guestbook-redis-slave env: - name: GET_HOSTS_FROM value: env ports: - containerPort: 6379

[root@localhost ~]# kubectl create -f redis-slave-service.yaml

5,创建redis-master Pod 和 服务。

docker pull kubeguide/guestbook-rediis-slave

命名空间,用来组织k8s的各种对象,都可否 实现对用户的分组和管理,对不同的租户(pod rc service)还都可否 进行单独的资源配额设置和管理。

1. Master作为控制节点,调度管理整个系统,所含以下组件:

kubernetes 10.254.0.1 <none> 443/TCP 1d

redis-slave-w8t4z 1/1 Running 0 1m

- pod生命周期控制器

- Scheduler:负责集群的资源调度,负载pod在集群节点中的调度分配,新建的pod分配机器。这主次工作分出来变成一另一个多多组件,愿因都可否 很方便地替加上或多或少的调度器。

- 示例:web站点一另一个多多组件(前端、后端、数据库)运行在本人 的容器中,都可否 创建所含一另一个多多container的pod

kind: Service