centos7 部署k8s集群

centos7 部署k8s集群

简介

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

本次部署节点列表

192.168.56.11 master
192.168.56.12 node01
192.168.56.13 node02
192.168.56.14 node03
192.168.56.15 node04

前提条件

1、为了方便部署,可提前修改主机名,重新登录后可显示新设置的主机名。

[root@master ~]# hostnamectl set-hostname master或者node1
[root@master ~]# more /etc/hostname 

2、centos7安装docker ce

3、关闭防火墙或者开放k8s所需的端口
[root@master ~]# firewall-cmd --state //查看当前防火墙状态
[root@master ~]# systemctl stop firewalld //临时关闭防火墙

4、关闭selinux,设置sellinux=disabled

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

5、关闭swap

5.1、临时关闭
[root@master ~]# swapoff -a
[root@master ~]# free -m
5.2、永久关闭
[root@master ~]# vim /etc/fstab
# 注释此行脚本
# /dev/mapper/centos-swap swap                 swap    defaults        0 0 
[root@master ~]# free -m

6、添加主机名与IP对应的关系

[root@master ~]# vim /etc/hosts
添加如下内容:
192.168.56.11 master
192.168.56.12 node01
192.168.56.13 node02
192.168.56.14 node03
192.168.56.15 node04

7、修改iptables参数

7.1、永久修改
[root@master ~]# $ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf
7.2、临时修改
[root@master ~]# sysctl net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-iptables = 1
[root@master ~]# sysctl net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-ip6tables = 1

8、设置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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
名词解释
  • [] 中括号中的是repository id,唯一,用来标识不同仓库
  • name 仓库名称,自定义
  • baseurl 仓库地址
  • enabled 是否启用该仓库,默认为1表示启用
  • gpgcheck 是否验证从该仓库获得程序包的合法性,1为验证
  • repo_gpgcheck 是否验证元数据的合法性 元数据就是程序包列表,1为验证
  • gpgkey=URL 数字签名的公钥文件所在位置,如果* gpgcheck值为1,此处就需要指定gpgkey文件的位置,如果gpgcheck值为0就不需要此项了

9、更新缓存

[root@master ~]# yum clean all
[root@master ~]# yum makecache

10、linux文件上传下载工具

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

Master 节点安装

1、版本查看

[root@master ~]# yum list kubelet --showduplicates | sort -r

2、安装kubelet、kubeadm和kubectl

  • 在部署kubernetes时,要求master node和worker node上的版本保持一致,且以上3个包的版本保持一致,本次采用1.18.2版本。
2.1 安装三个包
[root@master ~]# yum install -y kubelet-1.18.2 kubeadm-1.18.2 kubectl-1.18.2
2.2 安装包说明
  • kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
  • kubeadm 用于初始化集群,启动集群的命令工具
  • kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
2.3 启动kubelet并设置开机启动
[root@master ~]# systemctl enable kubelet && systemctl start kubelet

3、从阿里云下载镜像

3.1、新建镜像资源文件
[root@master ~]# touch image.sh
3.2、编辑内容
[root@master ~]# vim image.sh
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.18.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
  docker pull $url/$imagename
  docker tag $url/$imagename k8s.gcr.io/$imagename
  docker rmi -f $url/$imagename
done
  • url为阿里云镜像仓库地址,version为安装的kubernetes版本
3.3、授权执行
[root@master ~]# chmod u+x image.sh 
[root@master ~]# more image.sh 
[root@master ~]# ./image.sh
3.4、镜像查看
[root@master ~]# docker images
  • 镜像列表如下:

4、初始化Master

4.1、初始化
[root@master ~]# kubeadm init --apiserver-advertise-address 192.168.56.11 --pod-network-cidr=10.244.0.0/16
  • apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod网络的范围。
  • 建议CPU至少2核,单核CPU会提示如下:the number of available CPUs 1 is less than the required 2。
  • 记录kubeadm join的输出,后面需要这个命令将各个节点加入集群中。如下:
kubeadm join 192.168.56.11:6443 --token pe9tlb.kuoifhlthdi0t0iq \
    --discovery-token-ca-cert-hash sha256:eb4e4530d44b333ba8428dc26dda8ab9c87d8eec196d75480e202834065f14cd
4.2、加载环境变量
  • root 用户,执行如下操作:
[root@master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@master ~]# source .bash_profile 
  • 非root用户,执行如下操作:
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
4.3、使用kubectl工具,如图:
[root@master ~]# kubectl get node

5、安装Pod网络插件(CNI)

  • 运行过程如图:
5.1、安装插件
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
5.2、查看是否部署成功
[root@master ~]# kubectl get pods -n kube-system
5.3、再次查看node,可以看到状态为ready
[root@master ~]# kubectl get node

6、master节点令牌

6.1、查看节点令牌
[root@master ~]# kubeadm token list
6.2、若令牌已过期,则生成新的令牌
[root@master ~]# kubeadm token create
1zl3he.fxgz2pvxa3qkwxln

Node 节点安装

安装kubelet、kubeadm和kubectl,同master

下载镜像 同master

加入集群

未完待续...

猜你喜欢

转载自www.cnblogs.com/lenovo_tiger_love/p/12895643.html