一:本章目录
- Kubernetes介绍
- 所需组件功能介绍
- 环境规划与说明
- 部署流程
- 小结
二:Kubernetes介绍
1·概述:kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
2·Kubernetes 特点:
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化,插件化,可挂载,可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
三:所需组件功能介绍
组件名称 | 组件作用 | 组件所在节点 |
---|---|---|
ETCD | etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。 | Master |
kube-apiserver | kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。 | Master |
kube-controller-manager | kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。 | Master |
kube-scheduler | 监视新创建没有分配到Node的Pod,为Pod选择一个Node。 | Master |
kubelet | kubelet是主要的节点代理,它会监视已分配给节点的pod | Node |
kube-proxy | kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。 | Node |
docker | docker用于运行容器 | Node和Master |
四:环境规划与说明
主机名 | IP | 需安装的组件 |
---|---|---|
Master(centos7.4) | 192.168.243.128 | etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker |
Node1(centos7.4) | 192.168.243.149 | kubelet、kube-proxy、docker |
Node2(centos7.4) | 192.168.243.150 | kubelet、kube-proxy、docker |
说明:1·关闭 firewalld 2· 关闭 selinux 3· 关闭 swap 交换分区 4·用2G内存、2个cpu。
五:部署流程
5.1 master与node节点做好域名解析、关闭 firewalld 、关闭 selinux 、关闭 swap 交换分区
[root@master ~]# systemctl stop firewalld
[root@master ~]# vim /etc/selinux/config
SELINUX=disabled //修改为disabled
[root@master ~]# swapoff /dev/mapper/centos-swap //做好域名解析
[root@master ~]# vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.243.128 master
192.168.243.149 node1
192.168.243.150 node2
5.2安装ipvs 模块:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
/etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
5.3配置镜像地址开始安装,以下在Master、Node 都需要安装
[root@master ~]#cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
[root@master ~]# yum install -y kubelet kubeadm kubectl //安装k8s客户端工具
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 //安装系统必要工具
[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //添加软件源信息
[root@master ~]# yum makecache fast
[root@master ~]# yum -y install docker-ce //更新并安装docker
[root@master ~]# vim /etc/docker/daemon.jsonn //配置docker 加速器{
"registry-mirrors": ["https://dxbdst4t.mirror.aliyuncs.com"]
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker.service
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-ip6tables //开启IP转发
[root@master ~]# systemctl enable kubelet //设置开机自启与启动 kubelet,这里不需要 start kubelet
[root@master ~]# echo "1" >> /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.243.128 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=v1.17.4 --image-repository registry.aliyuncs.com/google_containers // 开始初始化集群--注意这里的192.168.243.128 需要替换为自己的masterIP地址
得到以下结果初始化成功
以上图片说明需要自己手动执行上诉命令:
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
5.4 node1、node2 开始加入master
在 node1、node2 上分别执行:
[root@node1 ~]# kubeadm join 192.168.243.128:6443 --token p1sou2.sbgnthemnqcdf13e \<br/>--discovery-token-ca-cert-hash sha256:be4d40659699404f92d716ff013835a66689895ab81ee33da23e323a7ec7a21a
5.5 在master上部署 flannel 网络插件
`[root@master docker]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
****这里需要多等待一段时间,他会拉取镜像,启动pod****
[root@master ~]# kubectl get node //执行此命令,查看node的 状态 都是ready 说明,网络插件部署成功
NAME STATUS ROLES AGE VERSION
master Ready master 53m v1.17.4
node1 Ready <none> 28m v1.17.4
node2 Ready <none> 25m v1.17.4
`
k8s 搭建结束