CentOS7 部署K8S集群

步骤

1-8 master、node节点都要执行
9-10、12 master节点执行
11 node节点执行

部署规划

192.168.28.168 k8s-master
192.168.28.166 k8s-node1
192.168.28.100 k8s-node2

步骤1
关闭防火墙

systemctl stop firewalld.service   #临时关闭
systemctl disable firewalld.service   #永久关闭
systemctl status firewalld.service   #查看防火墙状态

备注:必须关闭

步骤2
关闭selinux(Linux 的一个安全子系统)

setenforce 0

步骤3
关闭swap

swapoff -a   #临时关闭
vim /etc/fstab   #注释swap,永久关闭

注释swap行

free   #查看状态

Swap行全部显示0则关闭成功
步骤4
添加主机名与IP对应的关系

vim /etc/hosts   #最末行添加

192.168.28.168 k8s-master
192.168.28.166 k8s-node1
192.168.28.100 k8s-node2
添加主机名与IP对应的关系
步骤5
将桥接的IPV4流量传递到iptables 的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system   #加载所有的配置文件

步骤6
安装Docker

  • [ 1] 下载并安装
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo   #下载
yum -y install docker-ce-18.06.1.ce-3.el7   #安装
  • [ 2] 设置开机启动
systemctl enable docker
systemctl start docker
  • [ 3] 查看Docker版本
docker --version

步骤7
添加阿里云YUM软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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

步骤8
安装kubeadm、kubelet和kubectl
在部署kubernetes时,要求master node和worker node上的版本保持一致
安装最新版

yum makecache fast   #本地缓存软件包信息
yum install -y kubelet kubeadm kubectl   #安装

注:使用yum安装程序时,提示公钥尚未安装
跳过公钥检查,如下:

yum install cri-tools-1.13.0-0.x86_64 --nogpgcheck
yum install kubeadm-1.18.2-0.x86_64 --nogpgcheck
yum install kubectl-1.18.2-0.x86_64 --nogpgcheck

设置开机启动

systemctl enable kubelet   #设置开机启动

步骤9
部署Kubernetes Master
注:master节点必须内存2G+,CPU 2个以上

  • [ 1] 初始化kubeadm
kubeadm init \
--apiserver-advertise-address=192.168.28.168\   #修改成自己master的IP
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

初始化成功,复制最末两行用于node节点加入集群
初始化成功
出现下图的镜像则表示初始化成功
初始化拉取镜像

  • [ 2] 使用kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

步骤10
安装Pod网络插件

  • [ 1] 安装weave网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
  • [ 2] 查看是否部署成功
kubectl get pods -n kube-system

weave状态为Running则安装成功
在这里插入图片描述

步骤11
Node节点加入集群

kubeadm join 192.168.28.168:6443 --token o1jvk3.r2mb72a47hw5o7k6 \
    --discovery-token-ca-cert-hash sha256:db535e0b86396387fe6e911b964a5edb85d16313056d89e998384d5537b44ea1

出现下图提示则加入集群成功
加入集群成功
master节点输入命令

kubectl get node

状态都为Running则成功
在这里插入图片描述
注:如果出现如下警告提示
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “system”. Please follow the guide at https://kubernetes.io/docs/setup/cri/

更改docker的启动参数,创建daemon.json文件,内容为:

{
“exec-opts”: [“native.cgroupdriver=systemd”]
}

放入/etc/docker文件夹下
重启docker

systemctl daemon-reload
systemctl restart docker

注:如果一直卡在 “Running pre-flight checks” 上,则很可能是时间未同步,token失效导致
检查master、node时间是否同步?

date

执行如下命令同步时间

ntpdate time.nist.gov

如果token忘记了,则可以通过如下操作:
查看token,如果token失效,则重新生成一个(master节点操作)

kubeadm token list
kubeadm token create

获取ca证书sha256编码hash值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

注:加入集群失败

rm -rf $HOME/.kube   #删除集群前先执行
kubeadm reset   #删除集群
yum clean all   #清除缓存

重新安装kubeadm,kubelet和kubectl

步骤12
测试kubernetes集群

kubectl create deployment nginx --image=nginx   #创建容器,存放nginx镜像
kubectl expose deployment nginx --port=80 --type=NodePort   #暴露端口
kubectl get pod,svc
kubectl get pod,svc -o wide

部署成功
部署成功
访问测试

curl 192.168.28.100:30906

成功
访问nginx

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐