微服务环境安装说明
# 1.K8S安装
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
这个工具能通过两条指令完成一个kubernetes集群的部署
# 创建一个 Master 节点
kubeadm init
# 将一个 Node 节点加入到当前集群中
kubeadm join <Master节点的IP和端口 >
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
这个工具能通过两条指令完成一个kubernetes集群的部署:
# 创建一个 Master 节点
$ kubeadm init
# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master节点的IP和端口 >
# 1.安装要求
在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
- 一台或多台机器,操作系统 CentOS7.x-86_x64
- 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
- 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
- 禁止swap分区
# 2. 准备环境
角色 | IP |
---|---|
master | 192.168.0.10 |
node1 | 192.168.0.11 |
node2 | 192.168.0.12 |
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.0.10 k8smaster
192.168.0.11 k8snode1
192.168.0.12 k8snode2
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
# 3. 所有节点安装Docker/kubeadm/kubelet
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
# 3.1 安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
Docker version 18.06.1-ce, build e68fc7a
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://c7j78ln0.mirror.aliyuncs.com",
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": ["registry.cn-test.supdevops.com"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/home/docker"
}
EOF
#重启docker
systemctl daemon-reload && systemctl restart docker
# 3.2 添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 3.3 安装kubeadm,kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
#启动kubelet并设置开机启动
systemctl start kubelet && systemctl enable kubelet
# 4. 部署Kubernetes Master
说明:
在192.168.0.10(Master)执行,由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
--apiserver-advertise-address 是你master节点的IP
--kubernetes-version 为安装的K8S版本
kubeadm init \
--apiserver-advertise-address=192.168.0.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--v=6
#重新初始化
kubeadm reset
使用kubectl工具
#配置kubelet环境变量
cat <<EOF >> /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
#让环境变量生效
. /etc/profile
# 5. 加入Kubernetes Node
在192.168.1.12/13(Node)执行。
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:
kubeadm join 192.168.0.10:6443 --token esce21.q6hetwm8si29qxwn \
--discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5
默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:
kubeadm token create --print-join-command
# 6. 部署CNI网络插件
#下载插件yaml文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
默认镜像地址无法访问,sed命令修改为docker hub镜像仓库。
#部署网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#查看是否安装成功显示running即安装成功
kubectl get pods -n kube-system
# 2.MySQL安装
# 1.下载对应系统的yum源进行安装
[root@MySQL-master ~]# yum localinstall mysql80-community-release-el7-1.noarch.rpm -y
[root@MySQL-master ~]# yum repolist all | grep mysql
[root@MySQL-master ~]# yum -y install yum-utils
#禁止安装80版本
[root@MySQL-master ~]# yum-config-manager --disable mysql80-community
#开启安装56版本
[root@MySQL-master ~]# yum-config-manager --enable mysql56-community
[root@MySQL-master ~]# yum install mysql-community-server -y
# 2.修改配置文件
[root@MySQL-master ~]# cp /etc/my.cnf /etc/my.cnf.bak
[root@MySQL-master ~]# mkdir /home/app/mysql
[root@MySQL-master ~]# vim /etc/my.cnf
配置文件
[mysqld]
#数据存储目录
datadir=/home/app/mysql
socket=/var/lib/mysql/mysql.sock
innodb_force_recovery=0
symbolic-links=0
character_set_server=utf8
#开启binlog加这个防止还原时函数报错
log_bin_trust_function_creators = 1
#其中 0:区分大小写,1:不区分大小写
lower_case_table_names=1
#开启binlog日志
server-id=1
log-bin=mysql-bin
log-bin-index=master-bin.index
#自动删除7天前的binlog日志
expire_logs_days=7
#开启慢日志
slow_query_log =1
slow_query_log_file=/home/app/mysql/slow.log
[mysqld]
port= 3306
default-storage-engine=INNODB
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 400M
table_open_cache = 512
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 6M
myisam_sort_buffer_size = 128M
join_buffer_size = 6M
thread_cache_size = 8
query_cache_type= 1
query_cache_size= 32M
thread_concurrency = 8
lower_case_table_names=1
max_connections=1000
binlog_format=mixed
innodb_buffer_pool_size = 64M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency=8
innodb_lock_wait_timeout=50
autocommit=on
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
skip-secure-auth
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 4M
write_buffer = 4M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 3.启动MySQL
#启动
[root@MySQL-master ~]# systemctl start mysqld
#开机自启
[root@MySQL-master ~]# systemctl enable mysqld
# 4.给用户赋权
[root@MySQL-master ~]# mysql -uroot
grant all privileges on *.* to root@'%' identified by "w3d56yu8r" WITH GRANT OPTION;
grant all privileges on *.* to root@'127.0.0.1' identified by "w3d56yu8r" WITH GRANT OPTION;
grant all privileges on *.* to root@'localhost' identified by "w3d56yu8r" WITH GRANT OPTION;
flush privileges;
# 3.Redis安装
# 1.安装
#yum安装Redis
yum install -y redis
#创建备份目录
mkdir /home/app/redis/
# 2.配置文件修改
#修改配置文件
vim /etc/redis.conf
requirepass itonghui #密码
appendonly yes #打开备份
dir /home/app/redis #在home/app下创建备份
#bind 127.0.0.1 #注释一下允许所有IP访问
#DB数量
databases 256
# 3.启动
#启动Redis并设置开机启动
systemctl start redis && systemctl enable redis
#查看日志
tail -f /var/log/redis/redis.log
# 4.Harbor安装
# 1.安装资源要求
安装需求
资源 | 要求 |
---|---|
CPU | 2 CPU |
Mem | 4GB |
Disk | 40GB |
Python | >=2.7 |
Docker engine | >=1.10 |
Docker Compose | >=1.6.0 |
# 2.安装Docker、Docker-Compose
# 2.1安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
Docker version 18.06.1-ce, build e68fc7a
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://c7j78ln0.mirror.aliyuncs.com",
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": ["registry.cn-test.supdevops.com"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/home/docker"
}
EOF
#重启docker
systemctl daemon-reload && systemctl restart docker
# 2.2升级Python
#下载安装包
v=3.7.0;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz
#解压安装
tar xvf Python-3.7.0.tar.xz
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install
#备份原来的版本
mv /usr/bin/python /usr/bin/python2.7.bak
mv /usr/bin/pip /usr/bin/pip.bak
#新版本做个软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
注意:
这种方式升级Python会导致yum安装不能使用,如果不能用使用下面方法修改yum
#修改配置文件
vim /usr/bin/yum
#!/usr/bin/python
import sys
try:
import yum
将上面的语句改为:
如果是2.7就写2.7根据原有的Python版本来具体判断
#!/usr/bin/python2.7
import sys
try:
import yum
vim /usr/libexec/urlgrabber-ext-down
将第一个行#!/usr/bin/python” 改为 “#!/usr/bin/python2.7”即可。
# 2.3安装Docker-Compose
#安装pip
CentOS:
yum -y install epel-release
yum -y install python-pip
Ubuntu:
apt-get install python-pip -y
#修改pip源
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
EOF
#升级pip
python -m pip install --upgrade pip
#安装docker-compose
pip install docker-compose
docker-compose -version
#如果没有docker-compose命令,做下软链接
ln -s /usr/local/python3/bin/docker-compose /usr/local/bin/
# 3.离线安装harbor
tar xvf harbor-online-installer-v1.6.3.tgz
cd harbor
#修改配置文件harbor.yml
#修改Hostname,http.port,注释掉https,更改harbor_admin_password
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.1.111
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 8089
# https related config
#https:
# https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433
# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: xxxxxxx
# 4.在harbor目录,执行./install.sh
#2.2以上加上这个参数开启扫描器
./install.sh --with-trivy --with-chartmuseum
# 5.登陆
用户名:admin
密码:配置文件中填写的密码
# 6.重启
cd /data/harbor
docker-compose stop
docker-compose up -d
# 5.Nacos注册中心安装
# 1.单机版安装
#解压安装包
tar zxvf nacos-server-1.4.2.tar.gz
cd /home/www/nacos/bin
#启动
sh startup.sh -m standalone
#查看日志
tail -f /home/www/nacos/logs/start.out
#后面得加/nacos进行访问,默认用户名密码都是nacos
http://192.168.0.196:10002/nacos
# 2.集群版本安装
解压安装包
tar zxvf nacos-server-1.4.2.tar.gz
创建数据库,nacos的conf目录下的nacos-mysql.sql在新建的数据库中执行
进入nacos的conf目录,编辑application.properties文件,增加数据库配置
spring.datasource.platform=mysql
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.0.199:10000/nacos_200?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=w3d56yu8r
最后一步需要配置一份集群节点信息,配置文件在conf目录下的cluster.conf.example文件,我们进行重命名成cluster.conf。
然后编辑cluster.conf文件,增加3个节点的信息,格式为IP:PORT,三个目录都一致即可。
192.168.0.196:20003
192.168.0.200:20000
192.168.0.200:20001
启动的话直接到bin目录下,执行./startup.sh就可以了,默认就是集群模式,不需要加任何参数。
Nginx做负载均衡,负载均衡配置这里不做详解,可以参照Nginx负载均衡配置
upstream nacos {
server 192.168.0.196:20003;
server 192.168.0.200:20000;
server 192.168.0.200:20001;
}
# 3.Nacos鉴权
开启鉴权之前,application.properties中的配置信息为:
### If turn on auth system:
nacos.core.auth.enabled=false
开启鉴权之后,application.properties中的配置信息为:
### If turn on auth system:
nacos.core.auth.enabled=true
说明:
在安装就Nacos之前需要配置jdk环境变量,建议JDK8,环境变量配置这里不做详解,具体参照环境变量配置。
# 6.ActiveMQ安装
#解压安装包
tar zxvf apache-activemq-5.14.5-bin.tar.gz
#进入目录
cd /home/app/pache-activemq-5.14.5/bin/linux-x86-x64
#启动调试模式
./activemq console
#调试模式不报错用和这个命令启动
./activemq start
说明:
在安装就ActiveMQ之前需要配置jdk环境变量,建议JDK8,环境变量配置这里不做详解,具体参照环境变量配置。
# 7.JDK环境变量配置
#解压
tar zxvf jdk-8u181-linux-x64.tar.gz -C /home/app
#配置环境变量
vim /etc/profile
export JAVA_HOME=/home/app/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#使环境变量生效
. /etc/profile
#验证环境变量是否生效
java -version
# 8.Minio对象存储安装
# 1.下载安装
#设置AKSK
vim /etc/profile
export MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
export MINIO_SECRET_KEY=wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
. /etc/profile
# 2.启动
#后台启动
nohup ./minio server --address 0.0.0.0:10005 /home/itonghui > /dev/null 2>&1 &
说明:
--address 是服务的端口和IP
/home/itonghui 是桶存放的本地磁盘路径
# 9.Jenkins安装
# 1.下载jenkins
# 2.安装jenkins
#配置环境变量
vim /etc/profile
export JAVA_HOME=/home/app/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#使环境变量生效
. /etc/profile
#验证环境变量是否生效
java -version
----安装jenkins----
mv jenkins.war /home/app/apache-tomcat-8.5.59/webapps/ROOT
# 3.修改jenkins工作目录
#设置jenkins的工作目录
vim /home/app/apache-tomcat-8.5.59/bin/catalina.sh
export JENKINS_HOME="/home/data/jenkins"
vim /etc/profile
export JENKINS_HOME=/home/data/jenkins
#让环境变量生效
. /etc/profile
# 4.插件安装
#设置下载插件地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
#中文插件
localization-zh-cn
# 10.ELK安装
# 1.安装Elasticsearch
#安装
yum -y install elasticsearch-7.8.0-x86_64.rpm
#修改配置文件
sed -i '17s/#cluster.name: my-application/cluster.name: elk/' /etc/elasticsearch/elasticsearch.yml
sed -i '23s/#node.name: node-1/node.name: node-1/' /etc/elasticsearch/elasticsearch.yml
sed -i '55s/#network.host: 192.168.0.1/network.host: 0.0.0.0/' /etc/elasticsearch/elasticsearch.yml
#单节点需要在配置文件加上这句话
cluster.initial_master_nodes: ["node-1"]
#若修改数据路径,需给路径es用户权限
chown -R elasticsearch:elasticsearch /home/ELK/elasticsearch/
#配置环境变量
vim /usr/share/elasticsearch/bin/elasticsearch
# 添加以下代码
export JAVA_HOME=/home/app/jdk1.8.0_181/
export PATH=$JAVA_HOME/bin:$PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/app/jdk1.8.0_181/bin/java"
else
JAVA=`which java`
fi
#或者
ln -s /home/app/jdk1.8.0_181/bin/java /usr/bin/java
#启动
systemctl daemon-reload && systemctl enable elasticsearch && systemctl start elasticsearch
ES配置文件
#
# Use a descriptive name for your cluster:
#
cluster.name: elk
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#收集数据存放目录
path.data: /home/ELK/elasticsearch/data
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#cluster.initial_master_nodes: ["node-1"]
network.host: 0.0.0.0
#
# ---------------------------------- xpack -----------------------------------
#xpack.monitoring.history.duration: 1d
#关闭xpack监控
xpack.monitoring.enabled: false
# 2.安装Kibana
yum -y install kibana-7.8.0-x86_64.rpm
sed -i '7s/#server.host: "localhost"/server.host: "0.0.0.0"/' /etc/kibana/kibana.yml
sed -i '28s/#elasticsearch.hosts: .*/elasticsearch.hosts: ["http:\/\/127.0.0.1:9200"]/' /etc/kibana/kibana.yml
#清空防火墙规则
iptables -F
service iptables save
systemctl enable kibana
systemctl start kibana
systemctl restart kibana
#汉化
vim /etc/kibana/kibana.yml
i18n.locale: "zh-CN"
systemctl restart kibana
#访问验证(默认5601端口)
ip:5601
# 3.安装filebeat
tar zxvf filebeat-6.7.0-linux-x86_64.tar.gz
#前台启动
./filebeat -e -c filebeat.yml
#后台启动
nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1 &
#杀死重启
ps -axu | grep filebeat | grep -v grep | awk '{print 2}' | xargs kill -9