环境:

两台虚拟机,

10.10.20.203 部署docker、etcd、flannel、kube-apiserver、kube-controller-manager、kube-scheduler

10.10.20.206 部署docker、flannel、kubelet、kube-proxy

注意:主机名不能有下划线,否则kubelet不能注册到master,执行kubectl get node,不会有任何返回。如果主机名不能修改,并且有下划线,就再kubelet的启动参数中增加--hostname-override,指定一个不带下划线的名字。

【修改hosts文件】

修改master机上的/etc/hosts文件,增加

  1. 10.10.20.206 k8s-slave1-

【关闭防火墙】

关闭所有服务器的防火墙,执行如下命令

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service
  3. systemctl status firewalld.service

【etcd】

1、下载curl -L https://github.com/coreos/etcd/releases/download/v2.3.7/etcd-v2.3.7-linux-amd64.tar.gz -o etcd-v2.3.7-linux-amd64.tar.gz
2、将etcd和etcdctl拷贝到/usr/bin下

  1. cp etcd /usr/bin/etcd
  2. cp etcdctl /usr/bin/etcdctl

3、启动命令

  1. etcd --name etcd \
  2. --data-dir /var/lib/etcd \
  3. --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
  4. --advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
  5. >> /var/log/etcd.log >& &

4、检查状态

  1. etcdctl -C http://localhost:4001 cluster-health

输出如下信息,代表正常

member ce2a822cea30bfca is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy

【k8s部署准备】

1、下载编译好的k8s,文件比较大,1.38G,下载地址如下

https://github.com/kubernetes/kubernetes/releases/download/v1.3.3/kubernetes.tar.gz

2、解压/kubernetes/server/kubernetes-server-linux-amd64.tar.gz,将/kubernetes/server/kubernetes/server/bin目录下的可执行文件拷贝到/usr/bin,使用如下命令

  1. find ./ -perm | xargs -i cp {} /usr/bin

【kube-apiserver】

  1. kube-apiserver \
  2. --logtostderr=true --v= \
  3. --etcd-servers=http://10.10.20.203:4001 \
  4. --insecure-bind-address=0.0.0.0 --insecure-port= \
  5. --service-cluster-ip-range=10.254.0.0/ \
  6. >> /var/log/kube-apiserver.log >& &

【kube-controller-manager】

  1. kube-controller-manager \
  2. --logtostderr=true --v= \
  3. --master=http://10.10.20.203:8080 \
  4. >> /var/log/kube-controller-manager.log >& &

【kube-scheduler】

  1. kube-scheduler \
  2. --logtostderr=true --v= \
  3. --master=http://10.10.20.203:8080 \
  4. >> /var/log/kube-scheduler.log >& &

【kube-proxy】

  1. kube-proxy \
  2. --logtostderr=true --v= \
  3. --master=http://10.10.20.203:8080 \
  4. >> /var/log/kube-proxy.log >& &

【kubelet】

  1. kubelet \
  2. --logtostderr=true --v= \
  3. --address=0.0.0.0 \
  4. --api-servers=http://10.10.20.203:8080 \
  5. --pod-infra-container-image=index.tenxcloud.com/google_containers/pause-amd64:3.0 \
  6. >> /var/log/kubelet.log >& &

【flannel】
1、下载flannel https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz
2、解压
3、将flanneld拷贝到/usr/bin

  1. cp flanneld /usr/bin

4、配置网络(在master节点上执行一次即可,其他节点忽略此步骤)

  1. etcdctl -C http://10.10.20.203:4001 \
  2. set /coreos.com/network/config '{"Network":"10.0.0.0/16"}'

5、启动(在所有节点上都执行),执行了该指令后,会生成/run/flannel/subnet.env文件,启动docker的时候需要使用

  1. flanneld -etcd-endpoints=http://10.10.20.203:4001 \
  2. >> /var/log/flanneld.log >& &

6、删除之前通过yum安装docker时,创建的docker0网桥

  1. iptables -t nat -F
  2. ifconfig docker0 down
  3. brctl delbr docker0

【docker】

docker的安装就不介绍了,在安装k8s之前先通过yum安装的,因为要指定docker使用的网桥等信息,所以systemctl stop docker后,通过以下命令行的形式来启动

  1. source /run/flannel/subnet.env
  2. dockerd \
  3. -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \
  4. --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} \
  5. --insecure-registry 10.10.20.202 \
  6. >> /var/log/docker.log >& &

此时再查看网络情况,ifconfig

  1. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  2. inet 10.0.77.1 netmask 255.255.255.0 broadcast 0.0.0.0
  3. ether 02:42:4f:38:38:39 txqueuelen 0 (Ethernet)
  4. RX packets 0 bytes 0 (0.0 B)
  5. RX errors 0 dropped 0 overruns 0 frame 0
  6. TX packets 0 bytes 0 (0.0 B)
  7. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  8.  
  9. flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1472
  10. inet 10.0.77.0 netmask 255.255.0.0 destination 10.0.77.0
  11. unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
  12. RX packets 0 bytes 0 (0.0 B)
  13. RX errors 0 dropped 0 overruns 0 frame 0
  14. TX packets 0 bytes 0 (0.0 B)
  15. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

【杀进程】

因为都是通过命令行的方式启动,所以停止的时候就直接杀进程了

  1. #杀docker
  2. ps -ef | grep docker | grep -v grep | awk '{print $2}' | xargs -i kill - {}
  3. #杀etcd
  4. ps -ef | grep etcd | grep -v grep | awk '{print $2}' | xargs -i kill - {}
  5. #杀k8s
  6. ps -ef | grep kube | grep -v grep | awk '{print $2}' | xargs -i kill - {}
  7. #杀flannel
  8. ps -ef | grep flannel | grep -v grep | awk '{print $2}' | xargs -i kill - {}

 

k8s集群部署的更多相关文章

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  2. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  3. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  6. (视频)asp.net core系列之k8s集群部署视频

    0.前言 应许多网友的要求,特此录制一下k8s集群部署的视频.在录制完成后发现视频的声音存在一点瑕疵,不过不影响大家的观感. 一.视频说明 1.视频地址: 如果有不懂,或者有疑问的欢迎留言.视频分为两 ...

  7. 在k8s集群部署SonarQube

    目录 1.2.存储环境 1.3.sonarqube版本 2.部署sonarqube 2.1.部署PostgreSQL 2.2.部署SonarQube 2.3.访问检查 SonarQube 是一款用于代 ...

  8. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

  9. 基于k8s集群部署prometheus监控etcd

    目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...

  10. 菜鸟系列k8s——k8s集群部署(2)

    k8s集群部署 1. 角色分配 角色 IP 安装组件 k8s-master 10.0.0.170 kube-apiserver,kube-controller-manager,kube-schedul ...

随机推荐

  1. ES6 Promise的resolved深入理解

    Promise的概念在ES6标准推出来之前已经深入人心,很多框架和第三方库都有类似的实现.但在深入理解ES6的Promise对象的时候,受之前经验的影响,很多概念给人似是而非的感觉,其中有一个特别明显 ...

  2. hdu 1501 Zipper dfs

    题目链接: HDU - 1501 Given three strings, you are to determine whether the third string can be formed by ...

  3. IntelliJ debug grails 无效的解决办法

    从Grails 2.2以后默认run-app命令将启动Grails应用程序在一个单独的Java虚拟机. 这就是所谓的分叉的Tomcat Grails中的执行. 这样的类路径Grails构建系统和应用程 ...

  4. selenium 截图

    http://blog.csdn.net/u010953692/article/details/78320025 # coding:utf-8 # coding:cp936 from selenium ...

  5. tensorflow dynamic rnn源码分析

    python3.6,tensorflow1.11 测试代码: tensorflow在eager模式下进行测试,方便调试,查看中间结果 import tensorflow as tf tf.enable ...

  6. 转:MVVM的基本入门简介

    https://mp.weixin.qq.com/s?__biz=MzA3MjA4NjE3NQ==&mid=404502568&idx=1&sn=fe512f9820b99d3 ...

  7. Weblogic OutOfMemory exception的误解 -- thread limitation

    不是全部的OutofMemory exception都是内存问题... 前几天有个客户的site报了下面错误: [ERROR][thread ] Could not start thread Time ...

  8. POJ 2388:Who&#39;s in the Middle

    Who's in the Middle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31015   Accepted: 1 ...

  9. ping百度不通的解决方案

    1.ping  www.baidu.com unknow baidu.com 第一步,确定是否能ping通网关 第二步,确定是否能直接ping通外网 如ping 8.8.8.8 第三步,如果上面两个都 ...

  10. Ubuntu14.04下MySQL的安装与卸载

    转载自:https://www.2cto.com/os/201408/329502.html 安装MysQL 执行以下命令:sudo apt-get install mysql-server 2. 继 ...