首页 > 技术文章 > kubernetes

zoer 2020-05-31 16:00 原文

说明:用kubeadm部署kubernetes

一、主机环境预设

  1. 借助ntp服务设置各节点时间同步
  2. 通过dns完成各节点主机名称解析,使用hosts文件完成
  3. 关闭各节点的iptables与firewalld服务,并确保他们被禁止随系统引导过程启动
  4. 各节点禁用selinux
  5. 各节点禁用所有的swap设备
  6. 若要使用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
mv ./docker-ce.repo /etc/yum.repos.d/
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名称空间

推荐阅读