kubernetes集群搭建(二进制方式)

本文记述了在centos7系统上搭建kubernetes集群的步骤

一.kubernetes集群简介

kubernetes集群有一个master节点和多个node节点,master节点负责控制集群的运作,node节点用来部署pod等容器化服务,下图是一个kubernetes集群的示意图
在这里插入图片描述

各节点需要启动的服务

所有节点都需要安装好docker,并启动docker服务,master和node需要启动的kubernetes服务不同
master节点上需要启动的服务有:docker、etcd、kube-apiserver、kube-controller-manager、 kubescheduler
node节点上需要启动的服务有:docker、kubelet、kube-proxy

kubernetes集群搭建方式

首先先把master节点配置好,启动需要的5个服务,启动完成后便不用再管,开始配置node节点。加入node节点时不需要停止并修改master节点,只需要在node节点的服务配置文件中配置好master节点的ip即可,node节点的服务启动成功后便会自动连接进kubernetes集群。因此kubernetes集群的扩展性非常好,可以方便的加入新节点

二.kubernetes集群搭建详解

1.准备工作

1.1 关闭系统防火墙
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
1.2 安装配置docker

master节点和node节点都需要安装docker
运行命令yum install docker安装docker,如果这一步有错就更新一下yumyum update
启动docker

systemctl start docker     

查看docker服务运行性状态

systemctl status docker    

状态显示active表示docker正常运行,可以进行下一步

1.3 安装配置etcd

以二进制方式安装kubernetes集群首先要下载kubernetes安装包,及etcd安装包

  • kubernetes-server-linux-amd64.tar.gz
  • etcd-v3.3.9-linux-amd64.tar.gz

master节点以上两个安装包,node节点只需要kubernetes的安装包
将安装包上传并解压,在master节点中,将etcd安装包中的etcd、etcdctl两个文件复制到/usr/bin目录下,将kubernetes安装包中的kube-apiserver、kube-controller-manager、kube-scheduler、kubectl四个文件复制到/usr/bin目录下。在node节点中,将kubernetes安装包中的kubelet、kube-proxy两个文件复制到/usr/bin目录下

准备工作完成

2.配置master节点

2.1 启动etcd服务

编辑文件/usr/lib/systemd/system/etcd.service,添加以下内容:

[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
EnvironmentFile=-/etc/etcd/etcd.conf
WorkingDirectory=/var/lib/etcd/
ExecStart=/usr/bin/etcd
Restart=on-failure
[Install]
WantedBy=multi-user.target

使用命令启动并测试etcd服务

systemctl daemon-reload                       #该命令使修改后的配置重新加载
systemctl enable etcd.service              #设置开机启动etcd服务
mkdir -p /var/lib/etcd/                            #创建etcd工作目录
systemctl start etcd.service               #启动etcd服务
etcdctl cluster-health                           #查看etcd服务的健康状态
2.2 kube-apiserver服务

编辑配置文件 /usr/lib/systemd/system/kube-apiserver.service

[Unit]
Description=Kubernetes API Server

Documentation=https://github.com/kubernetes/kubernetes
After=etcd.service
Wants=etcd.service

[Service]
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
Type=notify

[Install]
WantedBy=multi-user.target

创建工作目录mkdir /etc/kubernetes

编辑配置文件 /etc/kubernetes/apiserver
注意该配置文件中的内容一个字母都不能错,不能有多的空格,所有配置在同一行,不能另起一行。否则服务不能正常启动,如果安装过程中该服务没有正常启动,那么要认真检查配置文件的内容

KUBE_API_ARGS="--storage-backend=etcd3 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,DefaultStorageClass,ResourceQuota --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
2.3 kube-controller-manager服务

编辑配置文件/usr/lib/systemd/system/kube-controller-manager.service

[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=-/etc/kubernetes/controller-manager
ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

编辑配置文件/etc/kubernetes/controller-manager
192.168.153.139是我的集群主节点的ip,配置过程中要记得改ip

KUBE_CONTROLLER_MANAGER_ARGS="--master=http://192.168.153.139:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
2.4 kube-schedule服务

编辑配置文件/usr/lib/systemd/system/kube-scheduler.service

[Unit]
Description=Kubernetes Scheduler

Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
EnvironmentFile=-/etc/kubernetes/scheduler
ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

编辑配置文件 /etc/kubernetes/scheduler
这里也要改ip

KUBE_SCHEDULER_ARGS="--master=http://192.168.153.139:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
2.5 启动并测试

运行命令启动三个服务:

systemctl daemon-reload
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service

检查三个服务是否正常启动:

systemctl status kube-apiserver.service
systemctl status kube-controller-manager.service
systemctl status kube-scheduler.service

3.配置node节点

3.1 kubelet服务

编辑配置文件/usr/lib/systemd/system/kubelet.service

[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet $KUBELET_ARGS
Restart=on-failure
KillMode=process

[Install]
WantedBy=multi-user.target

创建kubelet工作目录mkdir -p /var/lib/kubelet
编辑配置文件 /etc/kubernetes/kubelet
注意修改ip,192.168.153.138是我的node节点的ip,在哪台服务器上配置node节点,这里就改成对应服务器的ip

KUBELET_ARGS="--pod_infra_container_image=192.168.153.138:5000/google_containers/pause-amd64.3.0 --kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=192.168.153.138 --logtostderr=false --log-dir=/var/log/kubernetes --v=2 --fail-swap-on=false"

编辑配置文件/etc/kubernetes/kubeconfig
注意改主节点ip

apiVersion: v1
kind: Config
clusters:
  - cluster:
      server: http://192.168.153.139:8080
    name: local
contexts:
  - context:
      cluster: local
    name: mycontext
current-context: mycontext
3.2 kube-proxy服务

编辑配置文件/usr/lib/systemd/system/kube-proxy.service
注意第五行和第六行,如果是linux需要配成network.service,ubuntu系统则需要配置成networking.service

[Unit]
Description=Kubernetes Kube-proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.service
Requires=network.service
[Service]
EnvironmentFile=/etc/kubernetes/proxy
ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS
Restart=on-failure
LimitNOFILE=65536
KillMode=process
[Install]
WantedBy=multi-user.target

编辑配置文件 /etc/kubernetes/proxy

KUBE_PROXY_ARGS="--master=http://192.168.153.139:8080 --hostname-override=192.168.153.138 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
3.3 启动并测试
systemctl daemon-reload
systemctl enable kubelet
systemctl start kubelet
systemctl status kubelet
systemctl enable kube-proxy
systemctl start kube-proxy
systemctl status kube-proxy
3.4 在master节点上查看node节点是否成功接入

在master节点上运行命令kubectl get nodes便可以查看kubernetes集群的所有节点

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值