- 基础环境配置:
- 1.JDK安装
- 2.安装Tomcat
- 3.安装mysql
- 4.zookeeper安装
- 5.Hadoop安装
- 6.Hive安装
- 7.habse安装
- 8.Kafka安装
- 9.Scala安装
- Docker安装
- 部署kubernetes-dashboard
- 查看pod容器运行状态
- 查看pod日志
- 查看dashboard前端的service
- 查看dashboard被k8s分配到了哪一台机器上,IP
- 查看dashboard的集群内部IP和访问端口
- 查看kubernetes-dashboard名称空间下的secret
- 找到对应的带有token的kubernetes-dashboard-token-x8s4t
- kuberbetes启动 pod遇到 CrashLoopBackOff问题的解决思路:
- 常用命令
- 安装docker-compose
- Harbor仓库搭建
- harbor启动必须再harbor目录下(存在docker-compose.yml)
- docker镜像上传harbor仓库
- Istio安装部署
基础环境配置:
yum search java | grep jdk; 检查jdk版本
yum install java-xxxx-openjdk; 下载安装jdk
which java -> /usr/bin/java 查找默认安装的jdk可执行文件路径
ls -lrt /usr/bin/java 命令通过此文件查找jdk安装路径
yum install initscripts -y service命令环境准备
yum install iptables-services 检测并安装iptables,在/etc/sysconfig/iptables中配置防火墙规则,开放端口
-A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT
-A INPUT -m state —state NEW -m tcp -p tcp —dport 80 -j ACCEPT
重启 service iptables restart
重新载入修改的配置 systemctl daemon-reload
1.JDK安装
- 上传jdk-7u45-linux-x64.tar.gz到Linux上
解压jdk至/root/apps目录下 tar -zxvf jdk-7u45-linux-x64.tar.gz -C /root/apps
3.设置环境变量,在/etc/profile 文件最后追加相关内容 vi /etc/profile
export JAVA_HOME=/root/apps/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
4.刷新环境变量 source /etc/profile
5.测试java命令是否可用 java -version
2.安装Tomcat
1.上传apache-tomcat-7.0.68.tar.gz到Linux上
2.解压tomcat
tar -zxvf apache-tomcat-7.0.68.tar.gz -C /usr/local/
3.启动tomcat
/usr/local/apache-tomcat-7.0.68/bin/startup.sh
4.查看tomcat进程是否启动
jps
5.查看tomcat进程端口
netstat -anpt | grep 2465
6.通过浏览器访问tomcat
http://192.168.0.101:8080
下载rz环境用于文件上传
yum -y install lrzsz
rz -y 上传
- 配置ping连接
Vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.159.11
NETMASK=255.255.255.0
GATEWAY=192.168.159.2
DNS1=8.8.8.8
service network restart 重启网关服务
vi /etc/hosts
192.168.159.11 cdh1 ……
service iptables stop 关闭防火墙
chkconfig iptables off
2. Ssh
yum install openssh-clients* -y
Ssh-keygen 生成公钥
Ssh-copy-id Mini1 把公钥发送给另一台主机
Ssh Mini1 连接3.安装mysql
yum list | grep mysql
yum install -y mysql-server mysql mysql-devel
rpm -qi mysql-server 更新mysql-server
service mysqld start 启动服务
lsof -i:3306 检查3306端口是否正常
chkconfig —list | grep mysqld
chkconfig mysqld on
mysqladmin -u root password ‘root’
mysql -u root –p
systemctl enable mysqld设置mysqld服务开机启动
创建用户再赋权(Mysql8.0以后)
mysql> CREATE USER ‘root’@’%’ IDENTIFIED BY ‘你的密码’;
Query OK, 0 rows affected (0.48 sec)
mysql> grant all privileges on . to ‘root’@’%’;
Query OK, 0 rows affected (0.48 sec)
1,设置访问单个数据库权限
mysql>grant all privileges on test.* to ‘root’@’%’;
说明:设置用户名为root,密码为空,可访问数据库test
2,设置访问全部数据库权限
mysql>grant all privileges on . to ‘root’@’%’;
说明:设置用户名为root,密码为空,可访问所有数据库*
3,设置指定用户名访问权限
mysql>grant all privileges on . to ‘liuhui’@’%’;
说明:设置指定用户名为liuhui,密码为空,可访问所有数据库*
4,设置密码访问权限
mysql>grant all privileges on . to ‘liuhui’@’%’ IDENTIFIED BY ‘liuhui’;
说明:设置指定用户名为liuhui,密码为liuhui,可访问所有数据库*
5,设置指定可访问主机权限
mysql>grant all privileges on . to ‘liuhui’@’10.2.1.11’;
说明:设置指定用户名为liuhui,可访问所有数据库*,只有10.2.1.11这台机器有权限访问
配置编码格式
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
4.zookeeper安装
1.解压: tar -zxvf zookeeper-3.4.5.tar.gz -C /root/apps
2.重命名: mv zookeeper-3.4.5 zookeeper
3.修改环境变量 vi /etc/profile 在最后面添加内容
export ZOOKEEPER_HOME=/root/apps/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
4.重新编译文件 source /etc/profile
5.进入 conf中修改配置文件
cd apps/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg 在其中添加内容
dataDir=/root/apps/zookeeper/zkdata
server.1=window:2888:3888 (主机名, 心跳端口、数据端口)
server.2=Mini1:2888:3888
server.3=Mini2:2888:3888
6.创建文件夹 cd apps/zookeeper/ mkdir zkdata
7.在zkdata文件夹下新建myid文件,文件内容与zoo.cfg中server.?一一对应
cd zkdata vi myid 添加内容为:1
修改其他机器的配置文件
到Mini1上:修改myid为:2
到Mini2上:修改myid为:3
8.将集群下发到其他机器上
scp -r /root/apps/zookeeper root@Mini1:/root/apps/
scp -r /root/apps/zookeeper root @Mini2:/root/apps/
9.启动 zkServer.sh start
10查看集群状态 zkServer.sh status
5.Hadoop安装
- 上传HADOOP安装包
- 规划安装目录 /home/hadoop/apps/hadoop-2.6.1
- 解压安装包 tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C /root/apps
- 修改配置文件 $HADOOP_HOME/etc/hadoop/
vi hadoop-env.sh
| # The java implementation to use. export JAVA_HOME=/root/apps/jdk1.7.0_51 |
|---|
vi core-site.xml
自己创建一个 |
|---|
vi hdfs-site.xml
其他的可不写 |
|---|
vi mapred-site.xml
vi yarn-site.xml
vi slaves
| cdh1 Mini1 Mini2 |
|---|
启动集群
初始化HDFS
| bin/hadoop namenode -format |
|---|
启动HDFS(单点启动)
| sbin/start-dfs.sh |
|---|
启动YARN
| sbin/start-yarn.sh |
|---|
启动所有:start-all.sh 关闭所有 stop-all.sh
6.Hive安装
1.将hive文件上传至hadoop集群中并解压
2.解压至/export/servers/中
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /export/servers/
cd /export/servers/
ln -s apache-hive-1.2.1-bin hive 配置别名 类似指针
3.配置环境变量,编辑/etc/profile
#set hive env
export HIVE_HOME=/export/servers/hive
export PATH=${HIVE_HOME}/bin:$PATH
#让环境变量生效
source /etc/profilec
4.修改hive的配置文件
进入配置文件的目录
cd /export/servers/hive/conf/
修改hive-env.sh文件
cp hive-env.sh.template hive-env.sh
将以下内容写入到hive-env.sh文件中export JAVA_HOME=/export/servers/jdkexport HADOOP_HOME=/export/servers/hadoopexport HIVE_HOME=/export/servers/hive
修改log4j文件
cp hive-log4j.properties.template hive-log4j.properties
将EventCounter修改成org.apache.hadoop.log.metrics.EventCounter#log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounterlog4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
配置远程登录模式
touch hive-site.xml
将以下信息写入到hive-site.xml文件中
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>980523lxj</value></property></configuration>
5.安装mysql并配置hive数据库的权限
安装mysql数据库及客户端
yum install mysql-server
yum install mysql
service mysqld start
配置hive元数据库
mysql -u root -p
create database hive;
对hive元数据库进行赋权,开放远程连接,开放localhost连接
grant all PRIVILEGES on . to ‘root’@’%’ identified by ‘980523lxj’ WITH GRANT OPTION
grant all PRIVILEGES on . to ‘root’@’localhost’ identified by ‘980523lxj’ WITH GRANT OPTION
6. 把mysql的连接驱动放到hive/lib下
- schematool -dbType mysql -initSchema
8.运行hive命令即可启动hive hive
附录1:如果报错Terminal initialization failed; falling back to unsupported
将/export/servers/hive/lib 里面的jline2.12替换了hadoop 中/export/servers/hadoop/hadoop-2.6.1/share/hadoop/yarn/lib/jline-0.09*.jar
附录2:jdbc驱动类出错

附录3:异常信息
Logging initialized using configuration in jar:file:/export/servers/apache-hive-2.0.0-bin/lib/hive-common-2.0.0.jar!/hive-log4j2.properties
Exception in thread “main” java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)
处理方法:
schematool -dbType mysql -initSchema
7.habse安装
解压
tar -zxvf hbase-0.94.6.tar.gz -C /root/apps
重命名
修改环境变量(每台机器都要执行)
vi /etc/profile
添加内容:
| export HBASE_HOME=/root/apps/hbase export PATH=$PATH:$HBASE_HOME/bin |
|---|
source /etc/proflie
su - hadoop
修改配置文件
分发到其他节点
scp -r /root/apps/hbase hadoop@slave1:/home/hadoop/
scp -r /root/apps/hbase hadoop@slave2:/home/hadoop/
scp -r /root/apps/hbase hadoop@slave3:/home/hadoop/
启动
注意:启动hbase之前,必须保证hadoop集群和zookeeper集群是可用的。
start-hbase.sh
监控
- 进入命令行
- hbase shell
- 页面监控

8.Kafka安装
1、上传并解压

2、修改配置文件 /root/apps/kafka_2.11-0.8.2.2/config
修改server.properties 只修改broker.id和zookeeper就行
#broker的全局唯一编号,不能重复broker.id=01#用来监听链接的端口,producer或consumer将在此端口建立连接port=9092#处理网络请求的线程数量num.network.threads=3#用来处理磁盘IO的线程数量num.io.threads=8#发送套接字的缓冲区大小socket.send.buffer.bytes=102400#接受套接字的缓冲区大小socket.receive.buffer.bytes=102400#请求套接字的缓冲区大小socket.request.max.bytes=104857600#kafka消息存放的路径log.dirs=/root/kafka-logs/kafka#topic在当前broker上的分片个数num.partitions=2#用来恢复和清理data下数据的线程数量num.recovery.threads.per.data.dir=1#segment文件保留的最长时间,超时将被删除log.retention.hours=168#滚动生成新的segment文件的最大时间log.roll.hours=168#日志文件中每个segment的大小,默认为1Glog.segment.bytes=1073741824#周期性检查文件大小的时间log.retention.check.interval.ms=300000#日志清理是否打开log.cleaner.enable=true#broker需要使用zookeeper保存meta数据zookeeper.connect=cdh1:2181,Mini1:2181,Mini2:2181#zookeeper链接超时时间zookeeper.connection.timeout.ms=6000#partion buffer中,消息的条数达到阈值,将触发flush到磁盘log.flush.interval.messages=10000#消息buffer的时间,达到阈值,将触发flush到磁盘log.flush.interval.ms=3000#删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除delete.topic.enable=true#此处的host.name为本机IP(重要),如果不改,则客户端会抛出:Producerconnection to localhost:9092 unsuccessful 错误!host.name=cdh1
3、分发到其他节点下
(1) scp -r /root/apps/ root@Mini1:/root/apps
(2) scp -r /root/apps/ root@Mini2:/root/apps
4、更改其他节点先的broker.id
Mini1的
broker.id=02
host.name=Mini1
Mini2的
broker.id=03
Host.name=Mini2
5、启动
5.1先启动zookeeper
5.2再启动kafka
[root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-server-start.sh -daemon config/server.properties &创建topic-test (cdh1上)./bin/kafka-topics.sh --create --zookeeper cdh1:2181,Mini1:2181,Mini2:2181 --replication-factor 3 --partitions 3 --topic test列出已创建的topic列表(cdh11上)[root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-topics.sh --list --zookeeper cdh1:2181test[root@zhiyou01 kafka_2.12-1.1.0]#启动控制台生产者 (cdh1上)./bin/kafka-console-producer.sh --broker-list cdh1:9092, Mini1:9092, Mini2:9092 --topic test[root@zhiyou01 kafka_2.12-1.1.0]# ./bin/kafka-console-producer.sh --broker-list cdh1:9092, Mini1:9092, Mini2:9092 --topic test> 此处可以输入内容启动控制台消费者 (其他的节点上面)[root@zhiyou02 kafka_2.12-1.1.0]# ./bin/kafka-console-consumer.sh --bootstrap-server cdh1:9092 --from-beginning --topic test(新版本使用bootstrap-server)./bin/kafka-console-consumer.sh --zookeeper cdh1:2181 --from-beginning --topic test删除主题:./bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
彻底删除topic:
1、删除kafka存储目录(server.properties文件log.dirs配置,默认为”/tmp/kafka-logs”)相关topic目录
2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。
9.Scala安装
安装JDK
因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK
安装Scala
Windows安装Scala编译器
访问Scala官网http://www.scala-lang.org/下载Scala编译器安装包,目前最新版本是2.12.x,但是目前大多数的框架都是用2.10.x编写开发的,所以这里推荐2.10.x版本,下载scala-2.10.6.msi后点击下一步就可以了
Linux安装Scala编译器
下载Scala地址http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz然后解压Scala到指定目录
tar -zxvf scala-2.10.6.tgz -C /usr/java
配置环境变量,将scala加入到PATH中
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin
Scala开发工具安装
目前Scala的开发工具主要有两种:Eclipse和IDEA,这两个开发工具都有相应的Scala插件,如果使用Eclipse,直接到Scala官网下载即可http://scala-ide.org/download/sdk.html。
由于IDEA的Scala插件更优秀,大多数Scala程序员都选择IDEA,可以到http://www.jetbrains.com/idea/download/下载社区免费版,点击下一步安装即可,安装时如果有网络可以选择在线安装Scala插件。这里我们使用离线安装Scala插件:
- 安装IDEA,点击下一步即可。由于我们离线安装插件,所以点击Skip All and Set Defaul
- 下载IEDA的scala插件,地址http://plugins.jetbrains.com/?idea_ce

- 安装Scala插件:Configure -> Plugins -> Install plugin from disk -> 选择Scala插件 -> OK -> 重启IDEA




Docker安装
- 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加软件源信息(由于国内使用官网的太慢了,这里使用阿里的资源库来加速)sudo yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新 yum 缓存sudo yum makecache
- 更新并安装 Docker-CE sudo yum -y install docker-ce docker-ce-cli containerd.io
- 查看安装版本docker version
- 开启Docker服务sudo service docker start
二进制安装:
- curl -fsSL https://get.docker.com -o get-docker.sh
- DRY_RUN=1 sh ./get-docker.sh
服务间ssh配置
systemctl status sshd 查看sshd状态
systemctl enable sshd 设置开机启动
/etc/hosts配置映射关系
192.168.119.202 master
192.168.119.203 slave1
192.168.119.204 slave2
ssh-keygen -t rsa 生成私钥公钥
ssh-copy-id -i id_rsa.pub root@另一服务器ip 公钥发送给另一服务器(互相操作)
ssh ip 即可
部署kubernetes-dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
查看pod容器运行状态
kubectl get pods -n kubernetes-dashboard
查看pod日志
kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-9774cc786-8vsl7
查看dashboard前端的service
kubectl get svc -n kubernetes-dashboard -o wide
查看dashboard被k8s分配到了哪一台机器上,IP
kubectl get pods —all-namespaces -o wide
kubectl get pods -n 命名空间 -o wide | grep pod名称
查看dashboard的集群内部IP和访问端口
kubectl get services —all-namespaces
查看kubernetes-dashboard名称空间下的secret
kubectl get secret -n kubernetes-dashboard
``
找到对应的带有token的kubernetes-dashboard-token-x8s4t
kubectl describe secret admin-user-token-x8s4t -n kubernetes-dashboard
默认的token只有default名称空间内容权限,我们需要建立管理员权限token
vi dashboard-adminuser.yamlapiVersion: v1kind: ServiceAccountmetadata:name: admin-usernamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:name: admin-userroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-adminsubjects:- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard应用dashboard-adminuser.yaml:kubectl create -f dashboard-adminuser.yaml查看admin-user用户的token(显示所有,如下)kubectl get secret -n kubernetes-dashboard获取tokenkubectl describe secret admin-user-token-8xf9f -n kubernetes-dashboard往后需要再次登陆dashboard页面且让你输密码的时候,你只需要输入以下命令即可重新提取密码kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

显示所有节点
kubectl get nodes;
修改节点角色(增加,删除):
kubectl label node slave2 node-role.kubernetes.io/worker2=salve2 salve2节点增加 worker2角色
kubectl label node slave2 node-role.kubernetes.io/worker2- salve2节点删除 worker2角色
节点服务器(slave1/slave2)重启后,重启docker服务,重新运行各pod
kuberbetes启动 pod遇到 CrashLoopBackOff问题的解决思路:
- 查找问题
kubectl describe pod 名字 -n kube-system
- 查看日志
kubectl logs pod名字 -n 类别
- 根据日志failed错误提示解决问题。
常用命令
https://www.cnblogs.com/zhanglianghhh/p/13467038.html
1、查看各节点状态:kubectl get node
2、查看node事件:kubectl describe node
3、查看Pod状态:kubectl get pod -o wide
4、查看Pod事件:kubectl describe pod
5、查看Pod日志文件:kubectl logs -f
6、进入pod内部:kubectl exec -it/bin/bash
7、查看系统Kubelet 日志: journalctl -l -u kubelet -n 1000
8、查询副本编辑器:kubectl get rc
9、修改rc环境变量: kubectl edit pod | grep
安装docker-compose
//下载docker-compose工具所需的依赖(部署docker环境时,就可以安装了)
yum -y install yum-utils device-mapper-persistent-data lvm2
//下载docker-compose工具
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
//查看docker-compose工具版本信息,确保已经安装成功
docker-compose -v
10-kubeadm.conf配置文件地址:
/usr/lib/systemd/system/kubelet.service.d
Harbor仓库搭建
下载地址:https://github.com/goharbor/harbor/releases
解压:tar zxf harbor-offline-installer-v1.7.0.tgz -C /root/harbor
解压harbor安装包后,修改harbor.yml配置文件
hostname: 192.168.119.202 (自己本机地址)
port: 1180 (自己定义端口号,记得不要使用80端口)
harbor_admin_password: Harboor12345 (admin进入密码)
harbor启动必须再harbor目录下(存在docker-compose.yml)
docker镜像上传harbor仓库
指定用户名、密码及harbor服务器地址登录 harbor
docker login -u admin -p Harbor12345 192.168.119.202:1001
更改镜像名称,demo-test是刚才创建的仓库名称,4604f55c1d85 为镜像id
docker tag 4604f55c1d85 192.168.119.202:1001/demo-test/demo-test:v1
- 推送镜像到harbor仓库
docker push 192.168.119.202:1001/demo-test/demo-test:v1
Istio安装部署
下载Istio安装包:https://github.com/istio/istio/releases/tag/1.9.1
安装:
istioctl install —set profile=demo -y
给命名空间添加标签,指示 Istio 在部署应用的时候,自动的注入 Envoy 边车代理:
kubectl label namespace default istio-injection=enabled
验证标签是否添加成功
kubectl describe ns default |grep istio-injection
部署istio示例应用 bookinfo(samples 为istio安装目录中携带的)
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml


