kubernetes基础篇 —— 集群部署

官方网站:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

1. 集群部署

1.1 环境

主机IP
k8s1192.168.1.20
k8s2192.168.1.21
k8s3192.168.1.22
k8s4192.168.1.23
  • 关闭节点的selinux和iptables防火墙
  • 所有节点部署docker引擎
  • 将k8s2作为master节点,k8s3和k8s4作为从节点

1.2 harbor仓库的搭建[k8s1]

下载并解压离线安装包
在这里插入图片描述
首先配置好docker仓库,若不会配置,可以参考该文章中配置方法:https://blog.csdn.net/m0_37868230/article/details/106862267#t6
下载docker-ce并设置为开机自启

yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service

在这里插入图片描述
查看docker信息

docker info

在这里插入图片描述
消除docker中存在的警告,将bridge-nf-call-iptables和bridge-nf-call-ip6tables开启

vim /etc/sysctl.conf
###
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
###
sysctl --system   # 生效

在这里插入图片描述
可以看到,警告已经消除,可正常使用。
编辑harbor配置文件

vim harbor.yml

在这里插入图片描述
运行检测环境

./install.sh

在这里插入图片描述
可以看到,缺少 docker-compose[单台主机上维护多个容器] 环境
下载并搭建docker-compose环境

mv docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

在这里插入图片描述
在这里插入图片描述

1.3 三个节点docker-ce的下载和安装

这里可以使用之前自己的docker,也可以使用清华或者阿里的docker。
安装系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述
部署docker仓库

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述
安装docker-ce
在这里插入图片描述
报错,查看错误信息是缺少不低于2:2.74版本的container-selinux
下载container-selinux并安装
在这里插入图片描述
将安装包上传到共享仓库上
在这里插入图片描述
更新仓库repo数据
在这里插入图片描述
在k8s1将docker.repo复制给k8s3和k8s4

scp docker-ce.repo k8s3:/etc/yum.repos.d/

在这里插入图片描述
在k8s3和k8s4安装docker

 yum install -y docker-ce

在这里插入图片描述
在这里插入图片描述
启用,使其 docker info 正常使用

vim /etc/sysctl.conf
###
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
###
sysctl --system   # 生效

启动并设置为开机自启

systemctl enable --now docker.service

1.4 kubernetes部署

官方网站:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#docker

1.4.1 安装部署kubernetes前系统环境的配置

  • 设置docker守护程序[三个节点都需要]
    修改k8s2中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"
  ]
}
EOF

在这里插入图片描述
重点:native.cgroupdriver 修改为 systemd 模式
原先的模式为:在这里插入图片描述
重启docker

systemctl restart docker.service

在这里插入图片描述
可以看到,Cgroup Driver 已经修改为 systemd 的模式
将文件复制到k8s3和k8s4上,并重启docker
在这里插入图片描述

  • 禁用swap[三个k8s集群节点都需要]
swapoff -a
vim /etc/fstab
###
#/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
###

在这里插入图片描述

1.4.2 部署kubernetes

安装Docker-ce
这个前面已经进行了详细的介绍
设置仓库[三个节点均设置]

vim /etc/yum.repos.d/k8s.repo
###
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7- x86_64/
enabled=1
gpgcheck=0
###

在这里插入图片描述
安装软件包[三个节点均安装]

yum install -y kubelet kubeadm kubectl

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开启服务并设置开机自启

systemctl enable --now kubelet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.3 master节点从外网拉取镜像

创建集群前的准备:

  • 一台或多台运行兼容deb / rpm的Linux操作系统的计算机
  • 每台主机至少要分配2GB内存空间
  • 用作master节点的计算机上至少有2个CPU
  • 集群中所有主机需要能够联网

查看默认的配置信息

kubeadm config print init-defaults

在这里插入图片描述
列出所需镜像

kubeadm config images list   # 列出所需镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers    # 指定镜像仓库位置并列出所需镜像

在这里插入图片描述
可以看到,kubeadm默认读取的是k8s.gcr.io镜像库。但事实上,当前我们无法直接访问到k8s.gcr.io镜像库,需要翻墙才可以。因此我们就需要去指定镜像库,这里我们使用阿里云的镜像库
在这里插入图片描述
拉取镜像

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

在这里插入图片描述
这里出现了报错。查看错误信息,是因为我使用的k8s是最新的,远程仓库中没有更新。
指定版本去拉取

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 版本号

在这里插入图片描述
在这里插入图片描述
可以看到,镜像已经拉取成功

1.4.4 将master拉取的镜像上传到私有仓库

harbor主机[k8s1]将证书传给master节点主机[k8s2]
在这里插入图片描述
在这里插入图片描述
master节点主机登陆reg.harbor.com

docker login reg.harbor.com

在这里插入图片描述
将镜像上传到仓库

for i in `docker images | grep registry | awk '{print $1":"$2}' | awk -F '/' '{print $3}'`; do
> docker tag registry.aliyuncs.com/google_containers/$i reg.harbor.com/library/$i;
> docker push reg.harbor.com/library/$i
> done

在这里插入图片描述
登陆harbor仓库查看
在这里插入图片描述
将证书传给另外两个节点,以便用来拉取镜像
在这里插入图片描述
删除阿里云仓库镜像,只保留私有仓库镜像

for i in `docker images | grep registry.aliyuncs.com | awk '{ print $1":"$2 }'`; do docker rmi $i; done

在这里插入图片描述

1.4.5 集群部署

初始化集群
–pod-network-cidr=10.244.0.0/16 # 使用flannel网络组件时必须添加

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.harbor.com/library

在这里插入图片描述
报错,找不到版本1.18.5,默认是找软件版本,和我们实际版本不一致,指定版本 --kubernetes-version v1.18.3

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.harbor.com/library --kubernetes-version v1.18.3  --ignore-preflight-errors=NumCPU

在这里插入图片描述
在这里插入图片描述
节点扩容

kubeadm join 192.168.1.21:6443 --token ywa2ks.u6je272aslskl73x \
    --discovery-token-ca-cert-hash sha256:e1d4464a12968a663aefd51550a346f5da195550e7bc9869e109d37622f6bfb5 

在这里插入图片描述
上图为初始化成功时最后系统打印的信息,将红框部分内容在其他节点运行(k8s3,k8s4)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意,这里的token会过期(默认24小时)过期后其他节点要加入时需要生成新的token

kubeadm token create

配置kubectl

**创建一个普通用户**
useradd kubeadm
这里要注意:需要对普通用户权限进行设置
visudo
###
kubeadm  ALL=(ALL)   NOPASSWD:ALL
###
su - kubeadm
mkdir -p $HOME/.kube  #创建目录
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
**使用超级用户**
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

在这里插入图片描述
我使用的是root用户,可以创建普通用户,然后通过sudo授权,关键在/etc/kubernetes/admin.conf文件

kubectl get node      ##配置完成后查看节点
kubectl get all

在这里插入图片描述
配置kubectl命令补齐功能

echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

安装flannel网络组件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

在这里插入图片描述
其他网络组件:[https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create- cluster-kubeadm/#pod-network](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create- cluster-kubeadm/#pod-network)
Master查看状态

kubectl get cs

在这里插入图片描述

kubectl get nodes

在这里插入图片描述
若node节点显示notready,参考该文章:https://www.cnblogs.com/lph970417/p/11805934.html

kubectl get pod -n kube-system 

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值