Kubernetes Service发布

一、定义Service

  1-1、首先创建一个Deployment 类型nginx 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

#定义Deployment类型nginx yaml文件

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: nginx

  name: nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: nginx

    spec:

      containers:

      - image: nginx:1.16.1-alpine

        name: nginx

        ports:

        - containerPort: 80

#创建nginx

kubectl create -f nginx_deploy.yaml 

  1-2、定义Service 的yaml文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#service yaml 文件

apiVersion: v1

kind: Service

metadata:

  name: my-service

spec:

  selector:

    app: nginx       #匹配pod标签

  ports:

   - protocol: TCP

     port: 80        #service端口

     targetPort: 80  #容器端口

#创建service

kubectl create -f service.yaml

  1-3、查看创建Service状态

1

2

3

4

5

6

7

8

9

10

#查看所有service状态

[root@k8s-master1 opt]# kubectl get svc

NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE

kubernetes   ClusterIP   10.0.0.1              443/TCP   20h

my-service   ClusterIP   10.2.99.129           80/TCP    10m

#只查看上面定义的my-service状态

[root@k8s-master1 opt]# kubectl get svc my-service

NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE

my-service   ClusterIP   10.2.99.129           80/TCP    10m

  注:

    该示例为my-server:80即可访问到具有app=myapp标签的Pod的80端口。

    需要注意的是,Service 能够将一个接收端口映射到任意的 targetPort,如果 targetPort 为空,

    targetPort 将被设置为与 Port 字段相同的值。targetPort 可以设置为一个字符串,引用 backend

    Pod 的一个端口的名称,这样的话即使更改了 Pod 的端口,也不会对 Service 的访问造成影响。

               Kubernetes Service 能够支持 TCP、UDP、SCTP 等协议,默认为 TCP 协议。

 二、Service类型

  2-1、Kubernetes Service Type(服务类型)主要包括以下几种:

       ➢ ClusterIP:在集群内部使用,默认值,只能从集群中访问。

    ➢ NodePort:在所有安装了 Kube-Proxy 的节点上打开一个端口,此端口可以代理至后端,Pod,可以通过 NodePort 从集群外部访问集群内的服务,格式为 NodeIP:NodePort。

    ➢ LoadBalancer:使用云提供商的负载均衡器公开服务,成本较高。

    ➢ ExternalName:通过返回定义的 CNAME 别名,没有设置任何类型的代理,需要 1.7 或更高版本 kube-dns 支持。

  2-2、NodePort类型

    说明:

      如果将 Service 的 type 字段设置为 NodePort,则 Kubernetes 将从--service-node-port-range 参数指定的范围(默认为 30000-32767)中自动分配端口,也可以手动指定 NodePort,创建该 Service后,集群每个节点都将暴露一个端口,通过某个宿主机的 IP+端口即可访问到后端的应用。

    1)定义NodePort类型的Service  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#定义Service NodePort类型yaml

apiVersion: v1

kind: Service

metadata:

  name: my-service

spec:

  type: NodePort      #定义NodePort类型

  selector:

    app: nginx        #匹配pod标签

  ports:

   - protocol: TCP

     port: 80         #service端口

     targetPort: 80   #容器端口

     nodePort: 30000  #映射nodePort类型自定义端口。如果该项不设置会自动分配NodePort端口

#新定义的NodePort类型刷新

kubectl replace -f service.yaml

  

    2)可以通过以下命令进行设置NodePort 类型端口映射命令如下

1

kubectl edit svc my-service

    3)查看NodePort端口映射状态

1

2

3

[root@k8s-master1 opt]# kubectl get svc my-service

NAME         TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE

my-service   NodePort   10.2.99.129           80:30000/TCP   36m

    注:

      80:30000/TCP 这里的30000端口是通过上面设置NodePort类型,端口自定义设置的端口。

      外网访问:可以通过宿主机:映射的端口访问。例如:192.168.3.123:30000端口即可访问nginx

    4)如果不自定义设置NodePort port端口会自动分配端口,分配端口范围是30000-32767。端口自动分配范围设置查看

1

2

[root@k8s-master1 opt]# cat /usr/lib/systemd/system/kube-apiserver.service | grep "service-node-port-range"

      --service-node-port-range=30000-32767  \

  2-3、使用Service代理k8s 外部服务

    1)使用场景

      ➢ 希望在生产环境中使用某个固定的名称而非 IP 地址访问外部的中间件服务;

      ➢ 希望 Service 指向另一个 Namespace 中或其他集群中的服务;

      ➢ 正在将工作负载转移到 Kubernetes 集群,但是一部分服务仍运行在 Kubernetes 集群之外的 backend。

     2)编辑Service,Endpoints yaml文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#编辑Endpoints yaml文件

apiVersion: v1

kind: Service

metadata:

  labels:

    app: nginx-svc-external

  name: nginx-svc-external

spec:

  ports:

  - name: http

    port: 80

    protocol: TCP

    targetPort: 80

  sessionAffinity: None

  type: ClusterIP

---

apiVersion: v1

kind: Endpoints

metadata:

  labels:

    app: nginx-svc-external

  name: nginx-svc-external

subsets:

- addresses:

  - ip: 140.205.94.189

  ports:

  - name: http

    port: 80

    protocol: TCP

#创建

kubectl create -f nginx-svc-external.yaml

    注:

      Endpoint IP 地址不能是 loopback(127.0.0.0/8)、link-local(169.254.0.0/16)

      或者 link-local 多播地址(224.0.0.0/24)。

                     Service和Endpoints设置 metadata.name 两者名称要保持一致,如果不一致则不能访问

     3)查询创建的Endpoints service状态

1

2

3

[root@k8s-master1 opt]# kubectl get svc nginx-svc-external

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE

nginx-svc-external   ClusterIP   10.4.96.53           80/TCP    23s

    4)根据上面查看的状态获取的 CLUSTER-IP,测试是否可以通过IP地址访问外网140.205.94.189

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

#通过内部service IP地址访问

[root@k8s-master1 opt]# curl 10.4.96.53

"-//IETF//DTD HTML 2.0//EN">

<head>501 Not Implemented<</code><code>/title</code><code>><</code><code>/head</code><code>></code></p> <p><code><body bgcolor=</code><code>"white"</code><code>></code></p> <p><code><h1>501 Not Implemented<</code><code>/h1</code><code>></code></p> <p><code><p>The requested method to the URL not supported. Sorry </code><code>for</code> <code>the inconvenience.<br/></code></p> <p><code>Please report this message and include the following information to us.<br/></code></p> <p><code>Thank you very much!<</code><code>/p</code><code>></code></p> <p><code><table></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>URL:<</code><code>/td</code><code>></code></p> <p><code><td>http:</code><code>//10</code><code>.4.96.53/<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>Server:<</code><code>/td</code><code>></code></p> <p><code><td>l3src10.eu6<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>Date:<</code><code>/td</code><code>></code></p> <p><code><td>2022</code><code>/09/21</code> <code>20:36:57<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>/table</code><code>></code></p> <p><code><hr/>Powered by Tengine<</code><code>/body</code><code>></code></p> <p><code><</code><code>/html</code><code>></code></p> <p></p> <p><code>#访问代理IP地址</code></p> <p><code>[root@k8s-master1 opt]</code><code># curl 140.205.94.189</code></p> <p><code><!DOCTYPE HTML PUBLIC </code><code>"-//IETF//DTD HTML 2.0//EN"</code><code>></code></p> <p><code><html></code></p> <p><code><</code><code>head</code><code>><title>501 Not Implemented<</code><code>/title</code><code>><</code><code>/head</code><code>></code></p> <p><code><body bgcolor=</code><code>"white"</code><code>></code></p> <p><code><h1>501 Not Implemented<</code><code>/h1</code><code>></code></p> <p><code><p>The requested method to the URL not supported. Sorry </code><code>for</code> <code>the inconvenience.<br/></code></p> <p><code>Please report this message and include the following information to us.<br/></code></p> <p><code>Thank you very much!<</code><code>/p</code><code>></code></p> <p><code><table></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>URL:<</code><code>/td</code><code>></code></p> <p><code><td>http:</code><code>//140</code><code>.205.94.189/<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>Server:<</code><code>/td</code><code>></code></p> <p><code><td>l3src9.eu6<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>tr</code><code>></code></p> <p><code><td>Date:<</code><code>/td</code><code>></code></p> <p><code><td>2022</code><code>/09/21</code> <code>20:37:13<</code><code>/td</code><code>></code></p> <p><code><</code><code>/tr</code><code>></code></p> <p><code><</code><code>/table</code><code>></code></p> <p><code><hr/>Powered by Tengine<</code><code>/body</code><code>></code></p> <p><code><</code><code>/html</code><code>></code></p> </td> </tr> </tbody> </table> <p>    注:</p> <p>      通过测试访问Service Endpoints 代理的外网IP地址和内部service地址访问正常</p> <p>  示例2、访问外部MySQL数据库</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> </td> <td> <p><code>apiVersion: v1</code></p> <p><code>kind: Service</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: endpoints-mysql-jdbc</code></p> <p><code>spec:</code></p> <p><code>  </code><code>type</code><code>: ClusterIP</code></p> <p><code>  </code><code>ports:</code></p> <p><code>  </code><code>- protocol: TCP</code></p> <p><code>    </code><code>port: 3306</code></p> <p><code>    </code><code>name: mysql-endpoints-port</code></p> <p></p> <p><code>---</code></p> <p><code>apiVersion: v1</code></p> <p><code>kind: Endpoints</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: endpoints-mysql-jdbc</code></p> <p></p> <p><code>subsets:</code></p> <p><code>- addresses:</code></p> <p><code>  </code><code>- ip: 192.168.3.10</code></p> <p><code>  </code><code>ports:</code></p> <p><code>  </code><code>- name: mysql-endpoints-port</code></p> <p><code>    </code><code>protocol: TCP</code></p> <p><code>    </code><code>port: 3306</code></p> </td> </tr> </tbody> </table> <p>  注:Service yaml文件里面的medata.name 和 Endpoints yaml metadata.name名称需要保持一致</p> <p>  访问测试:</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> </td> <td> <p><code>[root@k8s-master1 www]</code><code># kubectl get svc endpoints-mysql-jdbc</code></p> <p><code>NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE</code></p> <p><code>endpoints-mysql-jdbc   ClusterIP   10.2.168.42   <none>        3306</code><code>/TCP</code>   <code>7m5s</code></p> <p><code>[root@k8s-master1 www]</code><code># telnet 10.2.168.42 3306</code></p> <p><code>Trying 10.2.168.42...</code></p> <p><code>Connected to 10.2.168.42.</code></p> <p><code>Escape character is </code><code>'^]'</code><code>.</code></p> <p><code>J</code></p> <p><code>5.7.27</code></p> <p><code>      </code><code>j</code><code>#Exl{I!xW,7Vd4vmysql_native_password</code></p> </td> </tr> </tbody> </table> <p>三、Igress Controller安装使用</p> <p>  3-1、官网安装文档:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters</p> <p></p> <p>  <a href="http://img.e-com-net.com/image/info8/11a8e1cadc534de1af914b48616c829c.jpg" target="_blank"><img alt="Kubernetes Service发布_第1张图片" height="223" src="http://img.e-com-net.com/image/info8/11a8e1cadc534de1af914b48616c829c.jpg" width="650" style="border:1px solid black;"></a></p> <p>3-2、可以通过访问把yaml文件创建到本地进行安装,安装的时候上面的yaml文件最好改成国内镜像连接地址</p> <p>    1)镜像连接地址修改如下(注:如果国外的镜像连接地址可以访问下载修改可以忽略):</p> <table border="0"> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>image: registry.cn-beijing.aliyuncs.com</code><code>/dotbalo/controller</code><code>:v1.2.0</code></p> </td> </tr> </tbody> </table> <p>    2)安装创建的ymal文件,创建的yaml文件名称为deploy-ingress.yaml</p> <p>    deploy-ingress.yaml下载地址:</p> <p>链接:https://pan.baidu.com/s/1T0OfB1ERXb_ZZmU3ISiH2A <br> 提取码:1234</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> </td> <td> <p><code>[root@k8s-master1 opt]</code><code># kubectl create -f deploy-ingress.yaml</code></p> <p><code>namespace</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>serviceaccount</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>serviceaccount</code><code>/ingress-nginx-admission</code> <code>created</code></p> <p><code>role.rbac.authorization.k8s.io</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>role.rbac.authorization.k8s.io</code><code>/ingress-nginx-admission</code> <code>created</code></p> <p><code>clusterrole.rbac.authorization.k8s.io</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>clusterrole.rbac.authorization.k8s.io</code><code>/ingress-nginx-admission</code> <code>created</code></p> <p><code>rolebinding.rbac.authorization.k8s.io</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>rolebinding.rbac.authorization.k8s.io</code><code>/ingress-nginx-admission</code> <code>created</code></p> <p><code>clusterrolebinding.rbac.authorization.k8s.io</code><code>/ingress-nginx</code> <code>created</code></p> <p><code>clusterrolebinding.rbac.authorization.k8s.io</code><code>/ingress-nginx-admission</code> <code>created</code></p> <p><code>configmap</code><code>/ingress-nginx-controller</code> <code>created</code></p> <p><code>service</code><code>/ingress-nginx-controller</code> <code>created</code></p> <p><code>service</code><code>/ingress-nginx-controller-admission</code> <code>created</code></p> <p><code>deployment.apps</code><code>/ingress-nginx-controller</code> <code>created</code></p> <p><code>job.batch</code><code>/ingress-nginx-admission-create</code> <code>created</code></p> <p><code>job.batch</code><code>/ingress-nginx-admission-patch</code> <code>created</code></p> <p><code>ingressclass.networking.k8s.io</code><code>/nginx</code> <code>created</code></p> <p><code>validatingwebhookconfiguration.admissionregistration.k8s.io</code><code>/ingress-nginx-admission</code> <code>created</code></p> </td> </tr> </tbody> </table> <p>  3-3、使用域名发布服务</p> <p>    1)创建一个web服务</p> <table border="0"> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>kubectl create deploy nginx --image=registry.cn-beijing.aliyuncs.com</code><code>/dotbalo/nginx</code><code>:1.15.12</code></p> </td> </tr> </tbody> </table> <p>    2)暴露服务</p> <table border="0"> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>kubectl expose deploy nginx --port 80</code></p> </td> </tr> </tbody> </table> <p>    注: 如果根据开始(一)的示例进行安装可以忽略创建一个web服和暴露服的操作</p> <p>     3)创建Ingress</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> <p>25</p> </td> <td> <p><code>#编辑ingress yaml文件</code></p> <p><code>[root@k8s-master1 opt]</code><code># vim web-ingress.yaml</code></p> <p></p> <p><code>apiVersion: networking.k8s.io</code><code>/v1</code> <code># k8s >= 1.22 必须 v1</code></p> <p><code>kind: Ingress</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: nginx-ingress</code></p> <p></p> <p><code>spec:</code></p> <p><code>  </code><code>ingressClassName: nginx</code></p> <p><code>  </code><code>rules:</code></p> <p><code>  </code><code>- host: nginx.</code><code>test</code><code>.com</code></p> <p><code>    </code><code>http:</code></p> <p><code>      </code><code>paths:</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: /</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> <p></p> <p><code>#创建</code></p> <p><code>[root@k8s-master1 opt]</code><code># kubectl create -f web-ingress.yaml</code></p> <p><code>ingress.networking.k8s.io</code><code>/nginx-ingress</code> <code>created</code></p> </td> </tr> </tbody> </table> <p>    4)检查创建的Ingress状态</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>[root@k8s-master1 opt]</code><code># kubectl get ingress</code></p> <p><code>NAME            CLASS   HOSTS            ADDRESS   PORTS   AGE</code></p> <p><code>nginx-ingress   nginx   nginx.</code><code>test</code><code>.com             80      10s</code></p> </td> </tr> </tbody> </table> <p>  注:在设置Ingress 名称(name)的时候最好是简单明了。例如设置的上面的nginx-ingress名称根据自己业务进行设置</p> <p>    5)pathType:路径的匹配方式,目前有 ImplementationSpecific、Exact 和 Prefix 方式</p> <p>      ◆ Exact:精确匹配,比如配置的 path 为/bar,那么/bar/将不能被路由;</p> <p>      ◆ Prefix:前缀匹配,基于以 / 分隔的 URL 路径。比如 path 为/abc,可以匹配到/abc/bbb 等,比较常用的配置;</p> <p>      ◆ ImplementationSpecific:这种类型的路由匹配根据 Ingress Controller 来实现,可以当做一个单独的类型,也可以当做 Prefix 和 Exact。ImplementationSpecific是 1.18 版本引入 Prefix 和 Exact 的默认配置;</p> <p>    6)测试创建的Ingress</p> <p>      1、本地机器解析域名。windows 系统需要找到C:\Windows\System32\drivers\etc下面的hosts文件,进行对 nginx.test.com 解析,k8s集群宿主机IP地址    nginx.test.com(这里域名访问是根据Ingress -host设置的)。</p> <p>        例如宿主机IP地址是192.168.3.123解析示例:</p> <p>        192.168.3.123  nginx.test.com</p> <p>        注:如果提供的域名是正式的域名可以不操作本地机器解析域名</p> <p>      2、在游览器直接访问nginx.test.com:service端口,例如上面定义的service 端口是30000直接访问</p> <p>      nginx.test.com:30000即可</p> <p>    7)创建多域名Ingress 访问示例:</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> <p>25</p> <p>26</p> <p>27</p> <p>28</p> </td> <td> <p><code>apiVersion: networking.k8s.io</code><code>/v1</code> <code># k8s >= 1.22 必须 v1</code></p> <p><code>kind: Ingress</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: nginx-ingress</code></p> <p></p> <p><code>spec:</code></p> <p><code>  </code><code>ingressClassName: nginx</code></p> <p><code>  </code><code>rules:</code></p> <p><code>  </code><code>- host: nginx.</code><code>test</code><code>.com</code></p> <p><code>    </code><code>http:</code></p> <p><code>      </code><code>paths:</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: /</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> <p><code>  </code><code>- host: web.</code><code>test</code><code>.com</code></p> <p><code>    </code><code>http:</code></p> <p><code>      </code><code>paths:</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: /</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> </td> </tr> </tbody> </table> <p>    注:创建多域名访问的时候域名不要重复,创建多域名直接把 - host 行到pathType 行进行复制拷贝重新定义新的域名</p> <p>     8)创建单个域名多路径</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <p>21</p> <p>22</p> <p>23</p> <p>24</p> </td> <td> <p><code>kind: Ingress</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: nginx-ingress</code></p> <p></p> <p><code>spec:</code></p> <p><code>  </code><code>ingressClassName: nginx</code></p> <p><code>  </code><code>rules:</code></p> <p><code>  </code><code>- host: nginx.</code><code>test</code><code>.com</code></p> <p><code>    </code><code>http:</code></p> <p><code>      </code><code>paths:</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: /</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: </code><code>/data</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> </td> </tr> </tbody> </table> <p>    注:创建单域名多路径的时候可以直接从- backend 行到pathType行进行复制拷贝,修改路径即可</p> <p>    9)创建多域名和多路径可以直接通过命令编辑</p> <table border="0"> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>kubectl edit ingress</code></p> </td> </tr> </tbody> </table> <p>     注:打开后根据自己的需求编辑即可</p> <p>    10)Ingress不添加域名进行访问</p> <table border="0"> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <p>16</p> <p>17</p> </td> <td> <p><code>apiVersion: networking.k8s.io</code><code>/v1</code> <code># k8s >= 1.22 必须 v1</code></p> <p><code>kind: Ingress</code></p> <p><code>metadata:</code></p> <p><code>  </code><code>name: nginx-ingress-IP</code></p> <p></p> <p><code>spec:</code></p> <p><code>  </code><code>ingressClassName: nginx</code></p> <p><code>  </code><code>rules:</code></p> <p><code>  </code><code>- http:</code></p> <p><code>      </code><code>paths:</code></p> <p><code>      </code><code>- backend:</code></p> <p><code>          </code><code>service:</code></p> <p><code>            </code><code>name: my-service   </code><code>#指的是service名称</code></p> <p><code>            </code><code>port:</code></p> <p><code>              </code><code>number: 80</code></p> <p><code>        </code><code>path: /</code></p> <p><code>        </code><code>pathType: ImplementationSpecific</code></p> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1725354728763764736"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(kubernetes,容器,云原生)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835505228137459712.htm" title="腾讯云技术深度探索:构建高效云原生微服务架构" target="_blank">腾讯云技术深度探索:构建高效云原生微服务架构</a> <span class="text-muted">我的运维人生</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E8%85%BE%E8%AE%AF%E4%BA%91/1.htm">腾讯云</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%BC%80%E5%8F%91/1.htm">运维开发</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%85%B1%E4%BA%AB/1.htm">技术共享</a> <div>腾讯云技术深度探索:构建高效云原生微服务架构在当今快速发展的技术环境中,云原生技术已成为企业数字化转型的关键驱动力。腾讯云作为行业领先的云服务提供商,不断推出创新的产品和技术,助力企业构建高效、可扩展的云原生微服务架构。本文将深入探讨腾讯云在微服务领域的最新进展,并通过一个实际案例展示如何在腾讯云平台上构建云原生应用。腾讯云微服务架构概览腾讯云微服务架构基于云原生理念,旨在帮助企业快速实现应用的容</div> </li> <li><a href="/article/1835495770502033408.htm" title="Day17笔记-高阶函数" target="_blank">Day17笔记-高阶函数</a> <span class="text-muted">~在杰难逃~</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>高阶函数【重点掌握】函数的本质:函数是一个变量,函数名是一个变量名,一个函数可以作为另一个函数的参数或返回值使用如果A函数作为B函数的参数,B函数调用完成之后,会得到一个结果,则B函数被称为高阶函数常用的高阶函数:map(),reduce(),filter(),sorted()1.map()map(func,iterable),返回值是一个iterator【容器,迭代器】func:函数iterab</div> </li> <li><a href="/article/1835485429059645440.htm" title="docker" target="_blank">docker</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>Docker容器的文件系统是隔离的,但是可以通过挂载卷(Volumes)或绑定挂载(BindMounts)将宿主机的文件系统目录映射到容器内部。要查看Docker容器的映射路径,可以使用以下方法:查看容器配置:使用dockerinspect命令可以查看容器的详细配置信息,包括挂载的卷。例如:bashdockerinspect在输出的JSON格式中,查找"Mounts"部分,这里会列出所有的挂载信息</div> </li> <li><a href="/article/1835457442260021248.htm" title="ArrayList 源码解析" target="_blank">ArrayList 源码解析</a> <span class="text-muted">程序猿进阶</span> <a class="tag" taget="_blank" href="/search/Java%E5%9F%BA%E7%A1%80/1.htm">Java基础</a><a class="tag" taget="_blank" href="/search/ArrayList/1.htm">ArrayList</a><a class="tag" taget="_blank" href="/search/List/1.htm">List</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/idea/1.htm">idea</a> <div>ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capacity,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添</div> </li> <li><a href="/article/1835448111909138432.htm" title="react-intl——react国际化使用方案" target="_blank">react-intl——react国际化使用方案</a> <span class="text-muted">苹果酱0567</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>国际化介绍i18n:internationalization国家化简称,首字母+首尾字母间隔的字母个数+尾字母,类似的还有k8s(Kubernetes)React-intl是React中最受欢迎的库。使用步骤安装#usenpmnpminstallreact-intl-D#useyarn项目入口文件配置//index.tsximportReactfrom"react";importReactDOMf</div> </li> <li><a href="/article/1835422770016645120.htm" title="《 C++ 修炼全景指南:四 》揭秘 C++ List 容器背后的实现原理,带你构建自己的双向链表" target="_blank">《 C++ 修炼全景指南:四 》揭秘 C++ List 容器背后的实现原理,带你构建自己的双向链表</a> <span class="text-muted">Lenyiin</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%8C%87%E5%8D%97/1.htm">技术指南</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E7%82%BC%E5%85%A8%E6%99%AF%E6%8C%87%E5%8D%97/1.htm">修炼全景指南</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/stl/1.htm">stl</a> <div>本篇博客,我们将详细讲解如何从头实现一个功能齐全且强大的C++List容器,并深入到各个细节。这篇博客将包括每一步的代码实现、解释以及扩展功能的探讨,目标是让初学者也能轻松理解。一、简介1.1、背景介绍在C++中,std::list是一个基于双向链表的容器,允许高效的插入和删除操作,适用于频繁插入和删除操作的场景。与动态数组不同,list允许常数时间内的插入和删除操作,支持双向遍历。这篇文章将详细</div> </li> <li><a href="/article/1835399957885054976.htm" title="docker from指令的含义_多个FROM-含义" target="_blank">docker from指令的含义_多个FROM-含义</a> <span class="text-muted">weixin_39722188</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/from%E6%8C%87%E4%BB%A4%E7%9A%84%E5%90%AB%E4%B9%89/1.htm">from指令的含义</a> <div>小编典典什么是基本图片?一组文件,加上EXPOSE端口ENTRYPOINT和CMD。您可以添加文件并基于该基础图像构建新图像,Dockerfile并以FROM指令开头:后面提到的图像FROM是新图像的“基础图像”。这是否意味着如果我neo4j/neo4j在FROM指令中声明,则在运行映像时,neo数据库将自动运行并且可在端口7474的容器中使用?仅当您不覆盖CMD和时ENTRYPOINT。但是图像</div> </li> <li><a href="/article/1835399831116410880.htm" title="Dockerfile FROM 两个" target="_blank">Dockerfile FROM 两个</a> <span class="text-muted">redDelta</span> <div>Docker相关视频讲解:什么是容器Docker介绍实现"DockerfileFROM两个"的步骤步骤表格步骤操作1创建一个Dockerfile文件2写入FROM指令3构建第一个镜像4创建第二个Dockerfile文件5写入FROM指令6构建第二个镜像7合并两个镜像操作步骤说明步骤1:创建一个Dockerfile文件使用任意文本编辑器创建一个名为Dockerfile的文件。登录后复制#Docker</div> </li> <li><a href="/article/1835395039572881408.htm" title="Dockerfile命令详解之 FROM" target="_blank">Dockerfile命令详解之 FROM</a> <span class="text-muted">清风怎不知意</span> <a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8%E5%8C%96/1.htm">容器化</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用</div> </li> <li><a href="/article/1835379083945537536.htm" title="leetcode 11. 盛最多水的容器" target="_blank">leetcode 11. 盛最多水的容器</a> <span class="text-muted">Source_Chang</span> <div>leetcode核心思想:双指针,数字小的那个指针移动classSolution{public:intmaxArea(vector&height){intleft=0;intright=height.size()-1;intmaxArea=0;while(left<right){maxArea=max(min(height[left],height[right])*(right-left),max</div> </li> <li><a href="/article/1835375621996376064.htm" title="Kubernetes数据持久化" target="_blank">Kubernetes数据持久化</a> <span class="text-muted">看清所苡看轻</span> <a class="tag" taget="_blank" href="/search/kubernetes%28k8s%29/1.htm">kubernetes(k8s)</a><a class="tag" taget="_blank" href="/search/emptyDir/1.htm">emptyDir</a><a class="tag" taget="_blank" href="/search/HostPath/1.htm">HostPath</a><a class="tag" taget="_blank" href="/search/pv/1.htm">pv</a><a class="tag" taget="_blank" href="/search/pvc/1.htm">pvc</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a> <div>在k8s中,Volume(数据卷)存在明确的生命周期(与包含该数据卷的容器组(pod)相同)。因此Volume的生命周期比同一容器组(pod)中任意容器的生命周期要更长,不管容器重启了多少次,数据都被保留下来。当然,如果pod不存在了,数据卷自然退出了。此时,根据pod所使用的数据卷类型不同,数据可能随着数据卷的退出而删除,也可能被真正持久化,并在下次容器组重启时仍然可以使用。从根本上来说,一个数</div> </li> <li><a href="/article/1835364027488890880.htm" title="leetcode刷题day13|二叉树Part01(递归遍历、迭代遍历、统一迭代、层序遍历)" target="_blank">leetcode刷题day13|二叉树Part01(递归遍历、迭代遍历、统一迭代、层序遍历)</a> <span class="text-muted">小冉在学习</span> <a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>递归遍历思路:使用递归的方式比较简单。1、递归函数的传参:因为最后输出一个数组,所以需要传入根节点和一个容器,本来想写数组,但发现长度不能确定,所以选择list。2、终止条件:当访问的节点为空时,return3、递归函数的逻辑:先访问一个节点,递归访问其他节点144.二叉树的前序遍历代码如下:classSolution{publicListpreorderTraversal(TreeNoderoo</div> </li> <li><a href="/article/1835361001260806144.htm" title="Kubernetes部署MySQL数据持久化" target="_blank">Kubernetes部署MySQL数据持久化</a> <span class="text-muted">沫殇-MS</span> <a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">MySQL数据库</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>一、安装配置NFS服务端1、安装nfs-kernel-server:sudoapt-yinstallnfs-kernel-server2、服务端创建共享目录#列出所有可用块设备的信息lsblk#格式化磁盘sudomkfs-text4/dev/sdb#创建一个目录:sudomkdir-p/data/nfs/mysql#更改目录权限:sudochown-Rnobody:nogroup/data/nfs</div> </li> <li><a href="/article/1835354574077128704.htm" title="Kubernetes的3种数据持久化方式" target="_blank">Kubernetes的3种数据持久化方式</a> <span class="text-muted">Seal^_^</span> <a class="tag" taget="_blank" href="/search/%E3%80%90%E4%BA%91%E5%8E%9F%E7%94%9F%E3%80%91%E5%AE%B9%E5%99%A8%E5%8C%96%E4%B8%8E%E7%BC%96%E6%8E%92%E6%8A%80%E6%9C%AF/1.htm">【云原生】容器化与编排技术</a><a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/EmptyDir/1.htm">EmptyDir</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/HostPath/1.htm">HostPath</a> <div>Kubernetes的3种数据持久化方式1.EmptyDir2.HostPath3.PersistentVolume(PV)TheBegin点点关注,收藏不迷路Kubernetes提供了几种数据持久化方式,以满足不同场景的需求:1.EmptyDir用途:临时数据存储,Pod内容器间共享。特点:生命周期与Pod相同,Pod删除时数据也删除。2.HostPath用途:访问宿主机特定文件或目录。特点:增</div> </li> <li><a href="/article/1835353689854930944.htm" title="【Kubernetes】常见面试题汇总(十一)" target="_blank">【Kubernetes】常见面试题汇总(十一)</a> <span class="text-muted">summer.335</span> <a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>目录33.简述Kubernetes外部如何访问集群内的服务?34.简述Kubernetesingress?35.简述Kubernetes镜像的下载策略?33.简述Kubernetes外部如何访问集群内的服务?(1)对于Kubernetes,集群外的客户端默认情况,无法通过Pod的IP地址或者Service的虚拟IP地址:虚拟端口号进行访问。(2)通常可以通过以下方式进行访问Kubernetes集群</div> </li> <li><a href="/article/1835351925957160960.htm" title="k8s中Service暴露的种类以及用法" target="_blank">k8s中Service暴露的种类以及用法</a> <span class="text-muted">听说唐僧不吃肉</span> <a class="tag" taget="_blank" href="/search/K8S/1.htm">K8S</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>一、说明在Kubernetes中,有几种不同的方式可以将服务(Service)暴露给外部流量。这些方式通过定义服务的spec.type字段来确定。二、详解1.ClusterIP定义:默认类型,服务只能在集群内部访问。作用:通过集群内部IP地址暴露服务。示例:spec:type:ClusterIPports:-port:80targetPo</div> </li> <li><a href="/article/1835347257772306432.htm" title="Kubernetes 自定义控制器开发" target="_blank">Kubernetes 自定义控制器开发</a> <span class="text-muted">IT回忆录</span> <a class="tag" taget="_blank" href="/search/Kubenetes/1.htm">Kubenetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a> <div>目录前言一、CRD二、创建数据库表(Mysql)二、控制器开发1.使用kubernetes的examplecontroller模板2.在controller.go中新增数据表监听方法3.修改tools工具生成资源对象结构体定义这里记录开发k8s控制器的一般方式,controller开发主要使用k8s提供的client-go库进行。前言Controller监听集群内部资源对象的变化,编辑资源对象(增</div> </li> <li><a href="/article/1835344356878413824.htm" title="用kubedam搭建的k8s证书过期处理方法" target="_blank">用kubedam搭建的k8s证书过期处理方法</a> <span class="text-muted">我滴鬼鬼呀wks</span> <a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a> <div>kubeadm部署的k8s证书过期1、查看证书过期时间kubeadmalphacertscheck-expiration若证书已经过期无法试用kubectl命令建议修改服务器时间到未过期的时间段2、配置kube-controller-manager.yaml文件cat/etc/kubernetes/manifests/kube-controller-manager.yamlapiVersion:v</div> </li> <li><a href="/article/1835340955637608448.htm" title="k8s证书过期问题处理" target="_blank">k8s证书过期问题处理</a> <span class="text-muted">olina_qin</span> <a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>k8s证书过期问题处理opensslx509-in/etc/kubernetes/pki/apiserver.crt-noout-dateskubeadmcertsrenewallsystemctlrestartkubeleopensslx509-in/etc/kubernetes/pki/apiserver.crt-noout-text|grep"NotAfter"cp/etc/kubernet</div> </li> <li><a href="/article/1835337301350248448.htm" title="Kubernetes Ingress 控制器(Nginx)安装与使用教程" target="_blank">Kubernetes Ingress 控制器(Nginx)安装与使用教程</a> <span class="text-muted">农优影</span> <div>KubernetesIngress控制器(Nginx)安装与使用教程kubernetes-ingressNGINXandNGINXPlusIngressControllersforKubernetes项目地址:https://gitcode.com/gh_mirrors/ku/kubernetes-ingress1.项目目录结构及介绍在nginxinc/kubernetes-ingress仓库中,</div> </li> <li><a href="/article/1835331377520799744.htm" title="【K8s】专题十一:Kubernetes 集群证书过期处理方法" target="_blank">【K8s】专题十一:Kubernetes 集群证书过期处理方法</a> <span class="text-muted">行者Sun1989</span> <a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口Linux专栏|Docker专栏|Kubernetes专栏往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法(续)【Docker】MySQL源码构建Docker镜</div> </li> <li><a href="/article/1835310380474265600.htm" title="Java面试笔记记录6" target="_blank">Java面试笔记记录6</a> <span class="text-muted">今天背八股了吗</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>1.Spring是什么?特性?有哪些模块?Spring是一个轻量级、非入侵式的控制反转Ioc和面向切面AOP的框架。特性:1.Ioc和DISpring的核心就是一个大的工厂容器,可以维护所有对象的创建和依赖关系,Spring工厂用于生成Bean,并且管理Bean的生命周期,实现高内聚低耦合的设计理念。2.AOP编程Spring提供面向切面编程,可以方便实现对程序进行权限拦截、运行监控等切面功能。3</div> </li> <li><a href="/article/1835269935358636032.htm" title="Docker学习十一:Kubernetes概述" target="_blank">Docker学习十一:Kubernetes概述</a> <span class="text-muted">爱打羽球的程序猿</span> <a class="tag" taget="_blank" href="/search/Docker%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97/1.htm">Docker学习系列</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>一、Kubernetes简介2006年,Google提出了云计算的概念,当时的云计算领域还是以虚拟机为代表的云平台。2013年,Docker横空出世,Docker提出了镜像、仓库等核心概念,规范了服务的交付标准,使得复杂服务的落地变得更加简单,之后Docker又定义了OCI标准,Docker在容器领域称为事实的标准。但是,Docker诞生只是帮助定义了开发和交付标准,如果想要在生产环境中大批量的使</div> </li> <li><a href="/article/1835269304761806848.htm" title="Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商" target="_blank">Cloud Native Weekly | 华为云抢先发布Redis5.0,红帽宣布收购混合云提供商</a> <span class="text-muted">weixin_34302561</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/devops/1.htm">devops</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>1——华为云抢先发布Redis5.02——DigitalOceanK8s服务正式上线3——红帽宣布收购混合云提供商NooBaa4——微软发布多项AzureKubernetes服务更新1华为云抢先发布Redis5.012月17日,华为云在DCS2.0的基础上,快人一步,抢先推出了新的Redis5.0产品,这是一个崭新的突破。目前国内在缓存领域的发展普遍停留在Redis4.0阶段,华为云率先发布了Re</div> </li> <li><a href="/article/1835267665455837184.htm" title="Halo 开发者指南——容器私有化部署" target="_blank">Halo 开发者指南——容器私有化部署</a> <span class="text-muted">SHENHUANJIE</span> <a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/Halo/1.htm">Halo</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E4%BA%91/1.htm">华为云</a><a class="tag" taget="_blank" href="/search/SWR/1.htm">SWR</a><a class="tag" taget="_blank" href="/search/Registry/1.htm">Registry</a> <div>华为云SWR私有化部署镜像构建dockerbuild-thalo-dev/halo:2.20.0.上传镜像镜像标签sudodockertag{镜像名称}:{版本名称}swr.cn-south-1.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}sudodockertaghalo-dev/halo:2.20.0swr.cn-south-1.myhuaweicloud.co</div> </li> <li><a href="/article/1835262244313722880.htm" title="SpringBoot整合ES搜索引擎 实现网站热搜词及热度计算" target="_blank">SpringBoot整合ES搜索引擎 实现网站热搜词及热度计算</a> <span class="text-muted">码踏云端</span> <a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/Elasticsearch/1.htm">Elasticsearch</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E6%90%9C%E8%AF%8D/1.htm">热搜词</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E5%BA%A6%E8%AE%A1%E7%AE%97/1.htm">热度计算</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于</div> </li> <li><a href="/article/1835259716809355264.htm" title="小白 | 华为云docker设置镜像加速器" target="_blank">小白 | 华为云docker设置镜像加速器</a> <span class="text-muted">伏一</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E5%AE%89%E8%A3%85/1.htm">工具安装</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E4%BA%91/1.htm">华为云</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>一、操作场景通过dockerpull命令下载镜像中心的公有镜像时,往往会因为网络原因而需要很长时间,甚至可能因超时而下载失败。为此,容器镜像服务提供了镜像下载加速功能,帮助您获得更快的下载体验。二、约束与限制构建镜像的客户端所安装的容器引擎(Docker)版本必须为1.11.2及以上。“华北-乌兰察布一”、“亚太-雅加达”、“拉美-墨西哥城一”、“拉美-墨西哥城二”和“拉美-圣保罗一”区域不支持该</div> </li> <li><a href="/article/1835245099416645632.htm" title="docker改容器IP的两种方法" target="_blank">docker改容器IP的两种方法</a> <span class="text-muted">redmond88</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>最简单实用的方法:docker默认的内网网段为172.17.0.0/16,如果公司内网网段也是172.17.x.x的话,就会发生路由冲突。解决办法改路由比较办法,可以一开始就将docker配置的bip改成169.254.0.1/24,可以避免冲突。在daemon配置文件里加个"bip":“169.254.0.1/24”,重启docker就可以了1234[root@st-dev6~]#vim/etc</div> </li> <li><a href="/article/1835225687028494336.htm" title="java获取applicationcontext,SpringBoot获取ApplicationContext的3种方式" target="_blank">java获取applicationcontext,SpringBoot获取ApplicationContext的3种方式</a> <span class="text-muted">花儿街参考</span> <div>ApplicationContext是什么?简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能。ApplicationContext获取的几种方式1直接使用Autowired注入@ComponentpublicclassBook1{@AutowiredprivateApplicationContextapplicationContext;pub</div> </li> <li><a href="/article/1835209173944594432.htm" title="(k8s)Kubernetes 从0到1容器编排之旅" target="_blank">(k8s)Kubernetes 从0到1容器编排之旅</a> <span class="text-muted">道不贱卖,法不轻传</span> <a class="tag" taget="_blank" href="/search/kubernets/1.htm">kubernets</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>一、引言在当今数字化的浪潮中,Kubernetes如同一艘强大的航船,引领着容器化应用的部署与管理。它以其卓越的灵活性、可扩展性和可靠性,成为众多企业和开发者的首选。然而,要真正发挥Kubernetes的强大威力,仅仅掌握基本操作是远远不够的。本文将带你深入探索Kubernetes使用过程中的奇技妙法,为你开启一段优雅的容器编排之旅。二、高级资源管理之精妙艺术1.资源配额与限制:雕琢资源之美•Ku</div> </li> <li><a href="/article/125.htm" title="apache 安装linux windows" target="_blank">apache 安装linux windows</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/inux/1.htm">inux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>linux安装Apache 有两种方式一种是手动安装通过二进制的文件进行安装,另外一种就是通过yum 安装,此中安装方式,需要物理机联网。以下分别介绍两种的安装方式     通过二进制文件安装Apache需要的软件有apr,apr-util,pcre  1,安装 apr        下载地址:htt</div> </li> <li><a href="/article/252.htm" title="fill_parent、wrap_content和match_parent的区别" target="_blank">fill_parent、wrap_content和match_parent的区别</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/match_parent/1.htm">match_parent</a><a class="tag" taget="_blank" href="/search/fill_parent/1.htm">fill_parent</a> <div>fill_parent、wrap_content和match_parent的区别:   1)fill_parent   设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。 2) wrap_conte</div> </li> <li><a href="/article/379.htm" title="网页自适应设计" target="_blank">网页自适应设计</a> <span class="text-muted">天子之骄</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%93%8D%E5%BA%94%E5%BC%8F%E8%AE%BE%E8%AE%A1/1.htm">响应式设计</a><a class="tag" taget="_blank" href="/search/%E9%A1%B5%E9%9D%A2%E8%87%AA%E9%80%82%E5%BA%94/1.htm">页面自适应</a> <div>网页自适应设计        网页对浏览器窗口的自适应支持变得越来越重要了。自适应响应设计更是异常火爆。再加上移动端的崛起,更是如日中天。以前为了适应不同屏幕分布率和浏览器窗口的扩大和缩小,需要设计几套css样式,用js脚本判断窗口大小,选择加载。结构臃肿,加载负担较大。现笔者经过一定时间的学习,有所心得,故分享于此,加强交流,共同进步。同时希望对大家有所</div> </li> <li><a href="/article/506.htm" title="[sql server] 分组取最大最小常用sql" target="_blank">[sql server] 分组取最大最小常用sql</a> <span class="text-muted">一炮送你回车库</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>--分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb( col1 int, col2 int, Fcount int)insert into tbselect 11,20,1 union allselect 11,22,1 union allselect 1</div> </li> <li><a href="/article/633.htm" title="ImageIO写图片输出到硬盘" target="_blank">ImageIO写图片输出到硬盘</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/image/1.htm">image</a> <div>package awt; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imagei</div> </li> <li><a href="/article/760.htm" title="自己的String动态数组" target="_blank">自己的String动态数组</a> <span class="text-muted">宝剑锋梅花香</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E6%95%B0%E7%BB%84/1.htm">动态数组</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a> <div>数组还是好说,学过一两门编程语言的就知道,需要注意的是数组声明时需要把大小给它定下来,比如声明一个字符串类型的数组:String str[]=new String[10];    但是问题就来了,每次都是大小确定的数组,我需要数组大小不固定随时变化怎么办呢?  动态数组就这样应运而生,龙哥给我们讲的是自己用代码写动态数组,并非用的ArrayList 看看字符</div> </li> <li><a href="/article/887.htm" title="pinyin4j工具类" target="_blank">pinyin4j工具类</a> <span class="text-muted">darkranger</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>pinyin4j工具类Java工具类 2010-04-24 00:47:00 阅读69 评论0 字号:大中小 引入pinyin4j-2.5.0.jar包: pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j。 本人以前用AscII编码提取工具,效果不理想,现在用pinyin4j简单实现了一个。功能还不是很完美,</div> </li> <li><a href="/article/1014.htm" title="StarUML学习笔记----基本概念" target="_blank">StarUML学习笔记----基本概念</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/UML%E5%BB%BA%E6%A8%A1/1.htm">UML建模</a> <div>介绍StarUML的基本概念,这些都是有效运用StarUML?所需要的。包括对模型、视图、图、项目、单元、方法、框架、模型块及其差异以及UML轮廓。         模型、视与图(Model, View and Diagram)        &</div> </li> <li><a href="/article/1141.htm" title="Activiti最终总结" target="_blank">Activiti最终总结</a> <span class="text-muted">avords</span> <a class="tag" taget="_blank" href="/search/Activiti+id+%E5%B7%A5%E4%BD%9C%E6%B5%81/1.htm">Activiti id 工作流</a> <div>1、流程定义ID:ProcessDefinitionId,当定义一个流程就会产生。 2、流程实例ID:ProcessInstanceId,当开始一个具体的流程时就会产生,也就是不同的流程实例ID可能有相同的流程定义ID。 3、TaskId,每一个userTask都会有一个Id这个是存在于流程实例上的。 4、TaskDefinitionKey和(ActivityImpl activityId </div> </li> <li><a href="/article/1268.htm" title="从省市区多重级联想到的,react和jquery的差别" target="_blank">从省市区多重级联想到的,react和jquery的差别</a> <span class="text-muted">bee1314</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a> <div>在我们的前端项目里经常会用到级联的select,比如省市区这样。通常这种级联大多是动态的。比如先加载了省,点击省加载市,点击市加载区。然后数据通常ajax返回。如果没有数据则说明到了叶子节点。   针对这种场景,如果我们使用jquery来实现,要考虑很多的问题,数据部分,以及大量的dom操作。比如这个页面上显示了某个区,这时候我切换省,要把市重新初始化数据,然后区域的部分要从页面</div> </li> <li><a href="/article/1395.htm" title="Eclipse快捷键大全" target="_blank">Eclipse快捷键大全</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/%E5%BF%AB%E6%8D%B7%E9%94%AE/1.htm">快捷键</a> <div>Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+En</div> </li> <li><a href="/article/1522.htm" title="js 笔记 函数" target="_blank">js 笔记 函数</a> <span class="text-muted">征客丶</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>一、函数的使用 1.1、定义函数变量 var vName = funcation(params){ } 1.2、函数的调用 函数变量的调用:      vName(params); 函数定义时自发调用:(function(params){})(params); 1.3、函数中变量赋值 var a = 'a'; var ff</div> </li> <li><a href="/article/1649.htm" title="【Scala四】分析Spark源代码总结的Scala语法二" target="_blank">【Scala四】分析Spark源代码总结的Scala语法二</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>1. Some操作   在下面的代码中,使用了Some操作:if (self.partitioner == Some(partitioner)),那么Some(partitioner)表示什么含义?首先partitioner是方法combineByKey传入的变量, Some的文档说明:   /** Class `Some[A]` represents existin</div> </li> <li><a href="/article/1776.htm" title="java 匿名内部类" target="_blank">java 匿名内部类</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/java%E5%8C%BF%E5%90%8D%E5%86%85%E9%83%A8%E7%B1%BB/1.htm">java匿名内部类</a> <div>组合优先于继承 Java的匿名类,就是提供了一个快捷方便的手段,令继承关系可以方便地变成组合关系 继承只有一个时候才能用,当你要求子类的实例可以替代父类实例的位置时才可以用继承。   在Java中内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类。 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相</div> </li> <li><a href="/article/1903.htm" title="盗版win装在MAC有害发热,苹果的东西不值得买,win应该不用" target="_blank">盗版win装在MAC有害发热,苹果的东西不值得买,win应该不用</a> <span class="text-muted">ljy325</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/apple/1.htm">apple</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/XP/1.htm">XP</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a> <div>Mac mini 型号: MC270CH-A RMB:5,688   Apple 对windows的产品支持不好,有以下问题:   1.装完了xp,发现机身很热虽然没有运行任何程序!貌似显卡跑游戏发热一样,按照那样的发热量,那部机子损耗很大,使用寿命受到严重的影响!   2.反观安装了Mac os的展示机,发热量很小,运行了1天温度也没有那么高 &nbs</div> </li> <li><a href="/article/2030.htm" title="读《研磨设计模式》-代码笔记-生成器模式-Builder" target="_blank">读《研磨设计模式》-代码笔记-生成器模式-Builder</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /** * 生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF) * 个人理解: * 构建一个复杂的对象,对于创建者(Builder)来说,一是要有数据来源(rawData),二是要返回构</div> </li> <li><a href="/article/2157.htm" title="JIRA与SVN插件安装" target="_blank">JIRA与SVN插件安装</a> <span class="text-muted">chenyu19891124</span> <a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a><a class="tag" taget="_blank" href="/search/jira/1.htm">jira</a> <div>JIRA安装好后提交代码并要显示在JIRA上,这得需要用SVN的插件才能看见开发人员提交的代码。 1.下载svn与jira插件安装包,解压后在安装包(atlassian-jira-subversion-plugin-0.10.1) 2.解压出来的包里下的lib文件夹下的jar拷贝到(C:\Program Files\Atlassian\JIRA 4.3.4\atlassian-jira\WEB</div> </li> <li><a href="/article/2284.htm" title="常用数学思想方法" target="_blank">常用数学思想方法</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>  对于搞工程和技术的朋友来讲,在工作中常常遇到一些实际问题,而采用常规的思维方式无法很好的解决这些问题,那么这个时候我们就需要用数学语言和数学工具,而使用数学工具的前提却是用数学思想的方法来描述问题。。下面转帖几种常用的数学思想方法,仅供学习和参考   函数思想   把某一数学问题用函数表示出来,并且利用函数探究这个问题的一般规律。这是最基本、最常用的数学方法</div> </li> <li><a href="/article/2411.htm" title="pl/sql集合类型" target="_blank">pl/sql集合类型</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88/1.htm">集合</a><a class="tag" taget="_blank" href="/search/type/1.htm">type</a><a class="tag" taget="_blank" href="/search/pl%2Fsql/1.htm">pl/sql</a> <div>--集合类型 /*   单行单列的数据,使用标量变量   单行多列数据,使用记录   单列多行数据,使用集合(。。。)   *集合:类似于数组也就是。pl/sql集合类型包括索引表(pl/sql table)、嵌套表(Nested Table)、变长数组(VARRAY)等 */ /*     --集合方法 &n</div> </li> <li><a href="/article/2538.htm" title="[Ofbiz]ofbiz初用" target="_blank">[Ofbiz]ofbiz初用</a> <span class="text-muted">dinguangx</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%95%86/1.htm">电商</a><a class="tag" taget="_blank" href="/search/ofbiz/1.htm">ofbiz</a> <div>从github下载最新的ofbiz(截止2015-7-13),从源码进行ofbiz的试用 1. 加载测试库 ofbiz内置derby,通过下面的命令初始化测试库 ./ant load-demo (与load-seed有一些区别)   2. 启动内置tomcat ./ant start 或 ./startofbiz.sh 或 java -jar ofbiz.jar &</div> </li> <li><a href="/article/2665.htm" title="结构体中最后一个元素是长度为0的数组" target="_blank">结构体中最后一个元素是长度为0的数组</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/gcc/1.htm">gcc</a> <div>在Linux源代码中,有很多的结构体最后都定义了一个元素个数为0个的数组,如/usr/include/linux/if_pppox.h中有这样一个结构体: struct pppoe_tag {     __u16 tag_type;     __u16 tag_len;   &n</div> </li> <li><a href="/article/2792.htm" title="Linux cp 实现强行覆盖" target="_blank">Linux cp 实现强行覆盖</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>发现在Fedora 10 /ubutun 里面用cp -fr src dest,即使加了-f也是不能强行覆盖的,这时怎么回事的呢?一两个文件还好说,就输几个yes吧,但是要是n多文件怎么办,那还不输死人呢?下面提供三种解决办法。 方法一 我们输入alias命令,看看系统给cp起了一个什么别名。 [root@localhost ~]# aliasalias cp=’cp -i’a</div> </li> <li><a href="/article/2919.htm" title="Memcached(一)、HelloWorld" target="_blank">Memcached(一)、HelloWorld</a> <span class="text-muted">frank1234</span> <a class="tag" taget="_blank" href="/search/memcached/1.htm">memcached</a> <div>一、简介 高性能的架构离不开缓存,分布式缓存中的佼佼者当属memcached,它通过客户端将不同的key hash到不同的memcached服务器中,而获取的时候也到相同的服务器中获取,由于不需要做集群同步,也就省去了集群间同步的开销和延迟,所以它相对于ehcache等缓存来说能更好的支持分布式应用,具有更强的横向伸缩能力。 二、客户端 选择一个memcached客户端,我这里用的是memc</div> </li> <li><a href="/article/3046.htm" title="Search in Rotated Sorted Array II" target="_blank">Search in Rotated Sorted Array II</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/search/1.htm">search</a> <div>Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given ta</div> </li> <li><a href="/article/3173.htm" title="Spring4新特性——更好的Java泛型操作API" target="_blank">Spring4新特性——更好的Java泛型操作API</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a><a class="tag" taget="_blank" href="/search/generic+type/1.htm">generic type</a> <div>Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC  Spring4新特性——Groovy Bean定义DSL Spring4新特性——更好的Java泛型操作API  Spring4新</div> </li> <li><a href="/article/3300.htm" title="CentOS安装JDK" target="_blank">CentOS安装JDK</a> <span class="text-muted">liuxingguome</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>1、行卸载原来的: [root@localhost opt]# rpm -qa | grep java tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64 [root@localhost</div> </li> <li><a href="/article/3427.htm" title="二分搜索专题2-在有序二维数组中搜索一个元素" target="_blank">二分搜索专题2-在有序二维数组中搜索一个元素</a> <span class="text-muted">OpenMind</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%88%86%E6%90%9C%E7%B4%A2/1.htm">二分搜索</a> <div>1,设二维数组p的每行每列都按照下标递增的顺序递增。 用数学语言描述如下:p满足 (1),对任意的x1,x2,y,如果x1<x2,则p(x1,y)<p(x2,y); (2),对任意的x,y1,y2, 如果y1<y2,则p(x,y1)<p(x,y2); 2,问题: 给定满足1的数组p和一个整数k,求是否存在x0,y0使得p(x0,y0)=k? 3,算法分析: (</div> </li> <li><a href="/article/3554.htm" title="java 随机数 Math与Random" target="_blank">java 随机数 Math与Random</a> <span class="text-muted">SaraWon</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a><a class="tag" taget="_blank" href="/search/Random/1.htm">Random</a> <div>今天需要在程序中产生随机数,知道有两种方法可以使用,但是使用Math和Random的区别还不是特别清楚,看到一篇文章是关于的,觉得写的还挺不错的,原文地址是 http://www.oschina.net/question/157182_45274?sort=default&p=1#answers 产生1到10之间的随机数的两种实现方式: //Math Math.roun</div> </li> <li><a href="/article/3681.htm" title="oracle创建表空间" target="_blank">oracle创建表空间</a> <span class="text-muted">tugn</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>create temporary tablespace TXSJ_TEMP   tempfile 'E:\Oracle\oradata\TXSJ_TEMP.dbf'   size 32m   autoextend on   next 32m maxsize 2048m   extent m</div> </li> <li><a href="/article/3808.htm" title="使用Java8实现自己的个性化搜索引擎" target="_blank">使用Java8实现自己的个性化搜索引擎</a> <span class="text-muted">yangshangchuan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/superword/1.htm">superword</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/java8/1.htm">java8</a><a class="tag" taget="_blank" href="/search/%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2/1.htm">全文检索</a> <div>需要对249本软件著作实现句子级别全文检索,这些著作均为PDF文件,不使用现有的框架如lucene,自己实现的方法如下: 1、从PDF文件中提取文本,这里的重点是如何最大可能地还原文本。提取之后的文本,一个句子一行保存为文本文件。 2、将所有文本文件合并为一个单一的文本文件,这样,每一个句子就有一个唯一行号。 3、对每一行文本进行分词,建立倒排表,倒排表的格式为:词=包含该词的总行数N=行号</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>