k8s集群部署
环境:
两台虚拟机,
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文件,增加
10.10.20.206 k8s-slave1-
【关闭防火墙】
关闭所有服务器的防火墙,执行如下命令
systemctl stop firewalld.service
systemctl disable firewalld.service
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下
cp etcd /usr/bin/etcd
cp etcdctl /usr/bin/etcdctl
3、启动命令
etcd --name etcd \
--data-dir /var/lib/etcd \
--listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
--advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
>> /var/log/etcd.log >& &
4、检查状态
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,使用如下命令
find ./ -perm | xargs -i cp {} /usr/bin
【kube-apiserver】
kube-apiserver \
--logtostderr=true --v= \
--etcd-servers=http://10.10.20.203:4001 \
--insecure-bind-address=0.0.0.0 --insecure-port= \
--service-cluster-ip-range=10.254.0.0/ \
>> /var/log/kube-apiserver.log >& &
【kube-controller-manager】
kube-controller-manager \
--logtostderr=true --v= \
--master=http://10.10.20.203:8080 \
>> /var/log/kube-controller-manager.log >& &
【kube-scheduler】
kube-scheduler \
--logtostderr=true --v= \
--master=http://10.10.20.203:8080 \
>> /var/log/kube-scheduler.log >& &
【kube-proxy】
kube-proxy \
--logtostderr=true --v= \
--master=http://10.10.20.203:8080 \
>> /var/log/kube-proxy.log >& &
【kubelet】
kubelet \
--logtostderr=true --v= \
--address=0.0.0.0 \
--api-servers=http://10.10.20.203:8080 \
--pod-infra-container-image=index.tenxcloud.com/google_containers/pause-amd64:3.0 \
>> /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
cp flanneld /usr/bin
4、配置网络(在master节点上执行一次即可,其他节点忽略此步骤)
etcdctl -C http://10.10.20.203:4001 \
set /coreos.com/network/config '{"Network":"10.0.0.0/16"}'
5、启动(在所有节点上都执行),执行了该指令后,会生成/run/flannel/subnet.env文件,启动docker的时候需要使用
flanneld -etcd-endpoints=http://10.10.20.203:4001 \
>> /var/log/flanneld.log >& &
6、删除之前通过yum安装docker时,创建的docker0网桥
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
【docker】
docker的安装就不介绍了,在安装k8s之前先通过yum安装的,因为要指定docker使用的网桥等信息,所以systemctl stop docker后,通过以下命令行的形式来启动
source /run/flannel/subnet.env
dockerd \
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \
--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} \
--insecure-registry 10.10.20.202 \
>> /var/log/docker.log >& &
此时再查看网络情况,ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 10.0.77.1 netmask 255.255.255.0 broadcast 0.0.0.0
ether 02:42:4f:38:38:39 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1472
inet 10.0.77.0 netmask 255.255.0.0 destination 10.0.77.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
【杀进程】
因为都是通过命令行的方式启动,所以停止的时候就直接杀进程了
#杀docker
ps -ef | grep docker | grep -v grep | awk '{print $2}' | xargs -i kill - {}
#杀etcd
ps -ef | grep etcd | grep -v grep | awk '{print $2}' | xargs -i kill - {}
#杀k8s
ps -ef | grep kube | grep -v grep | awk '{print $2}' | xargs -i kill - {}
#杀flannel
ps -ef | grep flannel | grep -v grep | awk '{print $2}' | xargs -i kill - {}
k8s集群部署的更多相关文章
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- (视频)asp.net core系列之k8s集群部署视频
0.前言 应许多网友的要求,特此录制一下k8s集群部署的视频.在录制完成后发现视频的声音存在一点瑕疵,不过不影响大家的观感. 一.视频说明 1.视频地址: 如果有不懂,或者有疑问的欢迎留言.视频分为两 ...
- 在k8s集群部署SonarQube
目录 1.2.存储环境 1.3.sonarqube版本 2.部署sonarqube 2.1.部署PostgreSQL 2.2.部署SonarQube 2.3.访问检查 SonarQube 是一款用于代 ...
- 基于k8s集群部署prometheus监控ingress nginx
目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...
- 基于k8s集群部署prometheus监控etcd
目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...
- 菜鸟系列k8s——k8s集群部署(2)
k8s集群部署 1. 角色分配 角色 IP 安装组件 k8s-master 10.0.0.170 kube-apiserver,kube-controller-manager,kube-schedul ...
随机推荐
- POJ 3171 Cleaning Shifts(DP+zkw线段树)
[题目链接] http://poj.org/problem?id=3171 [题目大意] 给出一些区间和他们的价值,求覆盖一整条线段的最小代价 [题解] 我们发现对区间右端点排序后有dp[r]=min ...
- NOI2014 部分题解
感觉NOI2014的一些题目也是比较好做的... 但是笔者往往有思路却没有想清楚就开始搞了...这样还是不太好.. Day1 T1 起床困难综合征 (我感觉这题应该叫综合征不是综合症...) a ...
- mysql如何用jsp代码进行数据库备份
mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test ...
- ReactNative学习笔记1 Flexbox布局
一.比例属性flex和布局方向属性flexDirection 例如三个视图的flex属性值分别为2.4.8,则它们的高度比例为2:4:8.,宽度不指定,默认为全屏的宽度. class ZLFReact ...
- 通过PHP current()函数获取未知字符键名数组第一个元素的值
在开发中经常遇到这样问题,获取数组第一个元素的值,如果是数字索引那还好,直接$array[0],如果键名是字符串,你又未知这个字符串呢?用current()函数就可以做到. 当然,你可以用array_ ...
- sql server 性能调优 资源等待之内存瓶颈的三种等待类型
原文:sql server 性能调优 资源等待之内存瓶颈的三种等待类型 一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),S ...
- DotnetBrowser高级教程-(4)使用MVC框架3-文件上传
网站有时候需要上传文件,本节以上传一张图片为例,在UserController.cs里添加如下代码: public string UploadImgPage() { return "< ...
- ASP.net的身份验证方式有哪些?
[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验 ...
- Attribute 和 Parameter 的区别
Attribute 和 Parameter 的区别 (1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法 (2)当两个Web组件之间为 ...
- eclipse自动添加作者、日期等注释
使用eclipse的时候一般会添加自己的注释,标注日期作者等内容,我总结的添加注释的方式有两种:一.在新建class时自动添加注释:二.通过快捷键自动添加注释.下面分别描述一下添加方式. 一.新建cl ...