一、k8s简介
kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
1、概述
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合, 将最终的应用服务交给用户。
2、特点
可移植: 支持公有云,私有云,混合云,多重云 可扩展: 模块化,插件化,可挂载,可组合 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
3、组件
Master组件提供集群的管理控制中心。 Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。
节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。
4、优点
- 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
- 服务高可用、高可靠。
- 可将负载运行在由成千上万的机器联合而成的集群中。
二、k8s环境部署
主机需求
四台主机: 一台101为仓库主机 剩余三台分别为一台Master节点102和普通主机103和104 101 ip 172.25.76.11 docker主机 102 ip 172.25.76.12 Master节点主机 103 ip 172.25.76.13 普通节点主机1 104 ip 172.25.76.14 普通节点主机2
1、确认harbor仓库
在仓库主机101
cd harbor/
docker-compose ps
若为空则使用该目录下的安装脚本文件安装
./install --help
添加第三个参数,防止安装加载过多占用内存过大
docker-compose start
docker-compose ps
再次查看仓库内容
出现后浏览器访问仓库主机,进入harbor仓库并登陆
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
---
仓库主机
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
---
{
"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
仓库主机
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注释掉最后一行
安装部署软件
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项目
安装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
在103和104主机
粘贴在master节点主机初始化得出的提示
部署成功
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我没听到,over
别人的错 文件里粘贴有缺失,需要在编辑模式粘贴,我同桌傻子 内核没有刷新
2、注意
主机 除仓库外的三台主机设置为双核cpu,若开始时未设置可先关闭主机在virt-manager中小灯泡设置,再次启动即刻生效
网络 在需要pull镜像时需要打开外网,通过实验发现一些镜像需要随缘拉取,速度跟网速挂钩。亲测我同学的网比我快很多,我就刷了两条朋友圈机好了哭哭
镜像拉取 从私有仓库拉取时需要在私有仓库中push了镜像才能拿来使用,否则你就pull了个der
|