kubernetes学习五-kubernetes集群二进制安装

一、简介

今天这篇文章教给大家如何快速部署一套Kubernetes集群。K8S集群部署有几种方式:kubeadmminikube二进制包。前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常不利用学习。

所以,这篇文章也是使用二进制包部署Kubernetes集群。

image-20220223144316032

二、环境规划

环境说明

软件 版本
Centos 7
etcd v3.5.2
Docker v20.10.12
kubelet v1.23.3
kubectl v1.23.3

关闭selinux。

角色 IP 组件
master 192.168.164.128 etcd kube-apiserver kube-controller-manager kube-scheduler docker
node01 192.168.164.129 kubelet kube-proxy docker
node02 192.168.164.130 kubelet kube-proxy docker

三、部署集群

3.1下载二进制包

打开下面网址,下载下面两个红色框框的包。

kubernetes/CHANGELOG-1.23.md at master · kubernetes/kubernetes · GitHub

image-20220223144658913

下载完成后,上传到服务器:

kubernetes-server-linux-amd64.tar.gz 上传到master节点。

kubernetes-node-linux-amd64.tar.gz 上传到node节点。

卸载旧程序:

1
2
3
4
5
6
7
8
9
10
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

3.2 master节点操作

3.2.1 安装etcd

etcd服务作为Kubernetes集群的主数据库,在安装Kubernetes各服务之前需要首先安装和启动。

1
2
3
4
5
6
7
# yum install etcd –y
# vi /etc/etcd/etcd.conf
修改:
ETCD_NAME="default"
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
1
2
3
4
5
6
7
启动:
$ systemctl daemon-reload
$ systemctl enable etcd
$ systemctl start etcd

$ etcdctl endpoint health
0.0.0.0:2379 is healthy: successfully committed proposal: took = 4.295226ms

注意:Ubuntu系统etcd配置文件在/etc/default/etcd。

3.2.2 安装Master节点组件

1
2
3
4
5
$ tar zxvf kubernetes-server-linux-amd64.tar.gz

$ mkdir -p /opt/kubernetes/{bin,cfg}

$ mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin

3.2.2.1 Apiserver

新建配置文件:

#vi /opt/kubernetes/cfg/kube-apiserver

添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
# 日志级别
KUBE_LOG_LEVEL="--v=4"
# Etcd服务地址
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.164.128:2379"
# API服务监听地址
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# API服务监听端口
KUBE_API_PORT="--insecure-port=8080"
# 对集群中成员提供API服务地址
KUBE_ADVERTISE_ADDR="--advertise-address=192.168.164.128"
# 允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
# 集群分配的IP范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.10.10.0/24"

新建systemd服务文件:/lib/systemd/system/kube-apiserver.service

添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[Unit]

Description=Kubernetes API Server

Documentation=https://github.com/kubernetes/kubernetes

[Service]

EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver

\#ExecStart=/opt/kubernetes/bin/kube-apiserver ${KUBE_APISERVER_OPTS}

ExecStart=/opt/kubernetes/bin/kube-apiserver \

${KUBE_LOGTOSTDERR} \

${KUBE_LOG_LEVEL} \

${KUBE_ETCD_SERVERS} \

${KUBE_API_ADDRESS} \

${KUBE_API_PORT} \

${KUBE_ADVERTISE_ADDR} \

${KUBE_ALLOW_PRIV} \

${KUBE_SERVICE_ADDRESSES}

Restart=on-failure

[Install]

WantedBy=multi-user.target

启动服务,并设置开机启动:

1
2
3
$ systemctl daemon-reload
$ systemctl enable kube-apiserver
$ systemctl restart kube-apiserver

注意:apiserver默认支持etcd3,如果是etcd2,需启动时指定版本选项–storage-backend=etcd2

参考文献:

docker-compose教程:https://blog.csdn.net/pushiqiang/article/details/78682323 //用于把多个服务串联起来统一管理

Kubernetes常用命令:https://www.cnblogs.com/FRESHMANS/p/8444098.html

Kubernetes中文社区:https://www.kubernetes.org.cn/k8s

群集搭建:https://blog.csdn.net/zhenliang8/article/details/78611004

web管理平台portainer:https://www.cnblogs.com/gao88/p/7011175.html

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!