说明:用kubeadm部署kubernetes
一、主机环境预设
- 借助ntp服务设置各节点时间同步
- 通过dns完成各节点主机名称解析,使用hosts文件完成
- 关闭各节点的iptables与firewalld服务,并确保他们被禁止随系统引导过程启动
- 各节点禁用selinux
- 各节点禁用所有的swap设备
- 若要使用ipvs模型的proxy,各节点还需要载入ipvs相关的模块
1、systemctl restart chronyd 启动chronyd同步时间
date 查看各服务器时间是否一致,如果出现EDT时令而不是CST,则执行
mv /etc/localtime /etc/localtime.bak
ln –s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
4 setenforce 0 or vi /etc/selinux/config
5 swapoff –a or vi /etc/fstab 注释swap行
6 见照片,加载ipvs模块
二、安装程序包
1安装docker 使用阿里云厂库
Wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Yum –y install docker-ce
2 安装k8s安装包
Vi /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
yum –y install kubeadm kubectl kubelet
三启动docker
vi /usr/lib/systemd/system/docker.service
增加
Environment="HTTPS_PROXY=http://www.ik8s.io:10070"
Environment="NO_PROXY=192.168.204.0/24,127.0.0.0/8"
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
启动
Systemctl daemon-reload
Systemctl start docker
Sysctl –a |grep bridge
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
设置docker开机自启
Systemctl enable docker
四、启动k8s
1、Kubeadm init --dry-run
检查是否正常
2、如果正常,先获取到镜像docker config images pull (无法从国内网络直接获取)
通过其他方法获取镜像并上传到阿里云镜像库
登陆镜像库
docker login --username=modehouse@126.com registry.cn-shenzhen.aliyuncs.com
tag需上传的镜像
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/zhiwei/zowie:[镜像版本号]
上传
docker push registry.cn-shenzhen.aliyuncs.com/zhiwei/zowie:[镜像版本号]
回到搭建k8s的服务器上
登陆镜像库,然后下载该镜像
docker pull registry.cn-shenzhen.aliyuncs.com/zhiwei/zowie:[镜像版本号]
并用tag修改为原名称
docker tag registry.cn-shenzhen.aliyuncs.com/zhiwei/zowie:[镜像版本号] [ImageId]
3、初始化
kubeadm init --pod-network-cidr=‘10.244.0.0/16‘
- 初始化成功,并根据提示创建config文件
- kubeadm reset #关闭集群
- 如果需要添加新加载项,则先进行reset,然后初始化,然后复制config文件
4、to deploy a pod network to the cluster
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
5、查看各个pod是否runing
kubectl get pods -n kube-system
6、node加入集群
- 在master上执行: kubeadm token create --print-join-command
- 将执行结果复制到node1执行
- 如果加入失败,加-v=’10’ 参数查看日志
- 如果是no route,则关闭master防火墙尝试
K8S:容器编排
控制面板:
- Api server :443
需要用户认证:双向认证 - Scheduler 进行调度pod到哪个node上
- Controller 控制器,来做创建、删除等pod操作
Node:工作平面
- Pode-porxy: 运行pod,并给pod相关的service转换为ipvs
随时watch api-server上的资源变动然后变动ipvs规则
Pod controller,service
- Deployment是控制器中的一个pod控制器的类型,用depeloyment进行实例化出ngx-depoly(管理nginx pod的depoly),然后用ngx-depoly创建出nginx pod
Deployment-?ngx-deloly-?nginx-pod - Service是一个资源类型,用service实例化出一个ngx-service的ngx的service,可以关联到ngx-pod上,从而实现请求调度到nginx-pod
Service?nginx-svc?nginx-pod
概念:node与master是集群概念,统一集群又可以划分不同的namespace名称空间