微服务提供者集群: 暴露服务的服务提供方
微服务消费者集群: 调用远程服务的服务消费方
注册中心: 微服务提供者集群注册, 微服务消费者集群订阅, 微服务消费者集群通过RPC协议调用微服务提供者集群
Monitor: 统计服务的调用次数和调用时间的监控中心
部署的基本流程为 git推送代码到jenkins, jenkins编译代码并打包镜像推送到镜像仓库, 然后通过kubectl或者helm操作k8s的YAML文件部署服务
用户访问的基本流程为用户访问ingress, ingress代理微服务消费者集群, ingress得到响应后, 再将数据返回给用户
主机名 | 角色 | ip |
---|---|---|
hdss11.host.com | dns, zk1 | 192.168.31.11 |
hdss200.host.com | harbor,zk2 | 192.168.31.200 |
? jdk下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
mkdir -p /usr/java
tar -xf jdk-8u261-linux-x64.tar.gz -C /usr/java/
cd /usr/java/
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version
? zookeeper 下载地址: https://archive.apache.org/dist/zookeeper/
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar xf zookeeper-3.4.14.tar.gz -C /opt/
cd /opt/
mkdir -p /data/zookeeper/data /data/zookeeper/logs
cp /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
vim /opt/zookeeper-3.4.14/conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
server.1=zk1.od.com:2888:3888
server.2=zk2.od.com:2888:3888
192.168.31.11
echo 1 > /data/zookeeper/data/myid
192.168.31.11
echo 2 > /data/zookeeper/data/myid
vim /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.od.com. dnsadmin.od.com. (
2020072401 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimun (1 day)
)
NS dns.od.com.
$TTL 60 ; 1 minute
dns A 192.168.31.11
harbor A 192.168.31.200
zk1 A 192.168.31.11
zk2 A 192.168.31.200
systemctl restart named
/opt/zookeeper-3.4.14/bin/zkServer.sh start
netstat -ntulp|grep 2181
/opt/zookeeper-3.4.14/bin/zkServer.sh status
官网: https://www.jenkins.io/download/
dockerhub: https://hub.docker.com/r/jenkins/jenkins
docker pull jenkins/jenkins:2.235.3
docker tag 135a0d19f757 harbor.od.com/public/jenkins:2.235.3
docker push harbor.od.com/public/jenkins:2.235.3
mkdir -p /data/dockerfile/jenkins
ssh-keygen -t rsa -b 2048 -C ‘1392263019@qq.com‘ -N "" -f /root/.ssh/id_rsa
cd /data/dockerfile/jenkins
cp /root/.docker/config.json .
cp /root/.ssh/id_rsa .
vim Dockerfile
FROM harbor.od.com/public/jenkins:2.235.3
USER root
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ‘Asia/Shanghai >/etc/timezone‘
ADD id_rsa /root/.ssh/id_rsa
ADD config.json /root/.docker/config.json
ADD get-docker.sh /get-docker.sh
RUN cat /etc/os-release
RUN echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config && curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
docker build . -t harbor.od.com/infra/jenkins:2.235.3
测试下镜像
需要先把公钥放到gitee上
docker run --rm harbor.od.com/infra/jenkins:2.235.3 ssh -T git@gitee.com
kubectl create ns infra
kubectl create secret docker-registry harbor --docker-server=harbor.od.com --docker-username=admin --docker-password=Harbor12345 -n infra
docker push harbor.od.com/infra/jenkins:2.235.3
所有运算节点安装nfs-utils, 并启动服务
yum -y install nfs-utils
192.168.31.200
echo ‘/data/jenkins 192.168.31.0/24(rw,no_root_squash)‘ >> /etc/exports
systemctl start rpcbind &&systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs
exportfs -v
mkdir /data/jenkins/jenkins_home/
kind: Deployment
apiVersion: apps/v1
metadata:
name: jenkins
namespace: infra
labels:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
name: jenkins
template:
metadata:
labels:
app: jenkins
name: jenkins
spec:
volumes:
- name: data
nfs:
server: hdss200
path: /data/jenkins/jenkins_home
- name: docker
hostPath:
path: /run/docker.sock
imagePullSecrets:
- name: harbor
containers:
- name: jenkins
image: harbor.od.com/infra/jenkins:2.235.3
securityContext:
runAsUser: 0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
env:
- name: JAVA_OPTS
value: -Xmx512m -Xms512m -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
volumeMounts:
- name: data
mountPath: /var/jenkins_home
- name: docker
mountPath: /run/docker.sock
kind: Service
apiVersion: v1
metadata:
name: jenkins
namespace: infra
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: jenkins
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: jenkins
namespace: infra
annotations:
kubernetes.io/ingress.class: intranet4public
spec:
rules:
- host: jenkins.od.com
http:
paths:
- path: /
backend:
serviceName: jenkins
servicePort: 80
kubectl apply -f dp.yaml
kubectl apply -f svc.yaml
kubectl apply -f ingress.yaml
kubectl get all -n infra
kubectl get ing -n infra
将域名 jenkins.od.com
设定了 kubernetes.io/ingress.class: intranet4public
, 指定了ingress为 设定了参数为 intranet4public
的ingress, 所以在本机的C:\Windows\System32\drivers\etc\hosts
将域名解析为 192.168.31.41 jenkins.od.com
浏览器输入 http://jenkins.od.com/
cat secrets/initialAdminPassword
用户名 admin
密码 admin123
192.168.31.200
cd /data/jenkins/jenkins_home/updates/
sed -i ‘s/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g‘ default.json
sed -i ‘s/www.google.com/www.baidu.com/g‘ default.json
执行完重启pod
Manage Jenkins - Manage Plugins
原文:https://www.cnblogs.com/cjwnb/p/13461268.html