天天看点

基于centos 7.2部署k8s v1.18.0集群

基于centos 7.2部署k8s v1.18.0集群

最近k8s的官方版本已经更新到最新版本,小编在centos7.2的系统上部署最新的v1.18.0

并将安装步骤记录下来,本文对k8s的基础知识不做介绍,如果想了解基本知识请移步

k8s官网

查阅。

组件版本:

Kubernetes v1.18.0

calico 3.13.1

docker 19.03.8

一 环境准备和部署方式

1 环境准备

Kubernetes系统可运行于多种平台之上,包括虚拟机、裸服务器或PC等,若仅用于快速了解或开发的目的,那么可直接于单个主机之上部署Kubernetes集群,将集群的所有组件均部署运行于单台主机上,本文想学习Kubernetes集群的完整功能,应该构建真正的分布式集群环境,将Master和Node等部署于多台主机之上,本文采用1 master+2 node的形式,

三台主机:

角色 操作系统 内存 cpu 磁盘/GB Ip地址

Master Centos7.2 4 2 40 172.20.128.6

Node1 Centos7.2 4 2 40 172.20.128.7

Node2 Centos7.2 4 2 40 172.20.128.8

第二种:

采用kubeadm工具进行部署,由k8s官方所提供的专门部署集群的管理工具, 每一个节点主机上包括master节点都要手动安装并运行docker,同时也都要手动安装并运行kubelet。如果将第一个节点初始化为master节点,在执行初始化这个步骤,其实就是通过kubeadm工具将API Server、etcd、controller-manager、scheduler各组件运行为Pod,也就是跑在docker上。而其他node节点,因已经运行了kubelet、docker组件,剩下的kube-proxy组件也是要运行在Pod上。

本文采用kubeadm工具进行部署,kubeadm是Kubernetes项目自带的集群构建工具,它负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,简单来讲,kubeadm是Kubernetes集群全生命周期的管理工具,可用于实现集群的部署、升级/降级及拆除,下图为kubeadm的功能示意图。

基于centos 7.2部署k8s v1.18.0集群

二 环境部署

1 环境检查

a) 主机名称

三个主机分别命名为master.k8s.com、node1.k8s.com、node2.k8s.com

hostnamectl set-hostname your-new-host-name

b) 查看修改结果

hostnamectl status

c) 设置 hostname 解析

echo "127.0.0.1 $(hostname)" >> /etc/hosts

d) 检查网络

ip address可显示默认网卡的 IP 地址,Kubernetes 将使用此 IP 地址与集群内的其他节点通信如 172.20.128.6,所有节点上 Kubernetes 所使用的 IP 地址必须可以互通(无需 NAT 映射、无安全组或防火墙隔离)

2 安装docker及kubelet

在 master 节点和 worker 节点都要执行

export REGISTRY_MIRROR=

https://registry.cn-hangzhou.aliyuncs.com

a) 检查和卸载旧版本(如果之前有安装docker)

yum remove -y docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine

b) 配置yum repository

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

yum-config-manager --add-repo

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

c) 安装并启动docker

yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io

systemctl enable docker

systemctl start docker

d) 安装 nfs-utils

yum install -y nfs-utils

yum install -y wget

e) 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

f) 关闭selinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

g) 关闭swap

swapoff -a

yes | cp /etc/fstab /etc/fstab_bak

cat /etc/fstab_bak |grep -v swap > /etc/fstab

h) 卸载旧安装版本

yum remove -y kubelet kubeadm kubectl

yum install -y kubelet kubeadm kubectl

基于centos 7.2部署k8s v1.18.0集群

i) 修改docker Cgroup Driver为systemd

sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

j) 设置 docker 镜像,提高 docker 镜像下载速度和稳定性

curl -sSL

https://kuboard.cn/install-script/set_mirror.sh

| sh -s ${REGISTRY_MIRROR}

k) 重启 docker,并启动 kubelet

systemctl daemon-reload

systemctl restart docker

systemctl enable kubelet && systemctl start kubelet

docker version

3 初始化master节点

设置环境变量:

export MASTER_IP=172.20.128.6

export APISERVER_NAME=apiserver.demo

export POD_SUBNET=10.100.0.1/16

echo "172.20.128.6 ${APISERVER_NAME}" >> /etc/hosts

配置kubeadm-config.yaml文件

cat < ./kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2

kind: ClusterConfiguration

kubernetesVersion: v1.18.0

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

controlPlaneEndpoint: "172.20.128.6:6443"

networking:

serviceSubnet: "10.96.0.0/16"

podSubnet: "10.100.0.1/16"

dnsDomain: "cluster.local"

EOF

kubeadm init

kubeadm init --config=kubeadm-config.yaml --upload-certs

执行完毕后如下截图。

kubeadm join 172.20.128.6:6443 --token 4sad52.9lqsr40fmmi29723 --discovery-token-ca-cert-hash sha256:edddce9484037bc6e2d19f3c7ce53c629cb97c198f761c9de49463be85a21dc5

基于centos 7.2部署k8s v1.18.0集群

3 配置 kubectl

rm -rf /root/.kube/

mkdir /root/.kube/

cp -i /etc/kubernetes/admin.conf /root/.kube/config

4 安装 calico 网络插件

wget

https://kuboard.cn/install-script/calico/calico-3.13.1.yaml

kubectl apply -f calico-3.13.1.yaml

基于centos 7.2部署k8s v1.18.0集群

5 master上验证

执行命令验证集群状态已经正常

kubectl get nodes

kubectl get nodes -o wide

基于centos 7.2部署k8s v1.18.0集群

到此,基于centos7.2的K8S v1.18.0集群安装完毕并验证集群运行正常。