文章目录
- 一、k8s简介
- 1、概述
- 2、特点
- 3、组件
- 4、优点
- 二、k8s环境部署
- 1、确认harbor仓库
- 2、添加节点解析,部署docker引擎
- 3、安装部署软件kubeadm
- 4、安装部署flannel网络组件
- 三、排错和注意
- 1、报错
- 2、注意
一、k8s简介
kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用.
Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
1、概述
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,
将最终的应用服务交给用户。
2、特点
- 可移植: 支持公有云,私有云,混合云,多重云
- 可扩展: 模块化,插件化,可挂载,可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
3、组件
- Master组件
Master组件提供集群的管理控制中心。
Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。 - Node节点组件
节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。
4、优点
- 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
- 服务高可用、高可靠。
- 可将负载运行在由成千上万的机器联合而成的集群中。
二、k8s环境部署
主机需求
四台主机:
一台101为仓库主机
剩余三台分别为一台Master节点102和普通主机103和104
101 ip 172.25.76.11 harbor主机
102 ip 172.25.76.12 Master节点主机
103 ip 172.25.76.13 普通节点主机node1
104 ip 172.25.76.14 普通节点主机node2
1、确认harbor仓库
在仓库主机101
cd harbor/
docker-compose ps
若为空则使用该目录下的安装脚本文件安装
./install --help
添加第三个参数,防止安装加载过多占用内存过大
docker-compose start
docker-compose ps
再次查看仓库内容
出现后浏览器访问仓库主机,进入harbor仓库并登陆
浏览器访问仓库主机harbor101的仓库
2、添加节点解析,部署docker引擎
在102,103,104同时进行
vim /etc/hosts添加解析
---
172.25.76.11 reg.westos.org
172.25.76.12
172.25.76.13
172.25.76.14
---
仓库主机
配置docker仓库文件
cd /etc/yum.repos.d
ls
scp docker.repo 102:/etc/yum.repos.d/
scp docker.repo 103:/etc/yum.repos.d/
scp docker.repo 104:/etc/yum.repos.d/
复制证书保证三台主机能够登陆仓库主机
cd /etc/docker
ls
scp -r certs.d/ 102:/etc/docker/
scp -r certs.d/ 103:/etc/docker/
scp -r certs.d/ 104:/etc/docker/
102,103,104主机
yum install -y docker-ce
systemctl enable --now docker
docker info
查看是否有问题
sysctl --system
刷新内核
cd /etc/docker
vim daemon.json
---
{
"insecure-registries":["reg.westos.org"],
"registry-mirrors":["https://reg.westos.org"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
systemctl restart docker
不报错则文件无语法错误
docker info
查看cgroup driver(systemd),mirrors(reg.westos.org)
注意:使用私有仓库,仓库中必须提前有镜像
---
3、安装部署软件kubeadm
仓库主机
前提是得已有busyboxplus镜像,没有就pull拉取(联网操作)
docker tag busyboxplus:latest reg.westos.org/library/busyboxplus:latest
docker push reg.westos.org/library/busyboxplus:latest
解析必须正确,否则会报错
102,103,104主机
docker pull busyboxplus
禁用swap分区
swapoff -a
vim /etc/pstab注释掉最后一行
安装部署k8s软件仓库文件
cd /etc/yum.repos.d/
vim k8s.repo
---
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
----
联外网安装
yum install -y kubeadm kubelet kubectl
设置开机自启动
systemctl enable --now kubelet
查看默认配置信息
kubeadm config print init-defaults
images镜像和 repository仓库
rpm -q kubeadm
查看最新安装版本
在harbor浏览器图形界面创建k8s项目,设置公开
4、安装部署flannel网络组件
在master节点主机102
默认从k8s.gcr.io上下载组件镜像,需要翻墙才可以,所以需要修改镜像仓库:
列出所需镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
拉取镜像
kubeadm config images pull --image-repository
registry.aliyuncs.com/google_containers
初始化集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository
registry.aliyuncs.com/google_containers
拉取镜像到k8s项目(先按照上面的拉取,后续可以给镜像改名)
指定kube配置文件启动集群,此条命令出现在初始化集群时的输出中;也可在文件中配置此环境变量,以免重启主机时每次手动声明
查看集群发现服务没有完全启动
安装flannel网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentat
ion/kube-flannel.yml
kubectl apply -f kube-flannel.yml
配置kubectl命令补齐功能:
echo "source <(kubectl completion bash)" >> ~/.bashrc
source .bashrc
docker pull quay.io/coreos/flannel:v0.14.0
docker tag quay.io/coreos/flannel:v0.14.0 reg.westos.org/k8s/flannel:v0.14.0
docker push reg.westos.org/k8s/flannel:v0.14.0
再次查看pod节点镜像准备情况
查看节点情况,发现master主机已就绪
在103和104主机粘贴在master节点主机初始化得出的提示
另外需要在仓库主机也安装部署flannel网络组件集群节点部署成功
Master查看状态:
kubectl get cs
kubectl get node
kubectl get pod -n kube-system
三、排错和注意
1、报错
查看docker信息报错
docker info
WARNING: IPv4 forwarding is disabled
vim /usr/lib/sysctl.d/00-system.conf
在文件里面添加如下代码:
net.ipv4.ip_forward=1
重启docker、network服务:
systemctl restart network
systemctl restart docker
拉取镜像报错
解析有问题
私有仓库中无内容导致无法拉取
初始化报错
学会看报错老哥们,内存不够,咱就扩容
这儿有个坑,在开始配置的时候也应该配好,我是个five我没听到,overdocker登陆有问题
报错:证书需要依赖。。。。。
修改:docker的权限有问题
#如果没有docker组需要重新创建
[root@master docker]# sudo groupadd docker
groupadd: group 'docker' already exists
#添加当前用户到docker组中去
[root@master docker]# sudo gpasswd -a ${USER} docker
Adding user root to group docker
#配置daemon.json文件内容
vim /etc/docker/daemon.json
----
{
"insecure-registries":["reg.westos.org"],
"registry-mirrors":["https://reg.westos.org"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
----
#重启docker服务
[root@master docker]# systemctl restart docker
删除镜像
用ID删除时,若有多个ID的容器会无法删除
需要使用名称来删除
别人的错
文件里粘贴有缺失,需要在编辑模式粘贴,我同桌傻子
内核没有刷新
2、注意
主机
除仓库外的三台主机设置为双核cpu,若开始时未设置可先关闭主机在virt-manager中小灯泡设置,再次启动即刻生效
网络
在需要pull镜像时需要打开外网,通过实验发现一些镜像需要随缘拉取,速度跟网速挂钩。亲测我同学的网比我快很多,我就刷了两条朋友圈机好了哭哭
镜像拉取
从私有仓库拉取时需要在私有仓库中push了镜像才能拿来使用,否则你就pull了个der