首页 文章 精选 留言 我的

精选列表

搜索[部署],共10000篇文章
优秀的个人博客,低调大师

PostgreSQL on Docker部署是的shm配置注意

标签 PostgreSQL , docker , shm , 动态共享内存 背景 如果你使用docker启动PG时,遇到类似这样的问题,可能你需要看看docker的/dev/shm是不是不够大。 "ERROR: could not resize shared memory segment "/PostgreSQL.388782411" to 50438144 bytes: No space left on device SQL state: 53100" 调整docker启动参数--shm-size Thank you Thomas, I make it work with extra setting --shm-size=1g in my docker run script. It works with

优秀的个人博客,低调大师

TriAquae3.0部署安装

TriAquae 3.0安装 安装环境: centos 6.5 64bit 参考网址: http://triweb.sinaapp.com/ 下载软件: http://triweb.sinaapp.com/index.html#blog 支持WEB界面,所有以以下功能均以在WEB界面上实现 只需一台Linux管理端,被管理机无需安装任何客户端,仅需支持SSH协议 支持命令批量执行,结果实时返回 支持批量传送/接收文件到远程客户端 支持对服务器状态的监控 支持资产的自动管理,无需在手动维护资产列表,实现硬件信息收集,包括生产厂家、机器型号、SN号、硬盘、内存等信息 可对所有服务器进行性能分析,并通过报表的形式显示,用户可能一眼就识别系统运行状态 支持服务器根据业务划分、服务器所处地区进行分组管理,亦可动态添加删除被管理服务器 支持基本的审计功能,可以查看所有的运维操作记录 关闭selinux和iptables(或者将iptables设置允许7000和4200端口通过) 安装依赖环境: #yum install gcc gcc-c++ make sysstat nc -y #yum install python-devel -y #yum install mysql mysql-server mysql-devel -y #yum install rrdtool -y 升级python为2.75(下载的安装包中自带升级python2.75的脚本) #python -V #cd /usr/local/src #tar zxvf TriAquae.2014-04-26.tar.gz #cd TriAquae/install #sh python_ins27.sh 在mysql中创建TriAquae库 #/etc/init.d/mysqld start #chconfig mysqld on #mysqladmin -uroot -p password 123456 #mysql -uroot -p123456 >create database TriAquae; >exit; 安装TriAquae #cd /usr/local/src/TriAquae/install #python setup.py build --prefix=/usr/local/TriAquae #python setup.py install 修改数据库和IP #vim tri_config.py MySQL_Name = 'TriAquae' # Don't change this database name MySQL_Host = '127.0.0.1' # Your Mysql hostname MySQL_Port = '3306' # Your Mysql port MySQL_User = 'root' # Your Mysql username MySQL_Pass = '123456' Tri_IP = '10.200.3.112' # Change it to your own IP address 初始化 #python setup.py init 启动TriAauae #cd /usr/local/TriAquae/TriAquae/sbin #python tri_service.py start 登陆TriAquae: http://ip:7000/ 默认账号: admin 默认密码: triaquae http://mouyu230.blog.163.com/blog/static/20667220120148132033164/ ------------------------------------------------------------------------------------------------------------------------------- linux上编译安装python2.7.5 1. 下载python2.7.5,保存到 /data/qtongmon/softwarehttp://www.python.org/ftp/python/ 2. 解压文件tar xvf Python-2.7.5.tar.bz2 3. 创建安装目录mkdir /usr/local/python27 4. 安装python./configure --prefix=/usr/local/python27makemake install 5. 修改老版本的ln指向(注意:这里修改后,可能会影响yum的使用)mv /usr/bin/python /usr/bin/python2.4.3ln -s /usr/local/python27/bin/python /usr/bin/python -------------------------------------------------------------------------------------- centos TriAquae 安装 1.先升级python为2.7.2 tar jxvf Python-2.7.2.tar.bz2 cd Python-2.7.2 ./configure –prefix=/usr/local/python2.72 –enable-shared make make install 加入库文件:/usr/local/python2.72/lib 并执行ldconfig -v 2.安装相关环境和依赖 yum install gcc gcc-c++ make sysstat nc -y yum install python-devel -y yum install rrdtool yum install mysql mysql-server mysql-devel -y /etc/init.d/mysqld start 3.建立数据库、账号 cretate database TriAquae; GRANT ALL ON TriAquae.* TO ‘TriAquaeuser’@'%’ IDENTIFIED BY ‘TriAquaepwd’; 4.安装与配置 下载主程序 wget http://sourceforge.net/projects/triaquae/files/latest/download?source=files 解压文件 tar zxvf TriAquae.2014-04-26.tar.gz 进入install目录 cd TriAquae/install 编译 python setup.py build –prefix=/opt/TriAquae 安装 python setup.py install 进入安装目录下的conf文件夹 vim tri_config.py 修改3步创建的数据库和IP 、报警邮箱等信息。 python setup.py init 提示初始完成即可 5.启动并登入 /usr/local/python2.72/bin/python /opt/TriAquae/TriAquae/sbin/tri_service.py start 登入地址: http://192.168.242.136:7000/ 默认账号/密码:admin/triaquae 6.参考地址:http://triweb.sinaapp.com/

优秀的个人博客,低调大师

Confluence 持续集成平台部署记录

1.1 Confluence简介 Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。 Confluence为团队提供一个协作环境。在这里,团队成员齐心协力,各擅其能,协同地编写文档和管理项目。从此打破不同团队、不同部门以及个人之间信息孤岛的僵局,Confluence真正实现了组织资源共享。 1.1.1 使用情况 Confluence 已经在超过100个国家,13500个组织中成功地应用于企业内网平台、知识管理及文档管理,涉及财富1000企业、政府机构、教育机构、财务金融机构及技术研究领域。 包括IBM、Sun MicroSystems、SAP等众多知名企业使用Confluence来构建企业Wiki并面向公众开放。 1.2 环境准备 confluence的运行是依赖java环境的,也就是说需要安装jdk并且要是1.7以上版本, 1.2.1 系统环境说明 [root@conflunce ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@conflunce ~]# uname -a Linux conflunce 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@conflunce ~]# getenforce Disabled [root@conflunce ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) 1.2.2 软件环境说明 [root@conflunce tools]# java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) # 安装 jdk wget http://10.0.0.1/apache/tomcat/jdk-8u60-linux-x64.tar.gz tar xf jdk-8u60-linux-x64.tar.gz -C /application/ ln -s /application/jdk1.8.0_60 /application/jdk sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile source /etc/profile 为confluence创建对应的数据库 # 安装数据库 [root@conflunce ~]# yum install -y mariadb-server [root@conflunce ~]# systemctl start mariadb.service mysql配置 create database confluence default character set utf8 collate utf8_bin; grant all on confluence.* to 'confluence'@'localhost' identified by 'confluence'; 1.3 下载confluence cd /server/tools wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-5.6.6-x64.bin 1.4 安装confluence 1.4.1 安装 修改权限 [root@conflunce tools]# chmod 755 atlassian-confluence-5.6.6-x64.bin [root@conflunce tools]# ./atlassian-confluence-5.6.6-x64.bin 安装confluence [root@conflunce tools]# ./atlassian-confluence-5.6.6-x64.bin Unpacking JRE ... Starting Installer ... 十一月 24, 2017 4:56:41 下午 java.util.prefs.FileSystemPreferences$ INFO: Created user preferences directory. 十一月 24, 2017 4:56:41 下午 java.util.prefs.FileSystemPreferences$ INFO: Created system preferences directory in java.home. This will install Confluence 5.6.6 on your computer. OK [o, Enter], Cancel [c] o Choose the appropriate installation or upgrade option. Please choose one of the following: Express Install (uses default settings) [1], Custom Install (recommd users) [2, Enter], Upgrade an existing Confluence installation [3 1 See where Confluence will be installed and the settings that will b Installation Directory: /opt/atlassian/confluence Home Directory: /var/atlassian/application-data/confluence HTTP Port: 8090 RMI Port: 8000 Install as service: Yes Install [i, Enter], Exit [e] i Extracting files ... …… Please wait a few moments while Confluence starts up. Launching Confluence ... Installation of Confluence 5.6.6 is complete Your installation of Confluence 5.6.6 is now ready and can be accessed via your browser. Confluence 5.6.6 can be accessed at http://localhost:8090 Finishing installation ... 使用浏览器访问 http://10.0.0.211:8090/setup/ 注意:这个访问地址根据自己的世纪服务器地址进行调整。 1.4.2 修改程序 通过上图,我们可以看到现在confluence要我们输入license,下面我们进行破解。 # 首先下载修改包 http://down.51cto.com/data/2236416 https://page00.ctfile.com/fs/15323800-217465309 # 先停止 conflunce服务 [root@conflunce tools]# /etc/init.d/confluence stop executing using dedicated user If you encounter issues starting up Confluence, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide Server startup logs are located in /opt/atlassian/confluence/logs/catalina.out Using CATALINA_BASE: /opt/atlassian/confluence Using CATALINA_HOME: /opt/atlassian/confluence Using CATALINA_TMPDIR: /opt/atlassian/confluence/temp Using JRE_HOME: /opt/atlassian/confluence/jre/ Using CLASSPATH: /opt/atlassian/confluence/bin/bootstrap.jar:/opt/atlassian/confluence/bin/tomcat-juli.jar Using CATALINA_PID: /opt/atlassian/confluence/work/catalina.pid Tomcat stopped. # 删除原来的包文件 [root@conflunce ~]# cd /opt/atlassian/confluence/confluence/WEB-INF/lib [root@conflunce lib]# ll |grep atlassian-extra |wc -l 6 [root@conflunce lib]# ll |grep atlassian-extra -rw-r--r-- 1 root root 14935 12月 1 2014 atlassian-extras-api-3.2.jar -rw-r--r-- 1 root root 21788 12月 1 2014 atlassian-extras-common-3.2.jar -rw-r--r-- 1 root root 38244 12月 1 2014 atlassian-extras-core-3.2.jar -rw-r--r-- 1 root root 5171 12月 1 2014 atlassian-extras-decoder-api-3.2.jar -rw-r--r-- 1 root root 6668 12月 1 2014 atlassian-extras-decoder-v2-3.2.jar -rw-r--r-- 1 root root 68438 12月 1 2014 atlassian-extras-legacy-3.2.jar [root@conflunce lib]# rm -fr atlassian-extra* 解压修改包,然后把里面的atlassian-extras-3.2.jar、Confluence-5.6.6-language-pack-zh_CN.jar、mysql-connector-java-5.1.39-bin.jar 将三个jar文件复制到/opt/atlassian/confluence/confluence/WEB-INF/lib目录下 wget http://15323800.144.unicom.data.tv002.com:443/down/36077cbf0624ef69db7b6416be45dbcf-1924995/confluence5.6.6%20crack.zip?cts=ot-f-D116A117A134A73Fc448e&ctp=116A117A134A73&ctt=1511507163&limit=1&spd=100000&ctk=0c1f445e181194c024eaeaa2a268a3c2&chk=36077cbf0624ef69db7b6416be45dbcf-1924995 unzip confluence5.6.6\ crack.zip cd confluence5.6.6-crack/jar cp ./* /opt/atlassian/confluence/confluence/WEB-INF/lib/ 其中atlassian-extras-3.2.jar文件是和license相关的,Confluence-5.6.6-language-pack-zh_CN.jar是confluence中文语言包,而mysql-connector-java-5.1.39-bin.jar是confluence连接mysql数据库相关的jar包。 再次说明下: atlassian所有产品的中文语言包,我们都可以通过以下地址下载到: https://translations.atlassian.com/dashboard/download?lang=zh_CN#/Confluence/5.6.6 而mysql-connector-java-5.1.39-bin.jar文件可以连接mysql5.7及其以下的mysql版本,可以参考如下连接: http://www.w3resource.com/mysql/mysql-java-connection.php 最后要启动confluence [root@conflunce ~]# /etc/init.d/confluence start 1.4.3 在windows上运行confluence_keygen.jar 注意windows上需要安装jdk运行环境。 serverID 要填写web界面上的 将生成的key复制带web界面即可 1.5 配置数据库 选择direct JDBC 输入数据库用户密码 数据库初始化完毕后,会跳转到如下界面 配置confluence的管理员账号和密码 输入管理员信息 安装完成 安装完成后的界面 到此Confluence就安装完成了。 1.6 参考文档 https://www.ilanni.com/?p=11989# https://baike.baidu.com/item/confluence/452961?fr=aladdin 作者: 惨绿少年 出处: http://www.nmtui.com 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

优秀的个人博客,低调大师

zookeeper安装部署--分布式模式

本地模式,和伪分布模式,只适合测试 1:下载zookeeper(zookeeper-3.4.6.tar.gz) http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.7/ 规划:5个节点(nimbus,slave1,slave2,slave3,slave4)参与选举为前三个节点,后面两个节点作为observer,不参与投票,只负责监控,读取数据 创建目录(xshell 执行一下命令,5个节点同时创建目录) mkdir -p /home/hadoop/app tar -zxvfzookeeper-3.4.6.tar.gz mvzookeeper-3.4.6zookeeper chown -R hadoop:hadoopzookeeper su hadoop cdzookeeper cd conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfg tickTime=2000(客户端与服务器之间维持心跳的时间间隔单位毫秒)每个多少时间发送一个心跳 initLimit=10(zookeeper接收客户端,zookeeper服务器集中连到leader服务器,不是用户客户端,次数超过多少,无应答,表示失败) syncLimit=5(leader与follower,发送消息,请求和应答时间长度) dataDir=/tmp/zookeeper(数据节点,日志文件)/home/hadoop/data/zookeeper/zkdata dataLogDir=/home/hadoop/data/zookeeper/zkdatalog clientPort=2181(客户端口) server.1=nimbus:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888 server.4=slave3:2888:3888:observer server.5=slave4:2888:3888:observer (xshell 执行一下命令,5个节点同时创建目录) mkdir -p /home/hadoop/data/zookeeper/zkdata mkdir -p /home/hadoop/data/zookeeper/zkdatalog cd /home/hadoop/data/zookeeper/zkdata vi myid 1 wq slave1 下 cd zkdata vi myid 2 wq 其他节点类似创建myid 将配置好的zookeeper同步到其他节点上 scp -r zookeeper hadoop@slave1:/home/hadoop/app/ scp -r zookeeper hadoop@slave2:/home/hadoop/app/ scp -r zookeeper hadoop@slave3:/home/hadoop/app/ scp -r zookeeper hadoop@slave4:/home/hadoop/app/ slave3上改配置 vi zoo.cfg peerType=observer slave4上改配置 vi zoo.cfg peerType=observer 快捷命令方式 cd /home/hadoop/app/zookeeper 启动下 bin/zkServer.sh start 查看进程 jps bin/zkServer.sh status follower nimbus,slave1 leader slave2 observer slave3,slave4 测试-把slave2停止 bin/zkServer.sh stop slave1变成leader 把slave1停掉 bin/zkServer.sh stop nimbus下 bin/zkServer.sh status 集群不可用 slave3和slave4都不可用 本文转自 skinglzw 51CTO博客,原文链接:http://blog.51cto.com/skinglzw/1833305,如需转载请自行联系原作者

优秀的个人博客,低调大师

centos6.5下的elk部署

1、介绍 elk是实时日志分析平台,主要是为开发和运维人员提供实时的日志分析,方便人员更好的了解系统状态和代码问题。 2、elk中的e(elasticsearch): (2.1)先安装依赖包,官方文档说明使用java1.8 yum -y install java-1.8.0-openjdk 安装elasticsearch: tar zvxf elasticsearch-1.7.0.tar.gz mv elasticsearch-1.7.0 /usr/local/elasticsearch vim /usr/local/elasticsearch/config cp elasticsearch.yml elasticsearch.yml.bak vim elasticsearch.yml(修改) 1 2 3 4 5 6 7 8 9 10 11 12 cluster.name:elasticsearch node.name:syk node.master: true node.data: true index.number_of_shards:5 index.number_of_replicas:1(分片副本) path.data: /usr/local/elasticsearch/data path.conf: /usr/local/elasticsearch/conf path.work: /usr/local/elasticsearch/work path.plugins: /usr/local/elasticsearch/plugins path.logs: /usr/local/elasticsearch/logs bootstrap.mlockall: true (内存) 启动:/usr/local/elasticsearch/bin/elasticsearch -d netstat -tlnp查看 会有9200与9300的java进程 curlhttp://192.168.137.50:9200 显示: 1 2 3 4 5 6 7 8 9 10 11 12 13 { "status" :200, "name" : "syk" , "cluster_name" : "elasticsearch" , "version" :{ "number" : "1.7.0" , "build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743" , "build_timestamp" : "2015-07-16T14:31:07Z" , "build_snapshot" : false , "lucene_version" : "4.10.4" }, "tagline" : "YouKnow,forSearch" } (2.2)使用官方给的启动脚本: https://codeload.github.com/elastic/elasticsearch-servicewrapper/zip/master 用rz命令传到服务器上 unzip elasticsearch-servicewrapper-master.zip mv elasticsearch-servicewrapper-master/service/ /usr/local/elasticsearch/bin/ cd /usr/local/elasticsearch/bin/service ./elasticsearch install(在init.d下自动创建服务脚本) /etc/init.d/elasticsearch restart 1 2 3 4 5 6 7 curl-XGET 'http://192.168.137.50:9200/_count?pretty' -d' >{ > "query" :{ > "match_all" :{} >} >} >' 会返回: 1 2 3 4 5 6 7 8 { "count" :0, "_shards" :{ "total" :0, "successful" :0, "failed" :0 } } (2.3)基于rest api的界面(可以增删改差) 安装插件:/usr/local/elasticsearch/bin/plugin -i elasticsearch/marvel/latest (自动安装) 网页访问:http://192.168.137.50:9200/_plugin/marvel 安装集群管理插件 /usr/local/elasticsearch/bin/plugin -i mobz/elasticsearch-head 或者:https://github.com/mobz/elasticsearch-head/archive/master.zip下载下来,rz传到服务器 unzip elasticsearch-head-master.zip mv elasticsearch-head-master plugins/head 网页访问:http://192.168.137.50:9200/_plugin/head 可以以网页的方式显示你的分片已分片副本。 3、elk中的l(logstash): (3.1)安装logstash: i)、官方提供了yum安装的安装方式: 1、rpm --importhttps://packages.elastic.co/GPG-KEY-elasticsearch 2、vim /etc/yum.repos.d/logstash.repo 添加: 1 2 3 4 5 6 [logstash-2.3] name=Logstashrepository for 2.3.xpackages baseurl=https: //packages .elastic.co /logstash/2 .3 /centos gpgcheck=1 gpgkey=https: //packages .elastic.co /GPG-KEY-elasticsearch enabled=1 3、yum --enablerepo=logstash-2.3 -y install logstash ii)、下载tar包安装: tar zvxf logstash-1.5.3.tar.gz mv logstash-1.5.3 /usr/local/logstash (3.2)测试 1 /usr/local/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' 输入hehe 显示: 1 2 3 4 5 6 7 8 Logstashstartupcompleted hehe { "message" => "hehe" , "@version" => "1" , "@timestamp" => "2016-08-07T17:46:10.836Z" , "host" => "web10.syk.com" } 这表示正常。 (3.3)写logstash配置文件 注意: 必须input{}与output{} 写法:符号使用=> vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 input{ file { path=> "/var/log/syk.log" } } output{ file { path=> "/tmp/%{+YYYY-MM-dd}.syk.gz" gzip => true } } 启动logstash:/usr/local/logstash/bin/logstash -f /etc/logstash.conf cd /var/log cat maillog >> syk.log(追加到syk.log里) 在/tmp下可以看到以日期命名的syk.gz压缩文件 (3.4)使用redis存储logstash: yum -y install redis(redis放在另外一台服务器上) vim /etc/redis.conf(修改) bind 192.168.137.52 在192.168.137.52服务器上也安装logstash 编写配置文件: vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 input{ file { path=> "/var/log/syk.log" } } output{ redis{ data_type=> "list" key=> "system-messages" host=> "192.168.137.52" port=> "6379" db=> "1" } } 启动52服务器的logstash: /usr/local/logstash/bin/logstash -f /etc/logstash.conf cd /var/log cat maillog >> syk.log(追加到syk.log里) 进去redis里查看: 1 2 3 4 redis-cli-h192.168.137.52-p6379 select 1 keys*(可以看到system-messages这个key) llensystem-messages(可以看大system-messages这个key的长度) (3.4)将logstash收集的日志信息传到es上 在192.168.137.50的服务器上写logstash配置文件: vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 input{ redis{ data_type=> "list" key=> "system-messages" host=> "192.168.137.52" port=> "6379" db=> "1" } } output{ elasticsearch{ host=> "192.168.137.50" protocol=> "http" index=> "system-messages-%{+YYYY.MM.dd}" } } 启动logstash: 1 /usr/local/logstash/bin/logstash -f /etc/logstash .conf 这时我们去看redis的LLENsystem-messages,会发现已经变成了0,这说明数据已经传输到es上了。 网页访问:http://192.168.137.50:9200/_plugin/head/ 会多出来一个system-messages-2016.08.07的分片副本 4、elk中的k(kibana): (4.1)安装: 解压 mv就行 cd /usr/local/kiabna/config/ vim kibana.yml修改: 1 elastcsearch: "http://192.168.137.50:9200" 启动: 1 nohup . /bin/kiban &(默认端口5601) 网页访问: http://192.168.137.50:5601 相关操作需要配合图片说明,这里暂时不说了。 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1836732,如需转载请自行联系原作者

优秀的个人博客,低调大师

使用Kubespray 部署kubernetes 高可用集群

Requirements Ansible v2.4 及以上版本,安装python-netaddr到运行Ansible commands的机器 Jinja 2.9 及以上版本,运行Ansible Playbooks 目标servers 必须可以访问外网,可以pull docker images 目标servers 配置允许 IPv4 forwarding 将公钥复制到所有机器 关闭防火墙 请提前安装好docker,因为k8s不支持最新版docker,具体适配哪些docker版本,请看k8s上的changelog 0、环境 主机名 IP master1 172.16.105.21 master2 172.16.105.22 master3 172.16.105.23 node1 172.16.105.24 node2 172.16.105.25 ansible-client 172.16.105.20 1、安装ansible和依赖 在172.16.105.20安装ansible # 安装 python 及 epel yum install -y epel-release python-pip python34 python34-pip # 安装 ansible yum install -y ansible pip install netaddr pip install --upgrade jinja2 2、建立公私钥,分发各服务器 在ansible-clinet机器生成免密密钥对 ssh-keygen -t rsa -P '' 将生成的公钥(id_rsa.pub)传到其他节点,这样ansible-client可以免密登陆其他机器 cat id_rsa.pub >> ~/.ssh/authorized_keys 3、下载kuberspay源码 cd /usr/local/src/ wget https://github.com/kubernetes-incubator/kubespray/archive/v2.3.0.tar.gz 本版本所包含的组件版本 Kubernetes v1.8.1 Docker 1.13.1 etcd v3.2.4 Rkt v1.21.0 (optional) Calico v2.5.0 Weave 2.0.4 Flannel v0.8.0 3.1 禁用docker yum仓和docker安装 vim roles/docker/tasks/main.yml --- - name: gather os specific variables include_vars: "{{ item }}" with_first_found: - files: - "{{ ansible_distribution|lower }}-{{ ansible_distribution_version|lower|replace('/', '_') }}.yml" - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release }}.yml" - "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml" - "{{ ansible_distribution|lower }}.yml" - "{{ ansible_os_family|lower }}.yml" - defaults.yml paths: - ../vars skip: true tags: - facts - include: set_facts_dns.yml when: dns_mode != 'none' and resolvconf_mode == 'docker_dns' tags: - facts - name: check for minimum kernel version fail: msg: > docker requires a minimum kernel version of {{ docker_kernel_min_version }} on {{ ansible_distribution }}-{{ ansible_distribution_version }} when: (not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]) and (ansible_kernel|version_compare(docker_kernel_min_version, "<")) tags: - facts #禁用docker仓库,已经使用清华源 #- name: ensure docker repository public key is installed # action: "{{ docker_repo_key_info.pkg_key }}" # args: # id: "{{item}}" # keyserver: "{{docker_repo_key_info.keyserver}}" # state: present # register: keyserver_task_result # until: keyserver_task_result|succeeded # retries: 4 # delay: "{{ retry_stagger | random + 3 }}" # environment: "{{ proxy_env }}" # with_items: "{{ docker_repo_key_info.repo_keys }}" # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) #- name: ensure docker repository is enabled # action: "{{ docker_repo_info.pkg_repo }}" # args: # repo: "{{item}}" # state: present # with_items: "{{ docker_repo_info.repos }}" # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) and(docker_repo_info.repos|length > 0) #- name: Configure docker repository on RedHat/CentOS # template: # src: "rh_docker.repo.j2" # dest: "/etc/yum.repos.d/docker.repo" # when: ansible_distribution in ["CentOS","RedHat"] and not is_atomic #- name: ensure docker packages are installed # action: "{{ docker_package_info.pkg_mgr }}" # args: # pkg: "{{item.name}}" # force: "{{item.force|default(omit)}}" # state: present # register: docker_task_result # until: docker_task_result|succeeded # retries: 4 # delay: "{{ retry_stagger | random + 3 }}" # environment: "{{ proxy_env }}" # with_items: "{{ docker_package_info.pkgs }}" # notify: restart docker # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) and (docker_package_info.pkgs|length > 0) #对于docker的版本检测进行了保留 - name: check minimum docker version for docker_dns mode. You need at least docker version >= 1.12 for resolvconf_mode=docker_dns command: "docker version -f '{{ '{{' }}.Client.Version{{ '}}' }}'" register: docker_version failed_when: docker_version.stdout|version_compare('1.12', '<') changed_when: false when: dns_mode != 'none' and resolvconf_mode == 'docker_dns' #对于docker的systemd配置,可以根据自己需求修改,但是注意会覆盖原来的 - name: Set docker systemd config include: systemd.yml - name: ensure docker service is started and enabled service: name: "{{ item }}" enabled: yes state: started with_items: - docker 4、替换镜像 因为长城的原因,需要的镜像在安装的时候无法获取,所以需要改下源码,下载自己私有仓的镜像 脚本内容如下: gcr_image_files=( ./kubespray/roles/download/defaults/main.yml ./kubespray/roles/dnsmasq/templates/dnsmasq-autoscaler.yml.j2 ./kubespray/roles/kubernetes-apps/ansible/defaults/main.yml ) for file in ${gcr_image_files[@]} ; do sed -i 's/gcr.io/docker.emarbox.com/g' $file done 镜像列表,最好提前下载到私有仓,毕竟下载会很慢 gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.1 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 gcr.io/google_containers/pause-amd64:3.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3 nginx:1.11.4-alpine busybox:latest quay.io/coreos/hyperkube:v1.8.1_coreos.0 quay.io/coreos/etcd:v3.2.4 quay.io/calico/ctl:v1.5.0 quay.io/calico/node:v2.5.0 quay.io/calico/routereflector:v0.4.0 quay.io/calico/cni:v1.10.0 5、配置文件内容 可以对auth的密码进行修改,网络插件默认calico,可替换成weave或flannel,还可以配置是否安装helm和efk,以及修改安装路径 more kubespray/kubespray-2.3.0/inventory/group_vars/k8s-cluster.yml #6、生成自己的集群配置 因为kubespray自带的python脚本是Python3 ,所以要安装Python3 yum install -y python-pip python34 python34-pip # 定义集群IP IP=( 172.16.105.21 172.16.105.22 172.16.105.23 ) # 利用kubespray自带的python脚本生成配置 CONFIG_FILE=./kubespray/inventory/inventory.cfg python3 ./kubespray/contrib/inventory_builder/inventory.py ${IP[*]} 查看配置 cat ./kubespray/inventory/inventory.cfg [all] node1 ansible_host=172.16.105.21 ip=172.16.105.21 node2 ansible_host=172.16.105.22 ip=172.16.105.22 node3 ansible_host=172.16.105.23 ip=172.16.105.23 [kube-master] node1 node2 node3 [kube-node] node1 node2 node3 [etcd] node1 node2 node3 [k8s-cluster:children] kube-node kube-master [calico-rr] [vault] node1 node2 node3 7、安装集群 ansible-playbook -i inventory/inventory.cfg cluster.yml -b -v 镜像地址 kubespray/roles/download/tasks/download_container.yml 8、问题 8.1 从1.8 开始,kubelet 会检测机器是否有swap,如果启用swap,kubelet会无法启动,需要手动添加参数。 去如下目录,修改kubelet参数 /usr/local/src/kubespray/kubespray-2.3.0/roles/kubernetes/node/defaults ### fail with swap on (default true) kubelet_fail_swap_on: false 8.2 注意机器主机名,要符合k8s的规范 9、安装失败如何清理 rm -rf /etc/kubernetes/ rm -rf /var/lib/kubelet rm -rf /var/lib/etcd rm -rf /usr/local/bin/kubectl rm -rf /etc/systemd/system/calico-node.service rm -rf /etc/systemd/system/kubelet.service systemctl stop etcd.service systemctl disable etcd.service systemctl stop calico-node.service systemctl disable calico-node.service docker stop $(docker ps -q) docker rm $(docker ps -a -q) systemctl restart docker 10、安装完成 [root@node2 .kube]# kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master,node 9m v1.8.1+coreos.0 node2 Ready master,node 9m v1.8.1+coreos.0 node3 Ready master,node 9m v1.8.1+coreos.0 11、扩展集群node 把需要添加的node 写入配置文件,然后执行ansible 以添加node4举例 修改 inventory.cfg [all] node1 ansible_host=172.16.105.21 ip=172.16.105.21 node2 ansible_host=172.16.105.22 ip=172.16.105.22 node3 ansible_host=172.16.105.23 ip=172.16.105.23 node4 ansible_host=172.16.105.37 ip=172.16.105.37 [kube-master] node1 node2 node3 [kube-node] node1 node2 node3 node4 [etcd] node1 node2 node3 [k8s-cluster:children] kube-node kube-master [calico-rr] [vault] node1 node2 node3 ansible-playbook -i inventory/inventory.cfg scale.yml -b -v \ --private-key=~/.ssh/private_key 后感 了解ansible,也就能自己随便搞kubespray,这个东西比较透明,不像kubeadm,封装很严,不知道具体流程,出问题也不知道怎么处理。 本文转自银狐博客51CTO博客,原文链接http://blog.51cto.com/foxhound/2044766如需转载请自行联系原作者 战狐

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册