k8s是什么:Docker分布式系统解决方案

单机版k8s环境搭建:centos7

systemctl disabled firewalld

systemctl stop firewalld

安装etcd(高可用键值数据库)和k8s

yum update    #多次尝试,确认网络连接

yum install -y etcd kubernetes

启动服务(进程)

systemctl start etcd

systemctl start docker                                 #容器创建管理

systemctl start kube-apiserver                    #所有资源增、删、改、查等操作入口

systemctl start kube-controller-manager     #自动化控制中心

systemctl  start kube-scheduler                   #pod调度

systemctl start kubelet                        #node节点进程,负责pod对应容器创建、起停

sustemctl start kube-proxy                           #service通信及负载均衡机制组件

常用操作命令

kubectl get nodes                                         #查看集群中node个数

kubectl descripe node <node_name>          #查看详细信息

kubectl create  -f  *.yaml                               #创建yaml对应资源文件(即kind对象)

kubectl get  对象名称                                    #查看对象信息

kubectl get svc service_name -o yaml          #查看service ClusterIP

kubectl get pods --namespace=namespace_name  #查看命名空间的中的对象

基本概念

k8s中所有资源对象都可以使用yaml或JSON文件定义或描述

通常一个节点运行几百个pod

master   集群控制节点   占用一个服务器,高可用占3个服务器

node      node工作节点   可以是物理机或虚拟机,node IP物理网卡的IP地址

pod        kind:pod,包含一个pause容器和其他业务容器(共享pause的网络栈和volume挂载卷),具有单独的ip地址及Endpoint(Pod IP+ContainerPort  pod之间彼此通信,流量通过TCP/IP node IP流出)

Label   一个资源对象(node、pod、service、rc)可以任意多label,一个label可以任意多资源对象

Replication Controller(RC)  描述期望pod的副本数,根据标签筛选目标pod,实际副本小于预期则根据模版创建pod

Deployment  RC的升级,可以随时查看当前部署进度

Horizontal Pod Autoscaler(HPA)  横向扩容,可以使用yaml定义之外的方式定义

StatefulSet    用于管理有状态的集群,例如MySql集群,每个pod都有稳定唯一的网络标示及规范名称

Service  具有虚拟IP(Cluster IP)不可ping属于k8s集群内部地址,yaml可定义多端口,可使用type=NodePort实现外部访问Service(例如web端的服务模块),但有负载均衡问题,若运行在谷歌GCE公有云(type=LoardBalancer)则可以解决

Volume 存储卷  Pod中能被多容器访问的共享目录

Persistent Volume  网络存储

Namespace 命名空间 实现多租户资源隔离,一旦创建就可以指定资源对象(×.yaml)在那个Namespace

Annotation 注解

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐