使用Kubeadm建立k8s集群之部署规划(三十)

前言         

上一篇咱们讲述了使用Kubectl管理k8s集群,那么接下来,咱们将使用kubeadm来启动k8s集群。html

部署k8s集群存在必定的挑战,尤为是部署高可用的k8s集群更是颇为复杂(后续会讲)。所以本教程会在部署的过程当中穿插讲解一些部署相关知识、原理和步骤,好比kubeadm、kubelet以及启动集群时的实际部署动做等等。整个部署过程所有脚本化,以便各位参考和学习。node

因整个集群部署教程篇幅较长,所以会拆分红几篇进行说明。linux


 

目录

使用Kubeadm建立k8s集群docker

  • Kubeadm概述 json

  • Kubelet概述 centos

  • 定义集群部署目标和规划 api

  • 部署规划bash


 

使用Kubeadm建立k8s集群

Kubeadm概述

Kubeadm 是一个命令行工具,它主要提供了“kubeadm init” 以及 “kubeadm join”这两个命令来快速建立和初始化kubernetes 集群。服务器

Kubeadm经过执行必要的操做来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是以前的节点准备工做。一样的,诸如安装各类各样的插件,例如 Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。网络

主要命令

其主要命令和说明以下表所示:

 

命令

说明

kubeadm init

启动一个Kubernetes主节点

kubeadm join

启动一个Kubernetes工做节点而且将其加入到集群

kubeadm upgrade

更新一个 Kubernetes 集群到新版本

kubeadm config

查看存储在集群中的kubeadm配置,例如“kubeadm config images list”能够列出kubeadm须要的镜像

kubeadm token

令牌管理

kubeadm reset

重置集群,也就是将还原kubeadm init 或者 kubeadm join 对主机所作的任何更改

kubeadm version

打印 kubeadm 版本

 

 

Kubelet概述

kubelet 是在每一个节点上运行的主要“节点代理”。简单地说,kubelet 的主要功能就是定时获取节点上pod/container 的指望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态,并确保它们可以健康的运行。所以,kubelet的主要功能为:

  • pod管理

  • 容器健康检查

  • 容器监控 

注意,不是 Kubernetes建立的容器将不在 kubelet 的管理范围。

了解了这些,接下来,咱们来使用Kubeadm来建立集群。

 

定义集群部署目标和规划

有目标,咱们才能有的放矢。在本节内容中,咱们将基于三台虚拟机来搭建一个k8s集群,其中一台做为主节点,另外两台做为工做节点。

具体部署架构以下所示:

1.安装规划

服务器规划:

主机名称

操做系统

IP

系统配置

备注

k8s-master

CentOS-7-x86_64

172.16.2.201

2核2G

做为主节点

k8s-node1

CentOS-7-x86_64

172.16.2.202

2核2G

做为工做节点

k8s-node2

CentOS-7-x86_64

172.16.2.203

2核2G

做为工做节点

值得注意的是:

  • 服务器最小内存不得小于2G,CPU核心数最少为2;

  • 群集中全部的计算机之间拥有彻底的网络链接(公共或专用网络);

  • 全部机器都有sudo权限;

相关环境的搭建和初始化笔者这里先行略过。

如下内容均使用root帐户安装和配置。

 

Pod 分配 IP 段:10.244.0.0/16

kubernetes-version:v1.15.0

apiserver-advertise-address:172.16.2.201

 

部署规划

接下来,咱们就开始按规划进行部署。主体步骤以下所示:

1.主机和IP设置

各节点主机名称和IP设置如表所示:

主机名称

IP

k8s-master

172.16.2.201

k8s-node1

172.16.2.202

k8s-node2

172.16.2.203

接下来咱们以master(k8s-master)为例,相关设置步骤以下所示(请注意替换相关参数):

  • 设置主机名称以及修改主机记录

bash:
#设置Host名称
hostnamectl set-hostname k8s-master #查看host名称
hostname #修改Host文件,给127.
0.0.1添加hostname
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 k8s-master
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
"> /etc/hosts #查看修改结果
cat
/etc/hosts

  • 配置网络服务以及设置固定IP

bash:
#配置网卡
echo "

DEVICE=eth0
TYPE=Ethernet
IPADDR=172.16.2.201
PREFIX=24
NETMASK=255.255.255.0
NETWORK=172.16.2.0
GATEWAY=172.16.2.254
BROADCAST=172.16.2.255
DEFROUTE=yes
ONBOOT=yes
USERCTL=yes
BOOTPROTO=static
NAME=eth0
IPV4_FAILURE_FATAL=yes
UUID=5ed1bf4a-4be2-4040-ad55-fea853b849d1
"> /etc/sysconfig/network-scripts/ifcfg-eth0 #编辑/etc/sysconfig/network
echo "NETWORKING=yes
HOSTNAME=k8s-master
"> /etc/sysconfig/network #编辑/etc/resolv.conf,设置DNS
echo "nameserver 172.16.2.254
nameserver 114.114.114.114
nameserver 8.8.8.8
"> /etc/resolv.conf #重启网络服务systemctl restart network.service #重启网络服务
systemctl status network.service #查看网络服务状态

  • 系统设置

bash:
#关闭Selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

#永久关闭
Swapswapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
echo "vm.swappiness = 0">> /etc/sysctl.conf  

#修改内核参数cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF

 

2.Docker安装

这里推荐使用如下脚原本安装官方已经充分测试过的指定版本的Docker-ce以及设置加速器:

# 安装必须的包
yum install yum-utils device-mapper-persistent-data lvm2
# 添加Docker仓库
yum-config-manager \  
--add-repo \ 
 https://download.docker.com/linux/centos/docker-ce.repo
# 安装指定版本的Docker CEyum update &&
 yum install docker-ce-18.06.2.ce
# 建立 /etc/docker 目录
mkdir /etc/docker
# 设置守护程序
cat > /etc/docker/daemon.json <<EOF
{ 
"exec-opts": ["native.cgroupdriver=systemd"], 
"log-driver": "json-file", 
"log-opts": {    
"max-size": "100m" 
 },  
"storage-driver": "overlay2",  
"storage-opts": [    
"overlay2.override_kernel_check=true"  
] ,  
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# 重启Docker服务
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

3.主机端口设置

  • 主节点端口设置:

协议

方向

端口

说明

TCP

入站

6443*

Kubernetes API server

TCP

入站

2379-2380

etcd server client API

TCP

入站

10250

Kubelet API

TCP

入站

10251

kube-scheduler

TCP

入站

10252

kube-controller-manager

 

  • 工做节点端口设置:

协议

方向

端口

说明

TCP

入站

10250

Kubelet API

TCP

入站

30000-32767

NodePort Services

 

CentOS默认没有安装防火墙,须要使用如下命令安装和启用防火墙:

#安装iptables服务
yum install iptables-services
systemctl enable iptables.servicesy
stemctl start iptables.service

而后使用编辑器按Demo编辑文件/etc/sysconfig/iptables设置准入端口便可。

在开发实验阶段,为了方便,你们也能够直接禁用防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

 

往期内容连接

相关文章
相关标签/搜索