• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
麦兜大表哥
博客园    首页    新随笔    联系   管理    订阅  订阅
k8s集群部署

kubernetes集群部署

 

主机规划

主机名

IP地址

操作系统

配置

Master

192.168.0.230

Centos 7.6

2核2g

Note1

192.168.0.231

Centos 7.6

1核1g

Note2

192.168.0.232

Centos 7.6

1核1g

 

 

kubernetes集群环境准备

以下环境配置需在三台主机都要执

1.关闭防火墙并设置防火墙随机不自启(kubernetes和docker在运行中会产生大量防火墙规则)

[root@master ~]# systemctl stop firewalld

[root@master ~]# systemctl disable firewalld

2.关闭SELinux系统内核安全机制

#临时关闭

[root@master ~]# setenforce 0

#永久关闭

[root@master ~]# vi /etc/selinux/config

...

SELINUX=disabled

3.配置本地yum源

#清空yum路径下系统自带的仓库文件

[root@master ~]# rm -rf /etc/yum.repos.d/*

#创建挂载点

[root@master ~]# mkdir /mnt/centos

#挂载本地iso镜像文件至挂载点目录(临时挂载与永久挂载)

[root@master ~]# mount /dev/cdrom /mnt/centos/

#永久挂载

[root@master ~]# vi /etc/fstab

...

/dev/cdrom /mnt/centos iso9660 defaults 0 0

#重加加载/etc/fstab配置文件

[root@master ~]# mount -a

#创建本地yum仓库

[root@master ~]# vi /etc/yum.repos.d/local.repo

[local]

name=local_centosbaseurl=file:///mnt/centos

enabled=1

gpgcheck=0

#查看仓库可用软件包

[root@master ~]# yum repolist

4.配置本地主机名与IP地址解析(为了后面对集群节点的调用,企业中推荐使用内部DNS服务器)

[root@master ~]# vim /etc/hosts

192.168.0.230 master

192.168.0.231 node1

192.168.0.232 node2

 

#测试解析

[root@master ~]# ping node1

[root@master ~]# ping node2

 

5.配置时间同步,保证每一个节点时间一致

#安装时间同步服务

[root@master ~]# yum -y install chrony

#启动chronyd

[root@master ~]# systemctl start chronyd

[root@master ~]# systemctl enable chronyd

#查看时间

[root@master ~]# date

6.禁用swap交换分区(kubernetes强制要求禁用)

#修改/etc/fstab文件,注释掉swap自动挂载一行即可,修改后需要重启系统生效,这一步可放在最后环境

配置后一起重启

[root@master ~]# vim /etc/fstab

...

#/dev/mapper/centos-swap swap swap defaults 0 0

7.修改Linux内核参数,添加网桥过滤器和地址转发功能

#编辑/etc/sysctl.d/kubernetes.conf文件添加如下配置(该文件默认不存在)

[root@master ~]# vim /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

#重新加载配置

[root@master ~]# sysctl -p

#加载网桥过滤器模块

[root@master ~]# modprobe br_netfilter

#查看网桥过滤器模块是否加载成功

[root@master ~]# lsmod | grep br_netfilter

br_netfilter 22256 0bridge 151336 1 br_netfilter

8.配置ipvs功能,在kubernetes中Service有两种代理模型,一种是基于iptables的,一种是基于ipvs,

两者对比ipvs的性能要高,如果想要使用ipvs模型,需要手动载入ipvs模块

#安装ipset和ipvsadm软件

[root@master ~]# yum -y install ipset ipvsadm

#添加需要加载的模块写入脚本文件

[root@master ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

#设置脚本权限

[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

#执行脚本

[root@master ~]# /etc/sysconfig/modules/ipvs.modules

#查看对应的模块是否加载成功

[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

nf_conntrack_ipv4 15053 0

nf_defrag_ipv4 12729 1 nf_conntrack_ipv4

ip_vs_sh 12688 0

ip_vs_wrr 12697 0

ip_vs_rr 12600 0

ip_vs 145497 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr

nf_conntrack 133095 2 ip_vs,nf_conntrack_ipv4

libcrc32c 12644 3 xfs,ip_vs,nf_conntrack

#重新启动系统

[root@master ~]# reboot

#检查SELinux是否关闭

[root@master ~]# getenforce

Disabled

#检查swap分区是否关闭

[root@master ~]# free -h

...

wap: 0B 0B 0B

 

 

9.安装docker、kubeadm、kubelet、kubectl程序(三台主机都需要安装)

#创建阿里Base源与epel源用于安装依赖包

[root@master ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo

https://mirrors.aliyun.com/repo/Centos-7.repo

[root@master ~]# wget -O /etc/yum.repos.d/epel.repo

http://mirrors.aliyun.com/repo/epel-7.repo

#生成yum缓存提高软件下载速度[root@master ~]# yum makecache

#安装yum-utils软件用于提供yum-config-manager程序

[root@master ~]# yum install -y yum-utils

#使用yum-config-manager创建docker存储库(阿里)

[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-

ce/linux/centos/docker-ce.repo

#查看当前镜像源中支持的docker版本

[root@master ~]# yum list docker-ce --showduplicates

docker-ce-18.06.3.ce-3.el7 #该版本为特定版

#安装特定版docker-ce,安装时需要使用--setopt=obsoletes=0参数指定版本,否则yum会自动安装高

版本

[root@master ~]# yum -y install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7

#查看docker版本信息

[root@master ~]# docker --version

#创建/etc/docker目录,并在/etc/docker目录下添加一个配置文件

[root@master ~]# mkdir /etc/docker

#Docker默认使用的Cgroup Driver为默认文件驱动,而k8s默认使用的文件驱动为systemd,k8s要求驱

动类型必须要一致,所以需要将docker文件驱动改成systemd

[root@master ~]# cat <<EOF > /etc/docker/daemon.json

{

"registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

#启动docker程序

[root@master ~]# systemctl start docker

#设置docker随机自启

[root@master ~]# systemctl enable docker

10.安装kubernetes程序

#创建阿里kubernetes仓库

[root@master ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

EOF

#查看仓库可用软件包

[root@master ~]# yum repolist

#生成yum缓存提高软件下载速度

[root@master ~]# yum makecache

#安装kubeadm、kubelet、kubectl程序

[root@master ~]# yum -y install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-

1.17.4-0 kubectl-1.17.4-0

#配置kubelet的cgroup,编辑/etc/sysconfig/kubelet文件

[root@master ~]# vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

KUBELET_PROXY_MODE="ipvs"

#设置kubelet随机自启

[root@master ~]# systemctl enable kubelet

11.下载集群镜像

#在安装kubernetes集群前,必须要准备好集群需要的镜像,所需的镜像可以通过下面命令查看

[root@master ~]# kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.17.4

k8s.gcr.io/kube-controller-manager:v1.17.4

k8s.gcr.io/kube-scheduler:v1.17.4

k8s.gcr.io/kube-proxy:v1.17.4

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.4.3-0

k8s.gcr.io/coredns:1.6.5

#定义镜像列表,应为此镜像在kubernetes仓库中,由于网络原因无法下载,下面提供了一种替代方案

[root@master ~]# images=(

kube-apiserver:v1.17.4

kube-controller-manager:v1.17.4

kube-scheduler:v1.17.4

kube-proxy:v1.17.4

pause:3.1

etcd:3.4.3-0

coredns:1.6.5

)

#从阿里镜像仓库下载镜像

[root@master ~]# for imageName in ${images[@]};do

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName  

docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName

done

#查看镜像(标签以变成k8s标签)

[root@master ~]# docker images

REPOSITORY

k8s.gcr.io/kube-proxy

k8s.gcr.io/kube-scheduler

k8s.gcr.io/kube-apiserver

k8s.gcr.io/kube-controller-manager

k8s.gcr.io/coredns

k8s.gcr.io/etcd

k8s.gcr.io/pause

kubernetes集群初始化

Master节点创建集群(该操作只在master主机执行)

[root@master ~]# kubeadm init \

--kubernetes-version=v1.17.4 \

--pod-network-cidr=10.244.0.0/16 \

--service-cidr=10.96.0.0/12 \

--apiserver-advertise-address=192.168.0.230  (控制节点IP)

[root@master ~]# mkdir -p $HOME/.kube

[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点加入集群

[root@node1 ~]# kubeadm join 192.168.0.230:6443 --token k0iymj.1vmpqlws0bfk8iaw \

    --discovery-token-ca-cert-hash sha256:376d1e7633a2f7b9a9c6ccdaba165c3079966aca9ada6b63affaef500dd87958

[root@node2 ~]# kubeadm join 192.168.0.230:6443 --token k0iymj.1vmpqlws0bfk8iaw \

--discovery-token-ca-cert-hash sha256:376d1e7633a2f7b9a9c6ccdaba165c3079966aca9ada6b63affaef500dd87958

 

master节点查看node节点信息

[root@master ~]# kubectl get nodes

 

kubernetes安装网络插件

kubernetes支持多种网络插件,如:flflannel、calico、canal等,任选一种使用即可,本次部署选择 flflannel 只在master节点安装flflannel插件即可,该插件使用的是DaemonSet控制器,该控制器会在每个节点上都运行

#获取flannel配置文件

[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-

flannel.yml

#执行文件启动flannel

[root@master ~]# kubectl apply -f kube-flannel.yml

#查看nodes节点信息

 

 

kubernetes集群环境测试

在kubenetes集群中部署一个nginx程序测试集群是否能正常工作

#部署nginx程序

[root@master ~]# kubectl create deployment nginx --image=nginx:1.18-alpine

#开放端口

[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort

#查看pod状态

[root@master ~]# kubectl get pod

 

#查看service状态

[root@master ~]# kubectl get service

 

#访问测试

http://192.168.0.230:31813/

 

posted on 2022-08-26 14:48  学习笔记p  阅读(225)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3