云原生K8s的介绍及搭建(0基础都可以完成部署)
Kubernetes是Google 开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。Kubernetes基于docker容器的云平台,简写成:k8s。KubernetesKubernetes先按以下顺序来介绍:1、master:kubernetes管理节点2、apiserver:提供接口服务,用户通过apiserver来管理整
文章目录:
3.4 配置etcd,指定容器云中 docker 的 IP 网段
4.1 配置lancy13网络,本实例采用flannel方式来配置
4.2 配置lancy13上的lancy12地址和kube-proxy
5.1 配置lancy14网络,本实例采用flannel方式来配置
5.2 配置lancy14上lancy12地址和kube-proxy
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 所有服务和端口号
更多推荐
所有评论(0)