# 3、重新打 tag docker tag apache/rocketmq-operator:0.3.0 自己的仓库地址/apacherocketmq/rocketmq-operator:0.3.0 docker tag apacherocketmq/rocketmq-console:2.0.0 自己的仓库地址/apacherocketmq/rocketmq-console:2.0.0 docker tag apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0 自己的仓库地址/apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0 docker tag apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 自己的仓库地址/apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0
cd /srv/rocketmq-operator sed -i 'N;8 a \ namespace: devops' deploy/crds/rocketmq.apache.org_brokers.yaml sed -i 'N;8 a \ namespace: devops' deploy/crds/rocketmq.apache.org_consoles.yaml sed -i 'N;8 a \ namespace: devops' deploy/crds/rocketmq.apache.org_nameservices.yaml sed -i 'N;8 a \ namespace: devops' deploy/crds/rocketmq.apache.org_topictransfers.yaml sed -i 'N;18 a \ namespace: devops' deploy/operator.yaml sed -i 'N;18 a \ namespace: devops' deploy/role_binding.yaml sed -i 's/namespace: default/namespace: devops/g' deploy/role_binding.yaml sed -i 'N;18 a \ namespace: devops' deploy/service_account.yaml sed -i 'N;20 a \ namespace: devops' deploy/role.yaml
sed -i 's/namespace: default/namespace: devops/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml sed -i 'N;18 a \ namespace: devops' example/rocketmq_v1alpha1_cluster_service.yaml
4.3、修改镜像地址为内网地址:
1 2 3 4 5 6 7 8
sed -i 's#apache/rocketmq-operator:0.3.0#自己的仓库地址/apacherocketmq/rocketmq-operator:0.3.0#g' deploy/operator.yaml sed -i 's#apacherocketmq#自己的仓库地址/apacherocketmq#g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
当一个 Pod 以 HOST 模式(和宿主机共享网络,hostNetwork: true)启动时,这个 POD 中的所有容器都会使用宿主机的 /etc/resolv.conf 配置进行 DNS 查询,但是如果在 Pod 中仍然还想继续使用 k8s 集群 的 DNS 服务时,就需要将 dnsPolicy 设置为 ClusterFirstWithHostNet。
ClusterFirst
使用这种方式表示 Pod 内的 DNS 优先会使用 k8s 集群内的 DNS 服务,也就是会使用 kubedns 或者 coredns 进行域名解析。如果解析不成功,才会使用宿主机的 DNS 配置进行解析。
Default
这种方式,会让 kubelet 来决定 Pod 内的 DNS 使用哪种 DNS 策略。kubelet 的默认方式,其实就是使用宿主机的 /etc/resolv.conf 来进行解析。你可以通过设置 kubelet 的启动参数, –resolv-conf=/etc/resolv.conf 来决定该 DNS 服务使用的解析文件的地址 当我们部署集群 DNS 服务的时候,一般就需要将 dnsPolicy 设置成 Default,而并非使用默认值 ClusterFirst,否则该 DNS 服务的上游解析地址会变成它自身的 Service 的 ClusterIP(我解析我自己),导致域名无法解析
None
这种方式顾名思义,不会使用集群和宿主机的 DNS 策略。而是和 dnsConfig 配合一起使用,来自定义 DNS 配置,否则在提交修改时报错。
4.6、修改 storageClassName 为 glusterfs或者nfs:
1 2 3 4
# 有2处 sed -i 's/storageClassName: rocketmq-storage/storageClassName: 业务存储名字/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/storageMode: EmptyDir/storageMode: StorageClass/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
4.7、修改 nameServers 为域名的形式:
1 2
# 有两处 sed -i 's/nameServers: ""/nameServers: "name-server-service.devops:9876"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
Notice: name-server-service.devops 是 NameServer service 名称 + 项目名称的组合 默认配置采用 pod [ip:port] 的形式 , 一旦 Pod IP 发生变化 ,Console 就没法管理集群了 , 且 Console 不会自动变更配置,如果设置为空的话可能还会出现随便配置的情况,因此一定要提前修改。
4.8、修改 RocketMQ NameServer 和 Console 的 service 配置:
1 2 3 4
sed -i '32,46s/^#//g' example/rocketmq_v1alpha1_cluster_service.yaml sed -i 's/nodePort: 30000/nodePort: 31080/g' example/rocketmq_v1alpha1_cluster_service.yaml sed -i 's/nodePort: 30001/nodePort: 31081/g' example/rocketmq_v1alpha1_cluster_service.yaml sed -i 's/namespace: default/namespace: devops/g' example/rocketmq_v1alpha1_cluster_service.yaml
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR rocketmq-operator 1/1 1 1 6m46s manager registry.devops.com.cn/apacherocketmq/rocketmq-operator:0.3.0 name=rocketmq-operator
$ kubectl get pods -n devops -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES rocketmq-operator-7cc6b48796-htpk8 1/1 Running 0 2m28s 10.233.116.70 ks-k8s-master-2 <none> <none>
configmap/broker-config created broker.rocketmq.apache.org/broker created nameservice.rocketmq.apache.org/name-service created console.rocketmq.apache.org/console created
验证
StatefulSet:
1 2 3 4 5 6
$ kubectl get sts -o wide -n devops
NAME READY AGE CONTAINERS IMAGES broker-0-master 1/1 27s broker registry.devops.com.cn/apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 broker-0-replica-1 1/1 27s broker registry.devops.com.cn/apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 name-service 1/1 27s name-service registry.devops.com.cn/apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0
Deployment:
1 2 3 4 5
$ kubectl get deploy -o wide -n devops
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR console 1/1 1 1 52s console registry.devops.com.cn/apacherocketmq/rocketmq-console:2.0.0 app=rocketmq-console rocketmq-operator 1/1 1 1 4h43m manager registry.devops.com.cn/apacherocketmq/rocketmq-operator:0.3.0 name=rocketmq-operator
NAME READY AGE CONTAINERS IMAGES name-service 2/2 16m name-service registry.zdevops.com.cn/apacherocketmq/rocketmq-nameserver:4.9.4-alpine-operator-0.3.0