文章目录:

1.1 Kubernetes 概述

1.2 Kubernetes常见组件介绍

2.1 在各个节点上面安装k8s组件

3.1 修改所有结点的主机名,IP地址和hosts文件

3.2 配置etcd服务器

3.3 配置master服务器

3.4 配置etcd,指定容器云中 docker 的 IP 网段

4.1 配置lancy13网络,本实例采用flannel方式来配置

4.2 配置lancy13上的lancy12地址和kube-proxy

4.3 配置 lancy13 kubelet

4.4 启动 lancy13 服务

5.1 配置lancy14网络,本实例采用flannel方式来配置

5.2 配置lancy14上lancy12地址和kube-proxy

5.3 配置 lancy14 kubelet

5.4 启动 lancy14 服务所有服务

5.5 kubernetes 每个节点需要启动的服务和开放端口号


搭建Kubernetes容器集群管理系统K8s

本节所介绍内容:

1 Kubernetes和相关组件的介绍

2 配置yum源安装kubernetes及组件

3 配置etcd和master节点

4 配置minion1节点

5 配置minion2结点并总结Kubernetes所有服务和端口号

实验环境:需要三台全新的CENTOS7.7系统

1、Kubernetes介绍

1.1 Kubernetes 概述

Kubernetes是Google 开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。

Kubernetes基于docker容器的云平台,简写成:k8s。

官网:Kubernetes

Kubernetes的架构设计图:

1.2 Kubernetes常见组件介绍

先按以下顺序来介绍:

1、master:kubernetes管理节点

2、apiserver:提供接口服务,用户通过apiserver来管理整个容器集群平台。API Server负责和etcd交互(其他组件不会直接操作etcd,只有APIServer这么做),整个kubernetes集群的所有的交互都是以API Server为核心的。如:

(1)所有对集群进行的查询和管理都要通过API来进行

(2)所有模块之间并不会互相调用,而是通过和API Server打交道来完成自己那部分的工作。API Server提供的验证和授权保证了整个集群的安全。

3、scheduler:kubernetes调度服务

4、Replication Controllers复制,保证pod的高可用,

Replication Controller 是 Kubernetes 系统中最有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过Replication Controller可以保证在其它宿主机启用同等数量的Pod。Replication Controller 可以通过模板来创建多个Pod副本,同样也可以直接复制已存在Pod,需要通过Label selector来关联。

接下介绍,从下往上说,从你最熟悉的知识开始

5、minion(swarm worker节点): 真正运行容器container的物理机。kubernets 中需要很多 minion机器,来提供运算。 minion [ˈmɪniən]  下属; 小卒; 杂役;

6、container :容器,可以运行的服务和程序。实际的应用时容器。

7、Pod:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。pod中可以包括一个或一组容器。

pod [pɒd] 豆荚

8、Kube_proxy代理 做端口转发,相当于LVS-NAT模式中的负载调度器

Proxy解决了同一宿主机,相同服务端口冲突的问题,还提供了对外服务的能力,Proxy后端使用了随机、轮循负载均衡算法。

9、etcd:存储着kubernetes的配置信息,可以理解为是k8s的数据库,存储着k8s容器云平台中所有节点、pods、网络等信息。

互动:linux系统中/etc目录作用是存储配置文件。所以etcd(daemon)是一个存储配置文件的后台服务。

接下几个名词不在图片中,我们也介绍一下它们

10、Services:Services是 Kubernetes 最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,目前的版本是通过iptables的nat转发来实现,转发的目标端口为Kube_proxy生成的随机端口。

11、Labels标签

Labels 是用于区分Pod、Service、Replication Controller 的 key/value 键值对,仅使用在Pod、Service、Replication Controller之间的关系识别,但对这些单元本身进行操作时得使用name标签。

11、Deployment

Deployment [dɪˈplɔɪmənt] (部队、资源或装备的) 部署,调集。

Kubernetes Deployment用于更新Pod和ReplicaSet(下一代的Replication Controller)的方法,你可以在Deployment 对象中只描述你所期望的理想状态(预期的运行状态),Deployment 控制器会将现在的实际状态转换成期望的状态。例如,将所有的webapp:v1.0.9升级成webapp:v1.1.0,只需创建一个Deployment,Kubernetes 会按照 Deployment 自动进行升级。通过 Deployment 可以用来创建新的资源。

Deployment 可以帮我们实现无人值守的上线,大大降低我们的上线过程的复杂沟通、操作风险。

12、Kubelet 命令 : Kubelet和Kube-proxy都运行在 minion 节点上。

Kube-proxy 实现 Kubernetes 网络相关内容。

Kubelet命令管理Pod、Pod中容器及容器的镜像和卷等信息。

总结: 总结各组件之间的关系

1、Kubernetes的架构由一个master和多个minion组成,master通过api提供服务,接受kubectl的请求来调度管理整个集群。kubectl:是 k8s 平台的一个管理命令。

2、Replication controller 定义了多个 pod 或者容器需要运行,如果当前集群中运行的 pod 或容器达不到配置的数量,replication controller 会调度容器在多个 minion 上运行,保证集群中的pod数量。

3、service 则定义真实对外提供的服务,一个service会对应后端运行的多个container。

4、Kubernetes 是个管理平台,minion 上的kube-proxy 拥有提供真实服务公网IP。客户端访问kubernetes 中提供的服务,是直接访问到kube-proxy上的service。

5、在 Kubernetes 中 pod 是一个基本单元,一个pod可以是提供相同功能的多个container,这些容器会被部署在同一个 minion 上。minion 是运行 Kubelet 中容器的物理机。minion接受 master的指令创建pod或者容器。

2 搭建 Kubernetes 容器集群管理系统

平台版本说明

节点角色                IP地址         CPU    内存    说明

(lancy12)master               192.168.30.12    4 核    2GB    这里 lancy12和etcd共用一台机器

(lancy12)etcd                  192.168.30.12    4 核    2GB

lancy13(minion1)      192.168.30.13    4 核    2GB

lancy14(minion2)      192.168.30.14    4 核    2GB

注: 正常需要4 台机器,如果你内存不够,master 和 etcd 可以运行在同一台机器上。

实验拓扑图:

2.1 在各个节点上面安装k8s组件

配置lancy12为etcd和master结点:

[root@lancy12 ~]# yum install -y kubernetes etcd flannel ntp

注:Flannel 为 Docker 提供一种可配置的虚拟重叠网络。实现跨物理机的容器之间能直接访问

1、Flannel在每一台主机上运行一个agent。负责在提前配置好的地址空间中分配子网租约。Flannel使用etcd来存储网络配置。

2、ntp:主要用于同步容器云平台中所有结点的时间。云平台中结点的时间需要保持一致。

3、kubernetes中包括了服务端和客户端相关的软件包。

4、etcd是etcd服务的软件包。

lancy13

[root@lancy13 ~]# yum install kubernetes flannel ntp -y

lancy14:

[root@lancy14 ~]# yum install -y kubernetes flannel ntp  #每个minion都要安装一样

关闭防火墙:

[root@lancy12 ~]# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

[root@lancy13 ~]# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

[root@lancy14 ~]# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

关闭selinux,配置路由转发

关防火墙:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

配置路由转发:echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

sysctl -p

注:工作环境,也可以开防火墙的。

到此安装已经成功。下面开始配置kubernetes

3 配置etcd 和master节点

3.1 修改所有结点的主机名,IP地址和hosts文件

1、修改主机名:

[root@lancy12 ~]# echo lancy12 > /etc/hostname   #修改主机名

# echo etcd > /etc/hostname     #我这里只有三台机器,不需要执行这个命令,如果你是4台,需要执行这个。

[root@lancy13 ~]# echo lancy13 > /etc/hostname

[root@lancy14 ~]# echo lancy14 > /etc/hostname

修改 hosts 文件:

[root@lancy12 ~]# vim /etc/hosts   #插入

192.168.30.12 lancy12

192.168.30.12 etcd

192.168.30.13 lancy13

192.168.30.14 lancy14

[root@lancy12 ~]# scp /etc/hosts 192.168.30.13:/etc/

[root@lancy12 ~]# scp /etc/hosts 192.168.30.14:/etc/

3.2 配置etcd服务器

lancy12

[root@lancy12 ~]# vim /etc/etcd/etcd.conf    #修改原文件,只需要以下红色标记的内容:

改:ETCD_NAME=default

为:ETCD_NAME="etcd"

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

改:ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"

为:ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.30.12:2379"

改:ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

为:ETCD_ADVERTISE_CLIENT_URLS="http://192.168.30.12:2379"

advertise [ˈædvərtaɪz]  (为…) 做广告; 登广告;

/etc/etcd/etcd.conf 配置文件含意如下:

ETCD_NAME="etcd"   #etcd节点名称,如果etcd集群中只有一台etcd,这一项可以注释不用配置,默认名称为default,这个名字后面会用到。

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"   #etcd存储数据的目录

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.30.12:2379" #etcd 对外服务监听地址,一般指定2379端口,如果为0.0.0.0将会监听所有IP接口

ETCD_ARGS=""   #需要额外添加的参数,可以自己添加,etcd的所有参数可以通过etcd -h查看。

启动服务

[root@lancy12 ~]#systemctl start etcd && systemctl enable etcd && systemctl status etcd

etcd 通讯使用 2379 端口

查看:

[root@lancy12 ~]# netstat -antup | grep 2379

检查 etcd 集群成员列表,这里只有一台

[root@lancy12 ~]# etcdctl member list

到此etcd节点成功。

3.3 配置master服务器

lancy12

1、配置 kubernetes 配置文件

[root@lancy12 ~]# vim /etc/kubernetes/config

改:KUBE_MASTER="--master=http://127.0.0.1:8080"

为:KUBE_MASTER ="--master=http://192.168.30.12:8080"

#指定 master 在 192.168.30.12 IP 上监听端口 8080

注:/etc/kubernetes/config 配置文件含意:

KUBE_LOGTOSTDERR="--logtostderr=true" #表示错误日志记录到文件还是输出到 stderr标准错误输出。

KUBE_LOG_LEVEL="--v=0" #日志等级。

KUBE_ALLOW_PRIV="--allow_privileged=false" #是否允讲运行特权容器。false表示不允许特权容器

2、修改apiserver配置文件

[root@lancy12 ~]# vim /etc/kubernetes/apiserver

改:KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"

为:KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

改:KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"

为:KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.30.12:2379"

改:KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

为:KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"   #这里必须配置正确

注:/etc/kubernetes/apiserver 配置文件含意:

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" #如果配置为127.0.0.1则只监听localhost,配置为0.0.0.0会监听所有网卡的接口,这里配置为0.0.0.0。

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.30.12:2379" #etcd 服务地址,前面已经启动了etcd服务

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" #kubernetes可以分配的 ip 的范围,kubernetes 启动的每一个pod以及 serveice 都会分配一个ip地址,将从这个范围中分配 IP。

KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit" #不做限制,允讲所有节点可以访问apiserver,对所有请求开绿灯。

admission [ədˈmɪʃn] 准许加入,加入权,进入权; Admit [ədˈmɪt] 承认

扩展:

admission-control(准入控制)概述:admission controlle本质上是一段代码,在对kubernetes api 的请求过程中,顺序为  先经过认证和授权,然后执行准入操作,最后对目标对象进行操作。

3、kube-controller-manager配置文件

[root@lancy12 kubernetes]# cat /etc/kubernetes/controller-manager #不需要修改

###

# The following values are used to configure the kubernetes controller-manager

# defaults from config and apiserver should be adequate #默认的配置应该足够了

adequate [ˈædɪkwət] 足够的;适当的

# Add your own!

KUBE_CONTROLLER_MANAGER_ARGS=""

4、配置 kube-scheduler 配置文件

scheduler [ˈskɛdʒʊlər] 调度程序

[root@lancy12 ~]# vim /etc/kubernetes/scheduler

改:KUBE_SCHEDULER_ARGS=""

为:UBE_SCHEDULER_ARGS="0.0.0.0" #改scheduler监听到的地址为:0.0.0.0。

3.4 配置etcd,指定容器云中 docker 的 IP 网段

lancy12

互动:etcd是一个非关系型数据库。 如何添加删除数据?

1、扩展:etcdctl命令使用方法

etcdctl 是操作 etcd 非关系型数据库的一个命令行客户端,它能提供一些简洁的命令,供用户直接跟etcd 数据库打交道,大体上分为数据库操作非数据库操作两类。

数据库操作主要是围绕对键值和目录的CRUD 完整生命周期的管理。

注:CRUD 即 Create, Read, Update, Delete。

2、etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如testkey,此时实际上放在根目录 / 下面,也可以为指定目录结构,如cluster1/lancy14/testkey,则将创建相应的目录结构。

set   指定某个键的值。

例如:

[root@lancy12 ~]# etcdctl set lancy "qingmei"

qingmei

[root@lancy12 ~]# etcdctl get lancy

qingmei

或:

[root@lancy12 ~]# etcdctl set /testdir/testkey "hello world"

hello world

get 获取指定键的值。例如

[root@lancy12 ~]# etcdctl get /testdir/testkey

etcdctl ls 列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中内容。例如

[root@lancy12 ~]# etcdctl ls /

[root@lancy12 ~]# etcdctl ls /testdir

update 当键存在时,更新值内容。例如

[root@lancy12 ~]# etcdctl update /testdir/testkey aaaa

aaaa

[root@lancy12 ~]# etcdctl get /testdir/testkey

rm 删除某个键值。例如

[root@lancy12 ~]# etcdctl rm lancy

或:

[root@lancy12 ~]# etcdctl rm /testdir/testkey

etcdctl mk和 etcdctl set 的区别如下:

etcdctl mk命令是如果给定的键不存在,则创建一个新的键值。如果给定的键存在,则报错,无法创建。而etcdctl set ,不管给定的键是否存在,都会创建一个新的键值。

例:

[root@lancy12 ~]# etcdctl mk /testdir/testkey "Hello world"

Hello world

[root@lancy12 ~]# etcdctl mk /testdir/testkey "bbbb"

Error: 105: Key already exists (/testdir/testkey) [9]

[root@lancy12 ~]# etcdctl set /testdir/testkey "bbbb" #执行 set 不会报错

Hello world

[root@lancy12 ~]# etcdctl get /testdir/testkey

bbbb

etcdctl mkdir #创建一个目录

例: [root@lancy12 ~]# etcdctl mkdir testdir1

[root@lancy12 ~]# etcdctl ls /    #查看

3、非数据库操作

etcdctl member后面可以加参数 list、add、remove 命令。表示列出、添加、删除etcd集群中的实例。

例如本地启动一个etcd服务实例后,可以用如下命令进行查看。

[root@lancy12 ~]# etcdctl member list

4、把flannel的网络信息存储在etcd数据库中

[root@lancy12 ~]# etcdctl mkdir /k8s/network #创建一个目录/ k8s/network用于存储flannel网络信息的目录。

[root@lancy12 ~]# etcdctl set /k8s/network/config '{"Network": "10.255.0.0/16"}'

#给/k8s/network/config 赋一个字符串的值 '{"Network": "10.255.0.0/16"}'

[root@lancy12 ~]# etcdctl get /k8s/network/config #查看

注:在启动 flannel 之前,需要在 etcd 中添加一条网络配置记录,这个配置将用于 flannel 分配给每个 docker 的虚拟 IP 地址段。用于配置在 minion 上 docker 的 IP 地址。由于 flannel 将覆盖 docker0 上的地址,所以 flannel 服务要先于 docker 服务启动。如果 docker服务已经启动,则先停止 docker 服务,然后启动 flannel,再启动 docker

5、flannel 启动过程解析:

(1)从etcd中获取出/k8s/network/config的值

(2)划分subnet子网,并在etcd中进行注册

(3)将子网信息记录到/run/flannel/subnet.env 中

6、配置一下 flanneld 服务:

[root@lancy12 ~]# vim /etc/sysconfig/flanneld

改:FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"

为:FLANNEL_ETCD_ENDPOINTS="http://192.168.30.12:2379"

改:FLANNEL_ETCD_PREFIX="/atomic.io/network"

为:FLANNEL_ETCD_PREFIX="/k8s/network"

#注其中/k8s/network要和上面 etcd 中的 Network 对应

改:#FLANNEL_OPTIONS=""

为:FLANNEL_OPTIONS="--iface=ens33" #指定通信的物理网卡

[root@lancy12 ~]# systemctl start flanneld && systemctl enable flanneld

[root@lancy12 ~]# systemctl status flanneld

报错总结:

[root@lancy12 ~]# systemctl start flanneld   #如查这里启动 10s 以上,还没有启动成功。

查看日志

[root@lancy12 ~]# tail -f /var/log/messages #报如下图,错误

注:发现日志中 key not found /k8s/network1 ,原因是之前执行的命令 etcdctl mkdir /k8s/network和 flannel 配置文件中 FLANNEL_ETCD_PREFIX="/k8s/network" 不一样。 所以找不到。改成一致就可以了.

解决:

[root@lancy12 ~]# vim /etc/sysconfig/flanneld

改:FLANNEL_ETCD_PREFIX="/k8s/network1" # network 后面多写了一个 1

为:FLANNEL_ETCD_PREFIX="/k8s/network" #一定要写成你之前执行命令: etcdctl mkdir

/k8s/network 创建的目录

[root@lancy12 ~]# systemctl restart flanneld   #再次重启服务,解决问题了

查看:

[root@lancy12 ~]# ifconfig

[root@lancy12 ~]# ping 10.255.60.0 #这个IP地址是可以ping通的。10.255.60.0/16 这个是一个普通地址。这个 10.255.60.0 IP 地址的网络地址是 10.255.0.0/16 。

7、查看子网信息/run/flannel/subnet.env,等 flannel 起来后就可以看到了

[root@lancy12 ~]# cat /run/flannel/subnet.env

之后将会有一个脚本将 subnet.env 转写成一个docker的环境变量文件/run/flannel/docker。docker0的地址是由 /run/flannel/subnet.env 的 FLANNEL_SUBNET 参数决定的。

[root@lancy12 ~]# cat /run/flannel/docker

4) 启动lancy12上4个服务:

[root@lancy12 ~]# systemctl restart kube-apiserver kube-controller-manager kube-scheduler flanneld

[root@lancy12 ~]# systemctl status kube-apiserver kube-controller-manager kube-scheduler flanneld

[root@lancy12 ~]# systemctl enable kube-apiserver kube-controller-manager kube-scheduler flanneld

到此 etcd 和 lancy12 节点成功。

4 配置 minion1 节点服务器

4.1 配置lancy13网络,本实例采用flannel方式来配置

[root@lancy13 ~]# hostname lancy13

配置一下 flanneld 服务:

[root@lancy13 ~]# vim /etc/sysconfig/flanneld

改:FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"

为:FLANNEL_ETCD_ENDPOINTS="http://192.168.30.12:2379"

改:FLANNEL_ETCD_PREFIX="/atomic.io/network"

为:FLANNEL_ETCD_PREFIX="/k8s/network"

#注其中/k8s/network 与上面 etcd 中的 Network 对应

改:#FLANNEL_OPTIONS=""

为:FLANNEL_OPTIONS="--iface=eth0" #指定  通信的物理网卡

4.2 配置lancy13上的lancy12地址和kube-proxy

1、配置lancy13上的lancy12地址

[root@lancy13 ~]# vim /etc/kubernetes/config

改:KUBE_MASTER="--master=http://127.0.0.1:8080"

为:KUBE_MASTER="--master=http://192.168.6.20:8080"

2、kube-proxy 的作用主要是负责 service 的实现,具体来说,就是实现了内部从 pod 到 service。

[root@lancy13 ~]# grep -v '^#' /etc/kubernetes/proxy

KUBE_PROXY_ARGS=""

#不用修改,默认就是监听所有 ip

注:如果启动服务失败,可以使用 tail -f /var/log/messages 动态查看日志

4.3 配置 lancy13 kubelet

Kubelet 运行在 minion 节点上。Kubelet 组件管理 Pod、Pod 中容器及容器的镜像和卷等信息。

[root@lancy13 ~]# vim /etc/kubernetes/kubelet

改:KUBELET_ADDRESS="--address=127.0.0.1"

为:KUBELET_ADDRESS="--address=0.0.0.0"  #默认只监听 127.0.0.1,要改成:0.0.0.0,因为后期要使用 kubectl 进程连接到 kubelet 服务上,来查看pod及pod中容器的状态。如果是 127就无法进程连接 kubelet 服务。

改:KUBELET_HOSTNAME="--hostname-override=127.0.0.1"

为:KUBELET_HOSTNAME="--hostname-override=lancy13" # minion 的主机名,设置成和本主机机名一样,便于识别。

改:KUBELET_API_SERVER="--api-servers=http://127.0.0.1:8080"

为:KUBELET_API_SERVER="--api-servers=http://192.168.30.12:8080" #批定 apiserver的地址

更改pod镜像如下

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/pollyduan/pod-infrastructure:latest"

注:INFRA infrastructure [ ˈɪnfrəstrʌkt ʃə(r)] 基础设施

KUBELET_POD_INFRA_CONTAINER 指定 pod 基础容器镜像地址。这个是一个基础容器,每一个Pod 启动的时候都会启动一个这样的容器。如果你的本地没有这个镜像,kubelet 会连接外网把这个镜像下载下来。最开始的时候是在 Google 的 registry 上,因此国内因为 GFW 都下载不了导致 Pod 运行不起来。现在每个版本的 Kubernetes 都把这个镜像地址改成红帽的地址了。你也可以提前传到自己的registry上,然后再用这个参数指定成自己的镜像链接。

注:https://access.redhat.com/containers/ 是红帽的容器下载站点

4.4 启动 lancy13 服务

[root@lancy13 ~]# systemctl restart flanneld kube-proxy kubelet docker

[root@lancy13 ~]# systemctl enable flanneld kube-proxy kubelet docker

[root@lancy13 ~]# systemctl status flanneld kube-proxy kubelet docker

查看:

[root@lancy13 ~]# ifconfig

查看:kube-proxy

[root@lancy13 ~]# netstat -antup | grep proxy

到此 lancy13 minion 节点成了。

5 配置minion2结点并总结Kubernetes所有服务和端口号

5.1 配置lancy14网络,本实例采用flannel方式来配置

注:配置方法和lancy13一样,只需要修改/etc/kubernetes/kubelet中主机名为lancy14就可以了

[root@lancy13 ~]# scp /etc/sysconfig/flanneld 192.168.30.14:/etc/sysconfig/ #直接复制 lancy13的配置到lancy14

查看:

[root@lancy14 ~]# grep -v '^#' /etc/sysconfig/flanneld

[root@lancy14 ~]# systemctl start flanneld

查看:

[root@lancy14 ~]# ifconfig

5.2 配置lancy14上lancy12地址和kube-proxy

[root@lancy13 ~]# scp /etc/kubernetes/config 192.168.30.14:/etc/kubernetes/

[root@lancy13 ~]# scp /etc/kubernetes/proxy 192.168.30.14:/etc/kubernetes/

[root@lancy14 ~]# systemctl start kube-proxy

测试:

[root@lancy14 ~]# netstat -antup | grep proxy

tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 52337/kubeproxy

注: kubeproxy 监控听端口号是 10249

tcp 0 0 192.168.30.14:46299 192.168.30.12:8080 ESTABLISHED

52337/kubeproxy

注: kubeproxy 和 lancy12 的 8080 进行通信

tcp 0 0 192.168.30.14:46301 192.168.30.12:8080 ESTABLISHED

52337/kubeproxy

tcp 0 0 192.168.30.14:46300 192.168.30.12:8080 ESTABLISHED

52337/kubeproxy

5.3 配置 lancy14 kubelet

[root@lancy13 ~]# scp /etc/kubernetes/kubelet 192.168.30.14:/etc/kubernetes/

[root@lancy14 ~]# vim /etc/kubernetes/kubelet

改:KUBELET_HOSTNAME="--hostname-override=lancy13"

为:KUBELET_HOSTNAME="--hostname-override=lancy14" #这里修改成 lancy14

[root@lancy14 ~]# systemctl start kubelet

查看:已经建立连接

[root@lancy14 ~]# netstat -antup | grep 8080

5.4 启动 lancy14 服务所有服务

[root@lancy14 ~]# systemctl restart flanneld kube-proxy kubelet docker

[root@lancy14 ~]# systemctl enable flanneld kube-proxy kubelet docker

[root@lancy14 ~]# systemctl status flanneld kube-proxy kubelet docker

查看 docker0 IP: lancy13 和 lancy14 是不一样

[root@lancy14 ~]# ifconfig

测试:登录 lancy12 查看整个集群的运行状态:

[root@lancy12 ~]# kubectl get nodes

说明运行正常。

至此,整个Kubernetes集群搭建完毕

5.5 kubernetes 每个节点需要启动的服务和开放端口号

在本实验中 kubernetes 3个一共需要启动的服务,开放的端口号。

详情如下:

etcd:一共1个服务 ,通讯使用2379端口

启动服务

[root@lancy12 ~]#systemctl restart etcd

lancy12: 一共4个服务,通讯使用 8080 端口

[root@lancy12 ~]# systemctl restart kube-apiserver kube-controller-manager kube-scheduler flanneld

lancy13-minion: 一共4个服务

kubeproxy 监控听端口号是10249 ,kubelet 监听端口 10248、10250、10255、4194 端口

[root@lancy13 ~]# systemctl restart flanneld kube-proxy kubelet docker

lancy14-minion: 一共 4 个服务

[root@lancy14 ~]# systemctl restart flanneld kube-proxy kubelet docker

总结:

1 Kubernetes 和相关组件的介绍

2 配置 yum 源安装 kubernetes 及组件

3 配置 etcd 和 lancy12 节点

4 配置 minion1 节点

5 配置 minion2 结点并总结 Kubernetes 所有服务和端口号

Logo

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

更多推荐