设为首页 收藏本站
查看: 958|回复: 0

[经验分享] Centos7 Kubernetes1.8+docker容器集群

[复制链接]

尚未签到

发表于 2019-2-15 17:53:43 | 显示全部楼层 |阅读模式
Kubernetes(k8s)
  Kubernetes官网
  Kubernetes使用教程
  Docker-ce安装官方教程
Kubernetes简介
  Kubernetes是google开源的多主机容器管理工具, 简称:k8s,它带有人性化图形管理界面, 它在开源社区很受欢迎github上已经有了20000+的收藏,和7000+的fork。
Kubernetes其特性主要包括:
  1、可以非常轻松地开发复杂系统;
  2、Kubernetes为微服务架构;
  3、系统可以随时随地整体“搬迁”到公有云上;
  4、Kubernetes系统架构具备了超强的横向扩容能力。
Kubernetes使用的资源对象
  在Kubernetes中,Node、Pod、Replication Controller、Service等概念都可以看作一种资源对象,通过Kubernetes提供的Kubectl工具或者API调用进行操作,并保存在etcd中。
实验环境
  系统版本:centos7x3.10.0-514.el7.x86_64
  Kubernetes版本:v1.8.3
  Kubernetes-node版本:v1.8.3
  Docker版本:docker-ce.x86_64 0:18.03.1.ce-1.el7.centos
  注:以上最好两个均采用当前最新稳定版本。
  关闭防火墙并禁止开机自启
  systemctl stop firewalld.service
systemctl disable firewalld
  关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  重启 reboot
搭建k8s集群
master主机(IP:192.168.152.170)
  安装组件:etcd   kube-apiserver   kube-controller-manager    kube-scheduler
1、安装kubernetes服务端
  1)下载二进制源码包
  wget  https://storage.googleapis.com/kubernetes-release/release/v1.8.3/kubernetes-server-linux-amd64.tar.gz
注:直接在master服务器上执行命令下载即可!
  2)解压源码包
  tar zxf kubernetes-server-linux-amd64.tar.gz

  3)递归创建kubernetes运行文件存放目录
  mkdir -p /k8s/{bin,cfg}
  4)将解压目录里的文件移动到新创建的目录里
  mv  kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl}   /k8s/bin/

2、安装etcd组件(默认版本:etcd.x86_64 0:3.2.22-1.el7)
  1)安装etcd
  yum -y install etcd
  2)编辑etcd的配置文件
  vi /etc/etcd/etcd.conf
  ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

注:Ubuntu系统etcd配置文件在/etc/default/etcd。
  3)启动etcd服务
  #设置etcd服务开机自启
  systemctl enable etcd
  #启动etcd服务
  systemctl start  etcd
3、配置kube-apiserver组件
  1)创建kube-apiserver配置文件
  vi /k8s/cfg/kube-apiserver
  #启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#Etcd服务地址
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.152.170:2379"
#API服务监听地址
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
#API服务监听端口
KUBE_API_PORT="--insecure-port=8080"
#对集群中成员提供API服务地址
KUBE_ADVERTISE_ADDR="--advertise-address=192.168.152.170"
#允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
#集群分配的IP范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.0.100.0/24"

  2)创建kube-apiserver的systemd服务启动文件
  vi /lib/systemd/system/kube-apiserver.service
  [Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/k8s/cfg/kube-apiserver
#ExecStart=/k8s/bin/kube-apiserver ${KUBE_APISERVER_OPTS}
ExecStart=/k8s/bin/kube-apiserver \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_ETCD_SERVERS} \
${KUBE_API_ADDRESS} \
${KUBE_API_PORT} \
${KUBE_ADVERTISE_ADDR} \
${KUBE_ALLOW_PRIV} \
${KUBE_SERVICE_ADDRESSES}
Restart=on-failure
[Install]
WantedBy=multi-user.target

  3)启动kube-apiserver服务
  #重新加载kube-apiserver服务守护进程
  systemctl daemon-reload
  #设置kube-apiserver服务开机自启
  systemctl enable kube-apiserver
  #重启kube-apiserver服务
  systemctl restart kube-apiserver
  注:apiserver默认支持etcd3,如果是etcd2,需启动时指定版本选项--storage-backend=etcd2
4、配置kube-scheduler组件
  1)创建kube-scheduler配置文件
  vi /k8s/cfg/kube-scheduler
  #启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"
#指定master为控制台
KUBE_LEADER_ELECT="--leader-elect"

  2)创建kube-scheduler的systemd服务启动文件
  vi /lib/systemd/system/kube-scheduler.service
  [Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-scheduler
ExecStart=/k8s/bin/kube-scheduler \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target

  3)启动kube-scheduler服务
  #重新加载kube-scheduler服务守护进程
  systemctl daemon-reload
  #设置kube-scheduler服务开机自启
  systemctl enable kube-scheduler
  #重新启动kube-scheduler服务
  systemctl restart kube-scheduler
5、配置kube-controller-manager组件
  1)创建kube-controller-manager配置文件
  vi /k8s/cfg/kube-controller-manager
  #启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#k8s-master服务地址
KUBE_MASTER="--master=192.168.152.170:8080"

  2)创建kube-controller-manager的systemd服务启动文件
  vi /lib/systemd/system/kube-controller-manager.service
  [Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/k8s/cfg/kube-controller-manager
ExecStart=/k8s/bin/kube-controller-manager \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${KUBE_MASTER} \
${KUBE_LEADER_ELECT}
Restart=on-failure
[Install]
WantedBy=multi-user.target

  3)启动kube-controller-manager服务
  #重新加载kube-controller-manager服务守护进程
  systemctl daemon-reload
  #设置kube-controller-manager服务开机自启
  systemctl enable kube-controller-manager
  #重新启动kube-controller-manager服务
  systemctl restart kube-controller-manager
  注:master节点组件全部启动了,需要注意的是服务启动顺序有依赖,先启动etcd,再启动apiserver,其他组件无顺序要求。
  查看master节点组件进程状态  ps -ef | grep kube

注:以上截图说明所有组件都正常运行!如果单独一个组件启动失败可以使用k8s自带查看日志命令。
6、K8s查看具体组件日志的命令
  journalctl –u etcd
  journalctl -u kube-apiserver
  journalctl -u kube-controller-manager
  journalctl -u kube-scheduler
node-1主机(192.168.152.168)
  安装组件:kubelet    kube-proxy    docker
1、安装kubernetes的node-1节点
  1)下载二进制源码包
  wget  https://storage.googleapis.com/kubernetes-release/release/v1.8.3/kubernetes-node-linux-amd64.tar.gz
注:直接在node-1服务器上执行命令下载即可!
  2)解压源码包
  tar zxf kubernetes-node-linux-amd64.tar.gz

  3)递归创建kubernetes运行文件存放目录
  mkdir -p /k8s/{bin,cfg}
  4)将解压目录里的文件移动到新创建的目录里
  mv  kubernetes/node/bin/{ kubectl,kubelet,kube-proxy}   /k8s/bin/
  5)创建连接master apiserver配置文件
  vi  /k8s/cfg/kubelet.kubeconfig
  apiVersion: v1
kind: Config
clusters:

  • cluster:
    server: http://192.168.152.170:8080
    name: local
    contexts:
  • context:
    cluster: local
    name: local
    current-context: local

注:kubeconfig文件用于kubelet连接master apiserver的。

  6)创建kubelet配置文件
  vi /k8s/cfg/kubelet
  #启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#Kubelet服务IP地址
NODE_ADDRESS="--address=192.168.152.168"
#Kubelet服务端口
NODE_PORT="--port=10250"
#自定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.152.168"
#kubeconfig路径,指定连接API服务器
KUBELET_KUBECONFIG="--kubeconfig=/k8s/cfg/kubelet.kubeconfig"
#允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
#DNS信息
KUBELET_DNS_IP="--cluster-dns=10.0.100.2"
KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"
#禁用使用Swap
KUBELET_SWAP="--fail-swap-on=false"

  7)创建kubelet服务的systemd启动文件
  vi /lib/systemd/system/kubelet.service
  [Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=-/k8s/cfg/kubelet
ExecStart=/k8s/bin/kubelet \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_ADDRESS} \
${NODE_PORT} \
${NODE_HOSTNAME} \
${KUBELET_KUBECONFIG} \
${KUBE_ALLOW_PRIV} \
${KUBELET_DNS_IP} \
${KUBELET_DNS_DOMAIN} \
${KUBELET_SWAP}
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target

  8)启动kubelet服务
  #重新加载kubelet服务守护进程
  systemctl daemon-reload
  #设置kubelet服务开机自启
  systemctl enable kubelet
  #重新启动kubelet服务
  systemctl restart kubelet
2、配置kube-proxy组件
  1)创建kube-proxy配置文件
  vi  /k8s/cfg/kube-proxy
  #用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#志级别
KUBE_LOG_LEVEL="--v=4"
#定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.152.168"
#PI服务地址
KUBE_MASTER="--master=http://192.168.152.170:8080"

  2)创建kube-proxy服务的systemd服务启动文件
  vi /lib/systemd/system/kube-proxy.service
  [Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=/k8s/cfg/kube-proxy
ExecStart=/k8s/bin/kube-proxy \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_HOSTNAME} \
${KUBE_MASTER}
Restart=on-failure
[Install]
WantedBy=multi-user.target

  3)启动kube-proxy服务
  #重新加载kube-proxy服务守护进程
  systemctl daemon-reload
  #设置kube-proxy服务开机自启
  systemctl enable kube-proxy
  #重启kube-apiserver服务
  systemctl restart kube-proxy
3、安装docker(docker-ce.x86_64 0:18.03.1.ce-1.el7.centos)
  1)安装docker-ce的yum源
  //下载yum源到本地
  wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  //移动yum源到/etc/yum.repos.d/目录下
  mv docker-ce.repo /etc/yum.repos.d/

  2)从高到低排列显示docker版本
  yum list docker-ce --showduplicates | sort -r

注:在正式环境,必须使用统一的稳定版本,而不是总使用最新(这样各host上的版本可能不一致)
  3)安装docker-ce .x86_64-18.03.1.ce-1.el7.centos
  yum -y install docker-ce .x86_64-18.03.1.ce-1.el7.centos

  4)启动docker服务
  //设置docker开机自启
  systemctl  enable docker
  //启动docker服务
  systemctl  start docker
  //重启docker服务
  systemctl  restart docker
node-2主机(192.168.152.169)
  安装组件:kubelet    kube-proxy    docker
1、安装kubernetes的node-2节点
  1)下载二进制源码包
  wget   https://storage.googleapis.com/kubernetes-release/release/v1.8.3/kubernetes-node-linux-amd64.tar.gz
注:直接在node-2服务器上执行命令下载即可!
  2)解压源码包
tar zxf kubernetes-node-linux-amd64.tar.gz

  3)递归创建kubernetes运行文件存放目录
  mkdir -p /k8s/{bin,cfg}
  4)将解压目录里的文件移动到新创建的目录里
  mv  kubernetes/server/bin/{ kubectl,kubelet,kube-proxy}   /k8s/bin/
  5)创建连接master apiserver配置文件
  vi  /k8s/cfg/kubelet.kubeconfig
  apiVersion: v1
kind: Config
clusters:

  • cluster:
    server: http://192.168.152.170:8080
    name: local
    contexts:
  • context:
    cluster: local
    name: local
    current-context: local

注:kubeconfig文件用于kubelet连接master apiserver的。

  6)创建kubelet配置文件
  vi /k8s/cfg/kubelet
  #启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#Kubelet服务IP地址
NODE_ADDRESS="--address=192.168.152.169"
#Kubelet服务端口
NODE_PORT="--port=10250"
#自定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.152.169"
#kubeconfig路径,指定连接API服务器
KUBELET_KUBECONFIG="--kubeconfig=/k8s/cfg/kubelet.kubeconfig"
#允许容器请求特权模式,默认false
KUBE_ALLOW_PRIV="--allow-privileged=false"
#DNS信息
KUBELET_DNS_IP="--cluster-dns=10.0.100.2"
KUBELET_DNS_DOMAIN="--cluster-domain=cluster.local"
#禁用使用Swap
KUBELET_SWAP="--fail-swap-on=false"

  7)创建kubelet服务的systemd启动文件
  vi /lib/systemd/system/kubelet.service
  [Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=-/k8s/cfg/kubelet
ExecStart=/k8s/bin/kubelet \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_ADDRESS} \
${NODE_PORT} \
${NODE_HOSTNAME} \
${KUBELET_KUBECONFIG} \
${KUBE_ALLOW_PRIV} \
${KUBELET_DNS_IP} \
${KUBELET_DNS_DOMAIN} \
${KUBELET_SWAP}
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target

  8)启动kubelet服务
  #重新加载kubelet服务守护进程
  systemctl daemon-reload
  #设置kubelet服务开机自启
  systemctl enable kubelet
  #重新启动kubelet服务
  systemctl restart kubelet
2、配置kube-proxy组件
  1)创建kube-proxy配置文件
  vi  /k8s/cfg/kube-proxy
#启用日志标准错误
KUBE_LOGTOSTDERR="--logtostderr=true"
#日志级别
KUBE_LOG_LEVEL="--v=4"
#自定义节点名称
NODE_HOSTNAME="--hostname-override=192.168.152.169"
#API服务地址
KUBE_MASTER="--master=http://192.168.152.170:8080"

  2)创建kube-proxy服务的systemd服务启动文件
  vi /lib/systemd/system/kube-proxy.service
  [Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=/k8s/cfg/kube-proxy
ExecStart=/k8s/bin/kube-proxy \
${KUBE_LOGTOSTDERR} \
${KUBE_LOG_LEVEL} \
${NODE_HOSTNAME} \
${KUBE_MASTER}
Restart=on-failure
[Install]
WantedBy=multi-user.target

  3)启动kube-proxy服务
  #重新加载kube-proxy服务守护进程
  systemctl daemon-reload
  #设置kube-proxy服务开机自启
  systemctl enable kube-proxy
  #重启kube-apiserver服务
  systemctl restart kube-proxy
3、安装docker(docker-ce.x86_64 0:18.03.1.ce-1.el7.centos)
  1)安装docker-ce的yum源
  //下载yum源到本地
  wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  //移动yum源到/etc/yum.repos.d/目录下
  mv docker-ce.repo /etc/yum.repos.d/

  2)从高到低排列显示docker版本
  yum list docker-ce --showduplicates | sort -r

注:在正式环境,必须使用统一的稳定版本,而不是总使用最新(这样各host上的版本可能不一致)
  3)安装docker-ce .x86_64-18.03.1.ce-1.el7.centos
  yum -y install docker-ce .x86_64-18.03.1.ce-1.el7.centos

  4)启动docker服务
  //设置docker开机自启
  systemctl  enable docker
  //启动docker服务
  systemctl  start docker
  //重启docker服务
  systemctl  restart docker
验证群集部署是否成功
1、设置k8s命令的环境变量
  echo "export PATH=$PATH:/k8s/bin" >> /etc/profile
  注:有几台机器就执行几遍,当前有三台机器上都执行!
2、让环境变量立即生效
  source /etc/profile
3、在master节点上用命令查看群节点状态
  kubectl get nodes

注:能看到当前你所添加的所有节点,表示群集部署完成!
  参考文章:Kubernetes(K8S)集群管理Docker容器(部署篇)




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-672753-1-1.html 上篇帖子: centos7内核版本升级 下篇帖子: CentOS DNS服务学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表