K8s的入门学习教程1(安装k8s集群)

本文是一份Kubernetes(K8s)的入门教程,详细介绍了如何从零开始搭建K8s集群,包括配置自定义yum源、安装etcd、设置容器网络、安装flannel以实现跨主机容器互通,以及安装master和node节点。教程涵盖了从安装到配置的所有关键步骤,适合初学者参考。
摘要由CSDN通过智能技术生成

目录

步骤一:将下载的k8s相关的包做成自定义yum源,之后集群好通过网络yum源安装

步骤二:安装etcd并创建/atomic.io/network/config网络配置(注意在master上配置)

步骤三:配置容器网络

步骤四:flannel安装(注意:flannel服务必须在docker服务之前启动)--实现不同机器间容器互通

步骤五:安装master组件

步骤六:安装node节点(此出只写了一个节点的配置,其他的节点是一模一样的配置)


 

k8s是一套管理系统,主要善于管理容器集群,是开源的平台,可以实现集群的自动化部署,自动化缩容,维护等功能.

k8s适用场景:有大量跨主机的容器需要管理,快速部署应用,快速扩展应用,无缝对接新的应用功能.节省资源,优化硬件资源的使用

 

Master节点服务

API Server:是整个系统的对外接口,供客户端和其他组件调用

Scheduler:是负责集群内部的资源进行调度,相当于"调度室"

Controller manager:负责管理控制器,相当于"大总管"

etcd:是一个键值存储仓库,存储集群的状态,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于go语言实现,使用etcd来存储网络配置,解决容器互联互通的问题.

 

Node节点服务

docker 容器管理

kubelet 主要负责监视指派到它的pod.包括创建,修改,删除等

kube-proxy 主要负责为pod对象提供代理,实现service的通信与负载均衡

 

Pod是什么

pod是Kubernetes调度的基本单元

一个Pod包涵1个或多个容器

这些容器使用相同的网络命名空间和端口号

pod是一个服务的多个进程的聚合单位

pod作为一个独立的部署单位,支持横向扩展和复制

 

pod的作用

由若干容器组成的一个容器组

同个组内的容器共享一个存储卷(volume)

每个Pod被分配到节点上运行直运行结束或者被删除

同个Pod的容器使用相同的网络命名空间,IP地址和端口区间,相互之间能通过localhost来发现和通信

 

 

Service是什么?

一种可以访问pod服务的;策略方法,通常称为微服务

由于Pod中的服务经常会变化,给我们访问超成了不变,为了解决这一问题,service提供了基于VIP/负载均衡的访问方式

在Kubernetes集群中,每个Node运行一个kube-proxy进程,kube-proxy负责Service实现了一直VIP(虚拟IP)的形式

 

标签和选择器

为了建立sevice和pod间的关联,kubernetes先给每个pod打上一个标签Label.然后再给相应的service定义标签选择器(Label Selector),例如:

... ...

   metadata:

       labels:  #声明标签

           app:nginx  #定义标签名字

... ...

   selector:  #声明标签选择器

       app:nginx  #为服务的后端选择标签

... ...

 

RC/RS/Deployment

资源对象文件

kubernetes通过Replication(简称RC)管理POD,在RC中定义了如何启动POD,如何运行,启动几副本等功能,如果我们创建文件,在其中使用Yaml的语法格式描述了上面的信息,这个文件就是我们的资源对象文件

ReplicaSet(简称RS)是RC的升级版

Deployment为Pods和RS提供描述性的更新方式

 

 

k8s的搭建

 

 

步骤一:将下载的k8s相关的包做成自定义yum源,之后集群好通过网络yum源安装

步骤二:安装etcd并创建/atomic.io/network/config网络配置(注意在master上配置)

[root@kubemaseter ~]# yum install etcd

[root@kubemaseter ~]# vim /etc/etcd/etcd.conf

  6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"    #修改此行

[root@kubemaseter ~]# systemctl enable etcd
[root@kubemaseter ~]# systemctl start etcd

[root@kubemaseter ~]# etcdctl ls /
/atomic.io
[root@kubemaseter ~]# etcdctl mk /atomic.io/network/config '{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}'
[root@kubemaseter ~]# etcdctl ls /atomic.io/network/config 
/atomic.io/network/config
[root@kubemaseter ~]# etcdctl get /atomic.io/network/config 
{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}
 

etcd键值管理:在键的组织上etcd采用了层次化的空间结构(类似于文件系统中的目录的概念),用户指定的键可以为单独的名字,创建key键值,此时实际上放在根目录/key下面.也可以为指定目录结构,如/dir1/dir2/key.则将创建相应的目录结构.主要是存储容器的网络结构.

etcdctl管理命令

语法 etctctl子命令 参数 键值

set  设置键值对

get 读取键值对

update 更改键值对

mk  创建新的键值对,rm删除键值对

mkdir 创建目录,rmdir删除目录

ls 显示目录和键值对

步骤三:配置容器网络

1.在kube-node上安装docker(所有的node节点都配置)

[root@registry ~]# yum install docker docker-distribution

[root@registry ~]# vim /etc/sysconfig/docker

 13 ADD_REGISTRY='--add-registry 192.168.1.100:5000'
 14 INSECURE_REGISTRY='--insecure-registry 192.168.1.100:5000'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值