我是靠谱客的博主 洁净楼房,最近开发中收集的这篇文章主要介绍k8s集群部署一、环境准备二、部署前准备三、配置k8s集群,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、环境准备
  • 二、部署前准备
        • 1、检查docker版本、关闭防火墙及Selinux、清空iptables规则、禁用Swap交换分区
        • 2、配置ssh免密登录、主机名解析及yum源
        • 3、打开iptables桥接功能及路由转发
  • 三、配置k8s集群
        • 1、安装部署k8s相关工具
        • 2、下载并导入镜像
        • 3、初始化主节点
        • 4、部署网络Flannel
        • 5、node01及node02加入master集群

一、环境准备

系统版本主机名IP基于的服务
CentOS 7.8master10.206.44.62Docker
CentOS 7.8node0110.206.44.64Docker
CentOS 7.5node0210.206.47.167Docker

二、部署前准备

1、检查docker版本、关闭防火墙及Selinux、清空iptables规则、禁用Swap交换分区

三台主机均需配置

#确认docker版本
[root@master appdeploy]# docker -v
Docker version 19.03.9, build 9d988398e7
#关闭防火墙状态
[root@master appdeploy]# systemctl stop firewalld
[root@master appdeploy]# systemctl disable firewalld
[root@master appdeploy]# systemctl status firewalld
● firewalld.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
#关闭Selinux
[root@master appdeploy]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce: SELinux is disabled
#清空iptables规则
[root@master appdeploy]# iptables -F
#重启docker服务
[root@master appdeploy]# systemctl daemon-reload
[root@master appdeploy]# systemctl restart docker
#关闭虚拟内存
[root@master appdeploy]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce: SELinux is disabled
#重新加载挂载的配置文件
[root@master appdeploy]# mount -a
#确认输出的swap行都为0
[root@master appdeploy]# free -h
total
used
free
shared
buff/cache
available
Swap:
0B
0B
0B

2、配置ssh免密登录、主机名解析及yum源

三台主机均需配置

#添加三台主机的解析
[root@master appdeploy]# vim /etc/hosts
10.206.44.62 master
10.206.44.64 node01
10.206.47.167 node02
#配置yum源
[root@master appdeploy]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubneters
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
#查看配置的yum源中有没有可用的包
[root@master appdeploy]# yum repolist
repo id
repo name
status
kubernetes
kubneters
810
#返回的这一行不可为0
#制作yum元数据缓存
[root@master appdeploy]# yum makecache

3、打开iptables桥接功能及路由转发

#打开iptables桥接功能
[root@master appdeploy]# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
#刷新配置
[root@master appdeploy]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# PS:如果报错“找不到文件”,需要执行下面的命令以便加载一个模块。
[root@master appdeploy]# modprobe br_netfilter
#加载br_netfileter模块
#开启路由转发
[root@master appdeploy]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#刷新配置
[root@master appdeploy]# sysctl -p
net.ipv4.ip_forward = 1

三、配置k8s集群

1、安装部署k8s相关工具

三台主机均需配置

#安装kubeadm、kubectl、kubelet
[root@master appdeploy]# yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
#设置启动开机自启kubelet服务
[root@master appdeploy]# systemctl enable kubelet.service

2、下载并导入镜像

三台主机均需配置
Kubeadm在初始化k8s集群的时候,会从谷歌云服务器取pull所需的镜像,由于国内网络的原因,无法直接从谷歌pull镜像,所以在初始化之前要先将镜像导入到k8s集群中。

下载镜像 kubeadm-basic.images.tar:https://download.csdn.net/download/qq_42124528/85582716

[root@master appdeploy]# mkdir images
[root@master appdeploy]# cd images/
#上传镜像并解压
[root@master images]# rz
[root@master images]# tar -zxvf kubeadm-basic.images.tar.gz
#确认上传的镜像包,共7个
[root@master kubeadm-basic.images]# ls
apiserver.tar
coredns.tar
etcd.tar
kubec-con-man.tar
pause.tar
proxy.tar
scheduler.tar
#创建load-images.sh,用于批量导入kubeadm-basic镜像
[root@master appdeploy]# vim load-images.sh
#!/bin/bash
ls /home/appdeploy/images/kubeadm-basic.images > /tmp/image-list.txt
cd /home/appdeploy/images/kubeadm-basic.images
for i in $(cat /tmp/image-list.txt)
do
docker load -i $i
done
rm -rf /tmp/image-list.txt
#给创建的脚本赋权
[root@master appdeploy]# chmod +x load-images.sh
#执行脚本批量导入镜像
[root@master appdeploy]# ./load-images.sh
Loaded image: k8s.gcr.io/kube-apiserver:v1.15.1
Loaded image: k8s.gcr.io/coredns:1.3.1
Loaded image: k8s.gcr.io/etcd:3.3.10
Loaded image: k8s.gcr.io/kube-controller-manager:v1.15.1
Loaded image: k8s.gcr.io/pause:3.1
Loaded image: k8s.gcr.io/kube-proxy:v1.15.1
Loaded image: k8s.gcr.io/kube-scheduler:v1.15.1

3、初始化主节点

只在主节点执行

[root@master appdeploy]# kubeadm init --kubernetes-version=v1.15.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
#初始化成功后,复制生成的join命令,用于其他节点加入到当前k8s集群,有效期只有24小时
#若初始化失败,可以执行kubeadm reset进行重置
#kubeadm join 10.206.44.62:6443 --token bdve5v.zc3grkcu1cizv1pe
--discovery-token-ca-cert-hash sha256:a21d64843fae7e2ccfad093f7e529bf4a944960ef3a300b66e1b895ee3a24a26
# PS:如果超出24小时,则需在主节点上重新获得新的加入节点命令
[root@master appdeploy]# kubeadm token create --print-join-command
#依次执行
[root@master appdeploy]# mkdir -p $HOME/.kube
[root@master appdeploy]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master appdeploy]# chown $(id -u):$(id -g) $HOME/.kube/config
#查看节点状态
[root@master appdeploy]# kubectl get nodes
NAME
STATUS
ROLES
AGE
VERSION
master
NotReady
master
4m59s
v1.15.1
#可以看到master当前状态为未准备

4、部署网络Flannel

三台主机均需配置

#方法1
[root@master appdeploy]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#方法2
#将github官网指定的.yml配置文件下载到本地
[root@master appdeploy]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#或者直接下载 flannel.yaml:https://download.csdn.net/download/qq_42124528/85582540
#指定下载的.yml文件执行相应命令
[root@master appdeploy]# kubectl apply -f flannel.yaml
#部署完成后,查看pod状态
[root@master appdeploy]# kubectl get pod -n kube-system
NAME
READY
STATUS
RESTARTS
AGE
kube-flannel-ds-skxb8
0/1
Init:ImagePullBackOff
0
42m
#若STATUS为RUNNING,则可忽略导入flanneld镜像步骤
#若STATUS为Init:ImagePullBackOff,则需进行以下步骤导入镜像
#可以到 https://github.com/coreos/flannel/releases 官方仓库下载镜像, 或者直接使用下面链接下载
#下载镜像 flanneld-v0.18.1-amd64.docker:https://download.csdn.net/download/qq_42124528/85582489
#上传镜像
[root@master appdeploy]# rz
#导入镜像
[root@master appdeploy]# docker load < flanneld-v0.18.1-amd64.docker
64242626f2eb: Loading layer [==================================================>]
5.893MB/5.893MB
ebd5ac721ae3: Loading layer [==================================================>]
12.35MB/12.35MB
2d494ab70ef9: Loading layer [==================================================>]
2.743MB/2.743MB
d022ff88f29e: Loading layer [==================================================>]
42.23MB/42.23MB
5d07ac15a06b: Loading layer [==================================================>]
5.632kB/5.632kB
b1c230abd455: Loading layer [==================================================>]
9.216kB/9.216kB
ada31875f6e2: Loading layer [==================================================>]
7.68kB/7.68kB
Loaded image: flannelcni/flannel:v0.18.1-amd64
#查看docker镜像,已有flannelcni/flannel:v0.18.1-amd64
[root@master appdeploy]# docker images
REPOSITORY
TAG
IMAGE ID
CREATED
SIZE
flannelcni/flannel
v0.18.1-amd64
e237e8506509
38 hours ago
62.2MB
#查看pod状态,全部为Running
[root@k8s-master01 tmp]# kubectl get pod -n kube-system
NAMESPACE
NAME
READY
STATUS
RESTARTS
AGE
kube-system
kube-flannel-ds-cs8wf
1/1
Running
0
5h54m
kube-system
kube-proxy-p5h78
1/1
Running
0
5h54m
#此时STATUS均为Running
#再次查看master状态,已经变成了Ready
[root@master appdeploy]# kubectl get nodes
NAME
STATUS
ROLES
AGE
VERSION
master
Ready
master
20m
v1.15.1

5、node01及node02加入master集群

以下操作需要在node01及node02分别执行一次

[root@node01 appdeploy]# kubeadm join 10.206.44.62:6443 --token exv0mq.0yk6wtb7zjxc5cim
--discovery-token-ca-cert-hash sha256:a21d64843fae7e2ccfad093f7e529bf4a944960ef3a300b66e1b895ee3a24a26
#This node has joined the cluster

当在node01及node02依次配置完成后,即可在master上进行查看节点状态

[root@master appdeploy]# kubectl get nodes
NAME
STATUS
ROLES
AGE
VERSION
master
Ready
master
6h
v1.15.1
node01
Ready
<none>
4h
v1.15.1
node02
Ready
<none>
21m
v1.15.1

最后

以上就是洁净楼房为你收集整理的k8s集群部署一、环境准备二、部署前准备三、配置k8s集群的全部内容,希望文章能够帮你解决k8s集群部署一、环境准备二、部署前准备三、配置k8s集群所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部