<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=K8s%E9%83%A8%E7%BD%B2tomcat_mysql_%E4%B8%8Eingress%E6%9A%B4%E9%9C%B2%E6%9C%8D%E5%8A%A1</id>
	<title>K8s部署tomcat mysql 与ingress暴露服务 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=K8s%E9%83%A8%E7%BD%B2tomcat_mysql_%E4%B8%8Eingress%E6%9A%B4%E9%9C%B2%E6%9C%8D%E5%8A%A1"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=K8s%E9%83%A8%E7%BD%B2tomcat_mysql_%E4%B8%8Eingress%E6%9A%B4%E9%9C%B2%E6%9C%8D%E5%8A%A1&amp;action=history"/>
	<updated>2026-04-16T05:11:25Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=K8s%E9%83%A8%E7%BD%B2tomcat_mysql_%E4%B8%8Eingress%E6%9A%B4%E9%9C%B2%E6%9C%8D%E5%8A%A1&amp;diff=530&amp;oldid=prev</id>
		<title>2022年9月16日 (五) 03:05 Evan</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=K8s%E9%83%A8%E7%BD%B2tomcat_mysql_%E4%B8%8Eingress%E6%9A%B4%E9%9C%B2%E6%9C%8D%E5%8A%A1&amp;diff=530&amp;oldid=prev"/>
		<updated>2022-09-16T03:05:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=see also=&lt;br /&gt;
[[Kubernetes ingress基础#最简单的使用例子]]&lt;br /&gt;
=总文件=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# ls &lt;br /&gt;
mysql-rc.yaml  mysql-svc.yaml  myweb-rc.yaml  myweb-svc.yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=mysql=&lt;br /&gt;
 &lt;br /&gt;
==创建mysql  RC对象==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@master tomcat]#  cat mysql-rc.yaml &lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ReplicationController&lt;br /&gt;
metadata:&lt;br /&gt;
  name: mysql&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 1&lt;br /&gt;
  selector:&lt;br /&gt;
    app: mysql&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: mysql&lt;br /&gt;
    spec:&lt;br /&gt;
        containers:&lt;br /&gt;
        - image: mysql:5.7&lt;br /&gt;
          name: mysql&lt;br /&gt;
          resources:&lt;br /&gt;
            limits:&lt;br /&gt;
              cpu: &amp;quot;1&amp;quot;&lt;br /&gt;
              memory: 0.5Gi&lt;br /&gt;
          ports:&lt;br /&gt;
          - containerPort: 3306&lt;br /&gt;
          env:&lt;br /&gt;
          - name: MYSQL_ROOT_PASSWORD&lt;br /&gt;
            value: &amp;quot;123456&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl create -f  mysql-rc.yaml &lt;br /&gt;
replicationcontroller/mysql created&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl get rc &lt;br /&gt;
NAME    DESIRED   CURRENT   READY   AGE&lt;br /&gt;
mysql   1         1         0       10s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==创建mysql Service对象==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat mysql-svc.yaml &lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: mysql&lt;br /&gt;
spec:&lt;br /&gt;
  ports:&lt;br /&gt;
  - name: mysql-svc&lt;br /&gt;
    port: 3306&lt;br /&gt;
#    targetPort: 3306&lt;br /&gt;
#    nodePort: 31101&lt;br /&gt;
  selector:&lt;br /&gt;
    app: mysql&lt;br /&gt;
#  type: NodePort&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl create -f  mysql-svc.yaml &lt;br /&gt;
service/mysql created&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl get svc &lt;br /&gt;
NAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE&lt;br /&gt;
kubernetes                      ClusterIP   172.21.0.1     &amp;lt;none&amp;gt;        443/TCP    52m&lt;br /&gt;
mysql                           ClusterIP   172.21.6.69    &amp;lt;none&amp;gt;        3306/TCP   12s&lt;br /&gt;
tailored-armadillo-hello-helm   ClusterIP   172.21.7.186   &amp;lt;none&amp;gt;        80/TCP     11m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tomcat=&lt;br /&gt;
 部署tomcat服务，我们需要做两件事，一是创建RC（Replication Controller），二是创建Service。RC是kubernetes中的副本控制器，也就是说，RC负责自动部署容器化应用。Service是我们访问tomcat服务的入口地址，我们是通过Service来对该服务就行访问的。&lt;br /&gt;
&lt;br /&gt;
https://hub.docker.com/r/kubeguide/tomcat-app&lt;br /&gt;
==创建tomcat RC对象==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vi tomcat.yaml&lt;br /&gt;
&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ReplicationController&lt;br /&gt;
metadata:&lt;br /&gt;
  name: myweb&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 2&lt;br /&gt;
  selector:&lt;br /&gt;
    app: myweb&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: myweb&lt;br /&gt;
    spec:&lt;br /&gt;
      containers:&lt;br /&gt;
        - name: myweb&lt;br /&gt;
          image: docker.io/kubeguide/tomcat-app:v1&lt;br /&gt;
          ports:&lt;br /&gt;
          - containerPort: 8080&lt;br /&gt;
          env:&lt;br /&gt;
          - name: MYSQL_SERVICE_HOST&lt;br /&gt;
            value: &amp;#039;mysql&amp;#039;&lt;br /&gt;
          - name: MYSQL_SERVICE_PORT&lt;br /&gt;
            value: &amp;#039;3306&amp;#039;&lt;br /&gt;
&lt;br /&gt;
kubectl create -f  tomcat.yaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
July  2022 可能不行 &lt;br /&gt;
 cat myweb-rc.yaml &lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ReplicationController&lt;br /&gt;
metadata:&lt;br /&gt;
  name: myweb&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 2&lt;br /&gt;
  selector:&lt;br /&gt;
    app: myweb&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: myweb&lt;br /&gt;
    spec:&lt;br /&gt;
      containers:&lt;br /&gt;
      - image: registry.cn-shenzhen.aliyuncs.com/evan886/k8s:debian_tomcatv1&lt;br /&gt;
      #我的那个debian的好像不行#- image: kubeguide/tomcat-app:v1&lt;br /&gt;
        name: myweb&lt;br /&gt;
        resources:&lt;br /&gt;
          limits:&lt;br /&gt;
            cpu: &amp;quot;1.0&amp;quot;&lt;br /&gt;
            memory: 400Mi&lt;br /&gt;
        ports:&lt;br /&gt;
        - containerPort: 8080&lt;br /&gt;
        env:&lt;br /&gt;
#        - name: MYSQL_SERVICE_HOST&lt;br /&gt;
#          value: &amp;#039;mysql&amp;#039;&lt;br /&gt;
#        - name: MYSQL_SERVICE_PORT&lt;br /&gt;
#          value: &amp;#039;3306&amp;#039;&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@ tomcat]# kubectl create -f  myweb-rc.yaml &lt;br /&gt;
replicationcontroller/myweb created&lt;br /&gt;
&lt;br /&gt;
 kubectl get pods &lt;br /&gt;
NAME                                            READY   STATUS    RESTARTS   AGE&lt;br /&gt;
mysql-fkkf7                                     1/1     Running   0          2m51s&lt;br /&gt;
myweb-fp4mz                                     1/1     Running   0          34s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tomcat service ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 创建了RC对象还不行，虽然RC对象为我们自动部署了2个pod，但是我们还需要一个Service对象来作为入口地址来对创建好的tomcat进行访问，所以，接下来我们的任务就是创建Service对象&lt;br /&gt;
&lt;br /&gt;
root@k8s-master:~/tmp# cat myweb-svc.yaml &lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: myweb&lt;br /&gt;
spec:&lt;br /&gt;
  type: NodePort&lt;br /&gt;
  ports:&lt;br /&gt;
    - port: 8080&lt;br /&gt;
      nodePort: 31101&lt;br /&gt;
  selector:&lt;br /&gt;
    app: mysql&lt;br /&gt;
#  type: NodePort&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@k8s-master:~/tmp# kubectl create  -f  myweb-svc.yaml &lt;br /&gt;
service/myweb created&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
root@k8s-master:~/tmp# kubectl get services &lt;br /&gt;
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE&lt;br /&gt;
kubernetes   ClusterIP   10.96.0.1        &amp;lt;none&amp;gt;        443/TCP          2d6h&lt;br /&gt;
mysql        ClusterIP   10.106.222.111   &amp;lt;none&amp;gt;        3306/TCP         12m&lt;br /&gt;
myweb        NodePort    10.104.92.71     &amp;lt;none&amp;gt;        8080:31101/TCP   42s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=服务访问=&lt;br /&gt;
==集群外部访问服务==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
从集群的外部我们可以通过node IP + node端口号的方式来对服务进行访问。pod实际上已经分在了不同的node中了，我们只用找到其中一个pod所在的node就行了&lt;br /&gt;
[root@master tomcat]# kubectl  describe pod   myweb &lt;br /&gt;
Name:           myweb-kdfvq&lt;br /&gt;
Namespace:      default&lt;br /&gt;
Priority:       0&lt;br /&gt;
Node:           node1/192.168.88.31&lt;br /&gt;
Start Time:     Tue, 16 Jul 2019 11:04:51 +0800&lt;br /&gt;
Labels:         app=myweb&lt;br /&gt;
Annotations:    &amp;lt;none&amp;gt;&lt;br /&gt;
Status:         Running&lt;br /&gt;
IP:             10.224.1.30&lt;br /&gt;
Controlled By:  ReplicationController/myweb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可以看到我这个pod所在的IP地址。刚才已经看到了，在yaml文件中我将物理端口设为30001。好的，接下来就可以从外部对服务进行访问了。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
evan@latop:~/ssh/5min$ curl http://192.168.88.31:30001/&lt;br /&gt;
version: 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=update=&lt;br /&gt;
 &amp;lt;pre&amp;gt;重装打包tomcat images 然后上传到ali 然后 rc 文件改为v2 再发布一次 就是  &lt;br /&gt;
&lt;br /&gt;
evan@latop:~/downloads/tomcat$ curl http://192.168.88.31:30001/&lt;br /&gt;
version: 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==on aliyun==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl get services&lt;br /&gt;
NAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE&lt;br /&gt;
kubernetes                      ClusterIP   172.21.0.1     &amp;lt;none&amp;gt;        443/TCP          55m&lt;br /&gt;
mysql                           ClusterIP   172.21.6.69    &amp;lt;none&amp;gt;        3306/TCP         3m10s&lt;br /&gt;
myweb                           NodePort    172.21.4.96    &amp;lt;none&amp;gt;        8080:30001/TCP   17s&lt;br /&gt;
tailored-armadillo-hello-helm   ClusterIP   172.21.7.186   &amp;lt;none&amp;gt;        80/TCP           14m&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl get svc &lt;br /&gt;
NAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE&lt;br /&gt;
kubernetes                      ClusterIP   172.21.0.1     &amp;lt;none&amp;gt;        443/TCP          55m&lt;br /&gt;
mysql                           ClusterIP   172.21.6.69    &amp;lt;none&amp;gt;        3306/TCP         3m17s&lt;br /&gt;
myweb                           NodePort    172.21.4.96    &amp;lt;none&amp;gt;        8080:30001/TCP   24s&lt;br /&gt;
tailored-armadillo-hello-helm   ClusterIP   172.21.7.186   &amp;lt;none&amp;gt;        80/TCP           14m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
当部署完成后，单击左侧导航栏中的路由与负载均衡 &amp;gt; 服务，找到wordpress服务并查看其外端端点&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
更新服务--&amp;gt; 负载均衡--&amp;gt;   服务端口 这里为30001 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@iZwz9ignqjb7qvobn1fuocZ tomcat]# kubectl get services&lt;br /&gt;
NAME                            TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)           AGE&lt;br /&gt;
kubernetes                      ClusterIP      172.21.0.1     &amp;lt;none&amp;gt;         443/TCP           68m&lt;br /&gt;
mysql                           ClusterIP      172.21.6.69    &amp;lt;none&amp;gt;         3306/TCP          15m&lt;br /&gt;
myweb                           LoadBalancer   172.21.4.96    119.23.93.84   30001:30001/TCP   12m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LoadBalancer  ip &lt;br /&gt;
http://119.23.93.84:30001/demo/index.jsp&lt;br /&gt;
&lt;br /&gt;
hosts&lt;br /&gt;
&lt;br /&gt;
loadbalaip  a.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cat myweb.yml &lt;br /&gt;
&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  creationTimestamp: &amp;#039;2019-07-10T12:24:18Z&amp;#039;&lt;br /&gt;
  name: myweb&lt;br /&gt;
  namespace: default&lt;br /&gt;
  resourceVersion: &amp;#039;10862&amp;#039;&lt;br /&gt;
  selfLink: /api/v1/namespaces/default/services/myweb&lt;br /&gt;
  uid: a3912df1-a30d-11e9-886c-00163e107776&lt;br /&gt;
spec:&lt;br /&gt;
  clusterIP: 172.21.4.96&lt;br /&gt;
  externalTrafficPolicy: Local&lt;br /&gt;
  healthCheckNodePort: 30205&lt;br /&gt;
  ports:&lt;br /&gt;
    - name: myweb-svc&lt;br /&gt;
      nodePort: 30001&lt;br /&gt;
      port: 30001&lt;br /&gt;
      protocol: TCP&lt;br /&gt;
      targetPort: 8080&lt;br /&gt;
  selector:&lt;br /&gt;
    app: myweb&lt;br /&gt;
  sessionAffinity: None&lt;br /&gt;
  type: LoadBalancer&lt;br /&gt;
status:&lt;br /&gt;
  loadBalancer:&lt;br /&gt;
    ingress:&lt;br /&gt;
      - ip: 119.23.93.84&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
其实就是ingress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
实例间服务发现(Headless Service)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=troubleshooting=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. yaml文件的格式问题 &lt;br /&gt;
我初次编写yaml文件可是花了不少时间，就是因为格式的问题，总是创建不了RC或者Servcice。尤其是需要注意，缩进要用空格缩进而不能用TAB键缩进。否则是成功不了的。 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=reference see also=&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/maibm/article/details/87363342 kubernetes 学习笔记--使用Ingress 发布tomcat]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/u010955999/article/details/79448557 k8s部署服务——内部服务关联]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/baa0ab9d9500 6.k8s部署tomcat通过ingress访问]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/weixin_34331102/article/details/87568857 6.k8s部署tomcat通过ingress访问]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:k8s]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>