Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。
Kubernetes有哪些好处:
- 隐藏资源管理和错误处理,用户仅需要关注应用的开发
- 服务高可用、高可靠
- 可将负载运行在由成千上万的机器联合而成的集群中
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统
二、部署 Kubernetes集群server5是harbor私有仓库,名称为reg.westos.org 。将server6作为master,server7和server8作为node。
1.准备工作
- 保证harbor私有仓库正常工作
- server6 7 8 都安装docker,并设置开机自启
- server6 7 8 做好本地解析
- server6 7 8 进行免密认证(方便传送文件 )
2.部署docker内核与配置文件
server6中:
vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
vim /etc/docker/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"
}
sysctl --system ##刷新内核
systemctl restart docker
将/etc/sysctl.d/docker.conf和/etc/docker/daemon.json这两文件传给server7 8,并都执行以上操作
3.证书
在server5中,将证书传给server6
在server6中,将证书传给server7 8
4.禁用swap分区
在server6 7 8中都执行
swapoff -a
vim /etc/fstab ##注释掉/etc/fstab文件中的swap定义
5.安装部署软件kubeadm
在server6 7 8中都执行
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.service
6.获取k8s初始化组件
在server6中:
kubeadm config print init-defaults ##查看默认配置信息
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers ##列出所需镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers ##拉取镜像到本地
我们已经把所需镜像拉取到了本地
把这些镜像上传到私有仓库
先批量改名
docker images | grep registry.aliyuncs.com | awk '{print $1":"$2}' | awk -F/ '{print $3}' | awk '{system("docker tag registry.aliyuncs.com/google_containers/"$1" reg.westos.org/k8s/"$1"")}'
在仓库中新建k8s公开项目
登陆
批量上传
docker images | grep reg.westos.org | awk '{system("docker push "$1":"$2"")}'
查看
7.初始化集群
server6中:
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s ##初始化
export KUBEConFIG=/etc/kubernetes/admin.conf
kubectl get pod -n kube-system ##查看状态
我们看到有两个pod没有running, 这是没有安装flannel网络组件的缘故
8.安装flannel网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/documentation/kube-flannel.yml ##下载yml安装脚本(下载不下来的多下几次)
vim kube-flannel.yml ##去掉前面的quay.io,让其默认从私有仓库获取
拉取镜像到本地,并改名
docker pull quay.io/coreos/flannel:v0.14.0
docker tag quay.io/coreos/flannel:v0.14.0 reg.westos.org/coreos/flannel:v0.14.0
在仓库中新建coreos公开项目
上传
配置kubectl命令补齐功能
echo "source <(kubectl completion bash)" >> ~/.bashrc
source .bashrc
安装flannel网络组件
kubectl apply -f kube-flannel.yml
此时再次查看状态,都变成running
9.节点扩容
扩容命令初始化的时候会给出,或者手动生成注册命令
kubeadm token create --print-join-command
在server7 8中扩容注册
返回server6查看状态,即可看到加入的node



