kubernetes---服务与卷

it2023-07-05  70

服务与卷

服务基础

服务图例
#mermaid-svg-kC0vmtbJ1uirmWIW .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .label text{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .node rect,#mermaid-svg-kC0vmtbJ1uirmWIW .node circle,#mermaid-svg-kC0vmtbJ1uirmWIW .node ellipse,#mermaid-svg-kC0vmtbJ1uirmWIW .node polygon,#mermaid-svg-kC0vmtbJ1uirmWIW .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-kC0vmtbJ1uirmWIW .node .label{text-align:center;fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .node.clickable{cursor:pointer}#mermaid-svg-kC0vmtbJ1uirmWIW .arrowheadPath{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-kC0vmtbJ1uirmWIW .flowchart-link{stroke:#333;fill:none}#mermaid-svg-kC0vmtbJ1uirmWIW .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-kC0vmtbJ1uirmWIW .edgeLabel rect{opacity:0.9}#mermaid-svg-kC0vmtbJ1uirmWIW .edgeLabel span{color:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-kC0vmtbJ1uirmWIW .cluster text{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-kC0vmtbJ1uirmWIW .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-kC0vmtbJ1uirmWIW text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-kC0vmtbJ1uirmWIW .actor-line{stroke:grey}#mermaid-svg-kC0vmtbJ1uirmWIW .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-kC0vmtbJ1uirmWIW #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .sequenceNumber{fill:#fff}#mermaid-svg-kC0vmtbJ1uirmWIW #sequencenumber{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW #crosshead path{fill:#333;stroke:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .messageText{fill:#333;stroke:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-kC0vmtbJ1uirmWIW .labelText,#mermaid-svg-kC0vmtbJ1uirmWIW .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-kC0vmtbJ1uirmWIW .loopText,#mermaid-svg-kC0vmtbJ1uirmWIW .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-kC0vmtbJ1uirmWIW .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-kC0vmtbJ1uirmWIW .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-kC0vmtbJ1uirmWIW .noteText,#mermaid-svg-kC0vmtbJ1uirmWIW .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-kC0vmtbJ1uirmWIW .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-kC0vmtbJ1uirmWIW .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-kC0vmtbJ1uirmWIW .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-kC0vmtbJ1uirmWIW .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .section{stroke:none;opacity:0.2}#mermaid-svg-kC0vmtbJ1uirmWIW .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-kC0vmtbJ1uirmWIW .section2{fill:#fff400}#mermaid-svg-kC0vmtbJ1uirmWIW .section1,#mermaid-svg-kC0vmtbJ1uirmWIW .section3{fill:#fff;opacity:0.2}#mermaid-svg-kC0vmtbJ1uirmWIW .sectionTitle0{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .sectionTitle1{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .sectionTitle2{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .sectionTitle3{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-kC0vmtbJ1uirmWIW .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .grid path{stroke-width:0}#mermaid-svg-kC0vmtbJ1uirmWIW .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-kC0vmtbJ1uirmWIW .task{stroke-width:2}#mermaid-svg-kC0vmtbJ1uirmWIW .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .taskText:not([font-size]){font-size:11px}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-kC0vmtbJ1uirmWIW .task.clickable{cursor:pointer}#mermaid-svg-kC0vmtbJ1uirmWIW .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-kC0vmtbJ1uirmWIW .taskText0,#mermaid-svg-kC0vmtbJ1uirmWIW .taskText1,#mermaid-svg-kC0vmtbJ1uirmWIW .taskText2,#mermaid-svg-kC0vmtbJ1uirmWIW .taskText3{fill:#fff}#mermaid-svg-kC0vmtbJ1uirmWIW .task0,#mermaid-svg-kC0vmtbJ1uirmWIW .task1,#mermaid-svg-kC0vmtbJ1uirmWIW .task2,#mermaid-svg-kC0vmtbJ1uirmWIW .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutside0,#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutside2{fill:#000}#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutside1,#mermaid-svg-kC0vmtbJ1uirmWIW .taskTextOutside3{fill:#000}#mermaid-svg-kC0vmtbJ1uirmWIW .active0,#mermaid-svg-kC0vmtbJ1uirmWIW .active1,#mermaid-svg-kC0vmtbJ1uirmWIW .active2,#mermaid-svg-kC0vmtbJ1uirmWIW .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-kC0vmtbJ1uirmWIW .activeText0,#mermaid-svg-kC0vmtbJ1uirmWIW .activeText1,#mermaid-svg-kC0vmtbJ1uirmWIW .activeText2,#mermaid-svg-kC0vmtbJ1uirmWIW .activeText3{fill:#000 !important}#mermaid-svg-kC0vmtbJ1uirmWIW .done0,#mermaid-svg-kC0vmtbJ1uirmWIW .done1,#mermaid-svg-kC0vmtbJ1uirmWIW .done2,#mermaid-svg-kC0vmtbJ1uirmWIW .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-kC0vmtbJ1uirmWIW .doneText0,#mermaid-svg-kC0vmtbJ1uirmWIW .doneText1,#mermaid-svg-kC0vmtbJ1uirmWIW .doneText2,#mermaid-svg-kC0vmtbJ1uirmWIW .doneText3{fill:#000 !important}#mermaid-svg-kC0vmtbJ1uirmWIW .crit0,#mermaid-svg-kC0vmtbJ1uirmWIW .crit1,#mermaid-svg-kC0vmtbJ1uirmWIW .crit2,#mermaid-svg-kC0vmtbJ1uirmWIW .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-kC0vmtbJ1uirmWIW .activeCrit0,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCrit1,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCrit2,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-kC0vmtbJ1uirmWIW .doneCrit0,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCrit1,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCrit2,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-kC0vmtbJ1uirmWIW .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-kC0vmtbJ1uirmWIW .milestoneText{font-style:italic}#mermaid-svg-kC0vmtbJ1uirmWIW .doneCritText0,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCritText1,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCritText2,#mermaid-svg-kC0vmtbJ1uirmWIW .doneCritText3{fill:#000 !important}#mermaid-svg-kC0vmtbJ1uirmWIW .activeCritText0,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCritText1,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCritText2,#mermaid-svg-kC0vmtbJ1uirmWIW .activeCritText3{fill:#000 !important}#mermaid-svg-kC0vmtbJ1uirmWIW .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-kC0vmtbJ1uirmWIW g.classGroup text .title{font-weight:bolder}#mermaid-svg-kC0vmtbJ1uirmWIW g.clickable{cursor:pointer}#mermaid-svg-kC0vmtbJ1uirmWIW g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-kC0vmtbJ1uirmWIW g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-kC0vmtbJ1uirmWIW .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-kC0vmtbJ1uirmWIW .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-kC0vmtbJ1uirmWIW .dashed-line{stroke-dasharray:3}#mermaid-svg-kC0vmtbJ1uirmWIW #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW .commit-id,#mermaid-svg-kC0vmtbJ1uirmWIW .commit-msg,#mermaid-svg-kC0vmtbJ1uirmWIW .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-kC0vmtbJ1uirmWIW g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-kC0vmtbJ1uirmWIW g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-kC0vmtbJ1uirmWIW g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-kC0vmtbJ1uirmWIW .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-kC0vmtbJ1uirmWIW .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-kC0vmtbJ1uirmWIW .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-kC0vmtbJ1uirmWIW .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-kC0vmtbJ1uirmWIW .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-kC0vmtbJ1uirmWIW .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-kC0vmtbJ1uirmWIW .edgeLabel text{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-kC0vmtbJ1uirmWIW .node circle.state-start{fill:black;stroke:black}#mermaid-svg-kC0vmtbJ1uirmWIW .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-kC0vmtbJ1uirmWIW #statediagram-barbEnd{fill:#9370db}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-state .divider{stroke:#9370db}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-kC0vmtbJ1uirmWIW .note-edge{stroke-dasharray:5}#mermaid-svg-kC0vmtbJ1uirmWIW .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-kC0vmtbJ1uirmWIW .error-icon{fill:#522}#mermaid-svg-kC0vmtbJ1uirmWIW .error-text{fill:#522;stroke:#522}#mermaid-svg-kC0vmtbJ1uirmWIW .edge-thickness-normal{stroke-width:2px}#mermaid-svg-kC0vmtbJ1uirmWIW .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-kC0vmtbJ1uirmWIW .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-kC0vmtbJ1uirmWIW .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-kC0vmtbJ1uirmWIW .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-kC0vmtbJ1uirmWIW .marker{fill:#333}#mermaid-svg-kC0vmtbJ1uirmWIW .marker.cross{stroke:#333} :root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-kC0vmtbJ1uirmWIW { color: rgba(0, 0, 0, 0.75); font: ; } K8S集群 service headless service nodeport apache Pod apache Pod apache Pod 用户 用户
创建后端
[root@master config]# vim apache-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: apache-example spec: selector: matchLabels: app: myapp-apache replicas: 2 template: metadata: labels: app: myapp-apache spec: containers: - name: apache image: 192.168.1.100:5000/myos:httpd ports: - protocol: TCP containerPort: 80 restartPolicy: Always [root@master config]# kubectl apply -f apache-example.yaml [root@master config]# kubectl get pod NAME READY STATUS RESTARTS AGE apache-example-65fb568b4c-p6mrl 1/1 Running 0 4m6s
创建服务
[root@master config]# vim service-example.yaml --- apiVersion: v1 kind: Service metadata: name: apache-service spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: myapp-apache type: ClusterIP [root@master config]# kubectl apply -f service-example.yaml [root@master config]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apache-service ClusterIP 10.254.78.148 <none> 80/TCP 9m46s

访问服务

服务只有在集群内部才可以访问,创建 Pod,在Pod 中访问服务

[root@master config]# vim pod-example.yaml --- apiVersion: v1 kind: Pod metadata: name: pod-example labels: app: myapp spec: containers: - name: myos image: 192.168.1.100:5000/myos:v1804 stdin: true tty: true restartPolicy: Always [root@master config]# kubectl apply -f pod-example.yaml [root@master config]# kubectl exec -it pod-example -- /bin/bash [root@pod-example /]# curl http://10.254.78.148/info.php <pre> Array ( [REMOTE_ADDR] => 10.244.3.12 [REQUEST_METHOD] => GET [HTTP_USER_AGENT] => curl/7.29.0 [REQUEST_URI] => /info.php ) php_host: apache-example-65fb568b4c-thks8 1229

扩容集群节点,服务自动扩展

# 在master上执行扩容节点 [root@master ~]# kubectl scale deployment apache-example --replicas=2 # 服务本质是LVS规则 [root@master ~]# ipvsadm -L -n TCP 10.254.78.148:80 rr -> 10.244.4.66:80 Masq 1 0 0 -> 10.244.5.11:80 Masq 1 0 0 ----------------------------------------------------------------------------------------- # 在pod里访问 [root@pod-example /]# curl http://10.254.78.148/info.php ... ... php_host: apache-example-65fb568b4c-p6mrl ... ... php_host: apache-example-65fb568b4c-thks8
headless服务
[root@master ~]# vim headless-service.yaml --- apiVersion: v1 kind: Service metadata: name: apache-headless spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: myapp-apache type: ClusterIP clusterIP: None [root@master ~]# kubectl apply -f headless-service.yaml service/apache-headless created [root@master ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apache-headless ClusterIP None <none> 80/TCP 5s apache-service ClusterIP 10.254.78.148 <none> 80/TCP 74m kubernetes ClusterIP 10.254.0.1 <none> 443/TCP 2d20h #-----------------------------------进入pod查看解析结果------------------------------------ [root@master ~]# kubectl exec -it pod-example -- /bin/bash [root@pod-example /]# yum install -y bind-utils [root@pod-example /]# host apache-headless.default.svc.cluster.local apache-headless.default.svc.cluster.local has address 10.244.5.11 apache-headless.default.svc.cluster.local has address 10.244.4.66
nodeport服务
[root@master ~]# vim nodeport-example.yaml --- apiVersion: v1 kind: Service metadata: name: apache-nodeport spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: myapp-apache type: NodePort [root@master ~]# kubectl apply -f nodeport-example.yaml [root@master ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apache-nodeport NodePort 10.254.24.100 <none> 80:31410/TCP 7m10s #---------------------------所有node节点31410端口均可访问----------------------------------- # 在跳板机上访问服务 [root@ecs-proxy ~]# curl http://192.168.1.31:31410/info.php [root@ecs-proxy ~]# curl http://192.168.1.32:31410/info.php [root@ecs-proxy ~]# curl http://192.168.1.33:31410/info.php
ingress控制器

拷贝云盘 kubernetes/v1.17.6/ingress 文件夹到 master 上,导入镜像到私有仓库

[root@master ingress]# docker load -i ingress-nginx.tar.gz [root@master ingress]# docker tag quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 192.168.1.100:5000/nginx-ingress-controller:0.30.0 [root@master ingress]# docker push 192.168.1.100:5000/nginx-ingress-controller:0.30.0 [root@master ingress]# curl http://192.168.1.100:5000/v2/_catalog {"repositories":["coredns","etcd","flannel","kube-apiserver","kube-controller-manager","kube-proxy","kube-scheduler","myos","nginx-ingress-controller","pause"]}

安装控制器

[root@master ~]# vim ingress/mandatory.yaml 221: image: 192.168.1.100:5000/nginx-ingress-controller:0.30.0 [root@master ~]# kubectl apply -f ingress/mandatory.yaml [root@master ~]# kubectl -n ingress-nginx get pod NAME READY STATUS RESTARTS AGE nginx-ingress-controller-fc6766d7-ptppp 1/1 Running 0 47s [root@master ~]# vim ingress/ingress-service.yaml --- kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: externalTrafficPolicy: Local type: LoadBalancer externalIPs: - 192.168.1.101 selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: https [root@master ~]# kubectl apply -f ingress/ingress-service.yaml service/ingress-nginx created [root@master ~]# kubectl -n ingress-nginx get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) ingress-nginx LoadBalancer 10.254.152.162 192.168.1.101 80:30143/TCP,443:31025/TCP [root@master ingress]# vim ingress-example.yaml --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-app annotations: kubernetes.io/ingress.class: "nginx" spec: backend: serviceName: apache-service servicePort: 80 [root@master ingress]# kubectl apply -f ingress-example.yaml [root@master ingress]# kubectl get ingresses NAME HOSTS ADDRESS PORTS AGE my-app * 192.168.1.33 80 3m2s #----------------------- 在跳板机访问测试 ------------------------------------------------- [root@ecs-proxy ~]# curl http://192.168.1.33/info.php <pre> Array ( [REMOTE_ADDR] => 10.244.3.0 [REQUEST_METHOD] => GET [HTTP_USER_AGENT] => curl/7.29.0 [REQUEST_URI] => /info.php ) php_host: apache-example-65fb568b4c-p6mrl 1229

存储卷

nginx+php部署图例

水平集群部署案例

#mermaid-svg-hQtGFfZ9fOw3oXIh .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .label text{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .node rect,#mermaid-svg-hQtGFfZ9fOw3oXIh .node circle,#mermaid-svg-hQtGFfZ9fOw3oXIh .node ellipse,#mermaid-svg-hQtGFfZ9fOw3oXIh .node polygon,#mermaid-svg-hQtGFfZ9fOw3oXIh .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-hQtGFfZ9fOw3oXIh .node .label{text-align:center;fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .node.clickable{cursor:pointer}#mermaid-svg-hQtGFfZ9fOw3oXIh .arrowheadPath{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-hQtGFfZ9fOw3oXIh .flowchart-link{stroke:#333;fill:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-hQtGFfZ9fOw3oXIh .edgeLabel rect{opacity:0.9}#mermaid-svg-hQtGFfZ9fOw3oXIh .edgeLabel span{color:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-hQtGFfZ9fOw3oXIh .cluster text{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-hQtGFfZ9fOw3oXIh .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-hQtGFfZ9fOw3oXIh text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .actor-line{stroke:grey}#mermaid-svg-hQtGFfZ9fOw3oXIh .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .sequenceNumber{fill:#fff}#mermaid-svg-hQtGFfZ9fOw3oXIh #sequencenumber{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh #crosshead path{fill:#333;stroke:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .messageText{fill:#333;stroke:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-hQtGFfZ9fOw3oXIh .labelText,#mermaid-svg-hQtGFfZ9fOw3oXIh .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .loopText,#mermaid-svg-hQtGFfZ9fOw3oXIh .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-hQtGFfZ9fOw3oXIh .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-hQtGFfZ9fOw3oXIh .noteText,#mermaid-svg-hQtGFfZ9fOw3oXIh .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-hQtGFfZ9fOw3oXIh .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-hQtGFfZ9fOw3oXIh .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-hQtGFfZ9fOw3oXIh .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .section{stroke:none;opacity:0.2}#mermaid-svg-hQtGFfZ9fOw3oXIh .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-hQtGFfZ9fOw3oXIh .section2{fill:#fff400}#mermaid-svg-hQtGFfZ9fOw3oXIh .section1,#mermaid-svg-hQtGFfZ9fOw3oXIh .section3{fill:#fff;opacity:0.2}#mermaid-svg-hQtGFfZ9fOw3oXIh .sectionTitle0{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .sectionTitle1{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .sectionTitle2{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .sectionTitle3{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-hQtGFfZ9fOw3oXIh .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .grid path{stroke-width:0}#mermaid-svg-hQtGFfZ9fOw3oXIh .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-hQtGFfZ9fOw3oXIh .task{stroke-width:2}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText:not([font-size]){font-size:11px}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-hQtGFfZ9fOw3oXIh .task.clickable{cursor:pointer}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText0,#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText1,#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText2,#mermaid-svg-hQtGFfZ9fOw3oXIh .taskText3{fill:#fff}#mermaid-svg-hQtGFfZ9fOw3oXIh .task0,#mermaid-svg-hQtGFfZ9fOw3oXIh .task1,#mermaid-svg-hQtGFfZ9fOw3oXIh .task2,#mermaid-svg-hQtGFfZ9fOw3oXIh .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutside0,#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutside2{fill:#000}#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutside1,#mermaid-svg-hQtGFfZ9fOw3oXIh .taskTextOutside3{fill:#000}#mermaid-svg-hQtGFfZ9fOw3oXIh .active0,#mermaid-svg-hQtGFfZ9fOw3oXIh .active1,#mermaid-svg-hQtGFfZ9fOw3oXIh .active2,#mermaid-svg-hQtGFfZ9fOw3oXIh .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-hQtGFfZ9fOw3oXIh .activeText0,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeText1,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeText2,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeText3{fill:#000 !important}#mermaid-svg-hQtGFfZ9fOw3oXIh .done0,#mermaid-svg-hQtGFfZ9fOw3oXIh .done1,#mermaid-svg-hQtGFfZ9fOw3oXIh .done2,#mermaid-svg-hQtGFfZ9fOw3oXIh .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-hQtGFfZ9fOw3oXIh .doneText0,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneText1,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneText2,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneText3{fill:#000 !important}#mermaid-svg-hQtGFfZ9fOw3oXIh .crit0,#mermaid-svg-hQtGFfZ9fOw3oXIh .crit1,#mermaid-svg-hQtGFfZ9fOw3oXIh .crit2,#mermaid-svg-hQtGFfZ9fOw3oXIh .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCrit0,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCrit1,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCrit2,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCrit0,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCrit1,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCrit2,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-hQtGFfZ9fOw3oXIh .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-hQtGFfZ9fOw3oXIh .milestoneText{font-style:italic}#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCritText0,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCritText1,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCritText2,#mermaid-svg-hQtGFfZ9fOw3oXIh .doneCritText3{fill:#000 !important}#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCritText0,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCritText1,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCritText2,#mermaid-svg-hQtGFfZ9fOw3oXIh .activeCritText3{fill:#000 !important}#mermaid-svg-hQtGFfZ9fOw3oXIh .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-hQtGFfZ9fOw3oXIh g.classGroup text .title{font-weight:bolder}#mermaid-svg-hQtGFfZ9fOw3oXIh g.clickable{cursor:pointer}#mermaid-svg-hQtGFfZ9fOw3oXIh g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-hQtGFfZ9fOw3oXIh g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-hQtGFfZ9fOw3oXIh .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-hQtGFfZ9fOw3oXIh .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .dashed-line{stroke-dasharray:3}#mermaid-svg-hQtGFfZ9fOw3oXIh #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh .commit-id,#mermaid-svg-hQtGFfZ9fOw3oXIh .commit-msg,#mermaid-svg-hQtGFfZ9fOw3oXIh .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-hQtGFfZ9fOw3oXIh g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-hQtGFfZ9fOw3oXIh g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-hQtGFfZ9fOw3oXIh g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-hQtGFfZ9fOw3oXIh .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-hQtGFfZ9fOw3oXIh .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-hQtGFfZ9fOw3oXIh .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-hQtGFfZ9fOw3oXIh .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-hQtGFfZ9fOw3oXIh .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-hQtGFfZ9fOw3oXIh .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-hQtGFfZ9fOw3oXIh .edgeLabel text{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-hQtGFfZ9fOw3oXIh .node circle.state-start{fill:black;stroke:black}#mermaid-svg-hQtGFfZ9fOw3oXIh .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-hQtGFfZ9fOw3oXIh #statediagram-barbEnd{fill:#9370db}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-state .divider{stroke:#9370db}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-hQtGFfZ9fOw3oXIh .note-edge{stroke-dasharray:5}#mermaid-svg-hQtGFfZ9fOw3oXIh .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-hQtGFfZ9fOw3oXIh .error-icon{fill:#522}#mermaid-svg-hQtGFfZ9fOw3oXIh .error-text{fill:#522;stroke:#522}#mermaid-svg-hQtGFfZ9fOw3oXIh .edge-thickness-normal{stroke-width:2px}#mermaid-svg-hQtGFfZ9fOw3oXIh .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-hQtGFfZ9fOw3oXIh .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-hQtGFfZ9fOw3oXIh .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-hQtGFfZ9fOw3oXIh .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-hQtGFfZ9fOw3oXIh .marker{fill:#333}#mermaid-svg-hQtGFfZ9fOw3oXIh .marker.cross{stroke:#333} :root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-hQtGFfZ9fOw3oXIh { color: rgba(0, 0, 0, 0.75); font: ; } user ingress nginx-service nginx nginx nginx nginx nginx php-service php php php NFS Server

垂直集群部署案例

#mermaid-svg-DHwaI2AHzDB0KXvC .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .label text{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .node rect,#mermaid-svg-DHwaI2AHzDB0KXvC .node circle,#mermaid-svg-DHwaI2AHzDB0KXvC .node ellipse,#mermaid-svg-DHwaI2AHzDB0KXvC .node polygon,#mermaid-svg-DHwaI2AHzDB0KXvC .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-DHwaI2AHzDB0KXvC .node .label{text-align:center;fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .node.clickable{cursor:pointer}#mermaid-svg-DHwaI2AHzDB0KXvC .arrowheadPath{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-DHwaI2AHzDB0KXvC .flowchart-link{stroke:#333;fill:none}#mermaid-svg-DHwaI2AHzDB0KXvC .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-DHwaI2AHzDB0KXvC .edgeLabel rect{opacity:0.9}#mermaid-svg-DHwaI2AHzDB0KXvC .edgeLabel span{color:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-DHwaI2AHzDB0KXvC .cluster text{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-DHwaI2AHzDB0KXvC .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-DHwaI2AHzDB0KXvC text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-DHwaI2AHzDB0KXvC .actor-line{stroke:grey}#mermaid-svg-DHwaI2AHzDB0KXvC .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-DHwaI2AHzDB0KXvC #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .sequenceNumber{fill:#fff}#mermaid-svg-DHwaI2AHzDB0KXvC #sequencenumber{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC #crosshead path{fill:#333;stroke:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .messageText{fill:#333;stroke:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-DHwaI2AHzDB0KXvC .labelText,#mermaid-svg-DHwaI2AHzDB0KXvC .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-DHwaI2AHzDB0KXvC .loopText,#mermaid-svg-DHwaI2AHzDB0KXvC .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-DHwaI2AHzDB0KXvC .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-DHwaI2AHzDB0KXvC .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-DHwaI2AHzDB0KXvC .noteText,#mermaid-svg-DHwaI2AHzDB0KXvC .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-DHwaI2AHzDB0KXvC .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-DHwaI2AHzDB0KXvC .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-DHwaI2AHzDB0KXvC .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-DHwaI2AHzDB0KXvC .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .section{stroke:none;opacity:0.2}#mermaid-svg-DHwaI2AHzDB0KXvC .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-DHwaI2AHzDB0KXvC .section2{fill:#fff400}#mermaid-svg-DHwaI2AHzDB0KXvC .section1,#mermaid-svg-DHwaI2AHzDB0KXvC .section3{fill:#fff;opacity:0.2}#mermaid-svg-DHwaI2AHzDB0KXvC .sectionTitle0{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .sectionTitle1{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .sectionTitle2{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .sectionTitle3{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-DHwaI2AHzDB0KXvC .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .grid path{stroke-width:0}#mermaid-svg-DHwaI2AHzDB0KXvC .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-DHwaI2AHzDB0KXvC .task{stroke-width:2}#mermaid-svg-DHwaI2AHzDB0KXvC .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .taskText:not([font-size]){font-size:11px}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-DHwaI2AHzDB0KXvC .task.clickable{cursor:pointer}#mermaid-svg-DHwaI2AHzDB0KXvC .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-DHwaI2AHzDB0KXvC .taskText0,#mermaid-svg-DHwaI2AHzDB0KXvC .taskText1,#mermaid-svg-DHwaI2AHzDB0KXvC .taskText2,#mermaid-svg-DHwaI2AHzDB0KXvC .taskText3{fill:#fff}#mermaid-svg-DHwaI2AHzDB0KXvC .task0,#mermaid-svg-DHwaI2AHzDB0KXvC .task1,#mermaid-svg-DHwaI2AHzDB0KXvC .task2,#mermaid-svg-DHwaI2AHzDB0KXvC .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutside0,#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutside2{fill:#000}#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutside1,#mermaid-svg-DHwaI2AHzDB0KXvC .taskTextOutside3{fill:#000}#mermaid-svg-DHwaI2AHzDB0KXvC .active0,#mermaid-svg-DHwaI2AHzDB0KXvC .active1,#mermaid-svg-DHwaI2AHzDB0KXvC .active2,#mermaid-svg-DHwaI2AHzDB0KXvC .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-DHwaI2AHzDB0KXvC .activeText0,#mermaid-svg-DHwaI2AHzDB0KXvC .activeText1,#mermaid-svg-DHwaI2AHzDB0KXvC .activeText2,#mermaid-svg-DHwaI2AHzDB0KXvC .activeText3{fill:#000 !important}#mermaid-svg-DHwaI2AHzDB0KXvC .done0,#mermaid-svg-DHwaI2AHzDB0KXvC .done1,#mermaid-svg-DHwaI2AHzDB0KXvC .done2,#mermaid-svg-DHwaI2AHzDB0KXvC .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-DHwaI2AHzDB0KXvC .doneText0,#mermaid-svg-DHwaI2AHzDB0KXvC .doneText1,#mermaid-svg-DHwaI2AHzDB0KXvC .doneText2,#mermaid-svg-DHwaI2AHzDB0KXvC .doneText3{fill:#000 !important}#mermaid-svg-DHwaI2AHzDB0KXvC .crit0,#mermaid-svg-DHwaI2AHzDB0KXvC .crit1,#mermaid-svg-DHwaI2AHzDB0KXvC .crit2,#mermaid-svg-DHwaI2AHzDB0KXvC .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-DHwaI2AHzDB0KXvC .activeCrit0,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCrit1,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCrit2,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-DHwaI2AHzDB0KXvC .doneCrit0,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCrit1,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCrit2,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-DHwaI2AHzDB0KXvC .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-DHwaI2AHzDB0KXvC .milestoneText{font-style:italic}#mermaid-svg-DHwaI2AHzDB0KXvC .doneCritText0,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCritText1,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCritText2,#mermaid-svg-DHwaI2AHzDB0KXvC .doneCritText3{fill:#000 !important}#mermaid-svg-DHwaI2AHzDB0KXvC .activeCritText0,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCritText1,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCritText2,#mermaid-svg-DHwaI2AHzDB0KXvC .activeCritText3{fill:#000 !important}#mermaid-svg-DHwaI2AHzDB0KXvC .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-DHwaI2AHzDB0KXvC g.classGroup text .title{font-weight:bolder}#mermaid-svg-DHwaI2AHzDB0KXvC g.clickable{cursor:pointer}#mermaid-svg-DHwaI2AHzDB0KXvC g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-DHwaI2AHzDB0KXvC g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-DHwaI2AHzDB0KXvC .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-DHwaI2AHzDB0KXvC .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-DHwaI2AHzDB0KXvC .dashed-line{stroke-dasharray:3}#mermaid-svg-DHwaI2AHzDB0KXvC #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC .commit-id,#mermaid-svg-DHwaI2AHzDB0KXvC .commit-msg,#mermaid-svg-DHwaI2AHzDB0KXvC .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-DHwaI2AHzDB0KXvC g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-DHwaI2AHzDB0KXvC g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-DHwaI2AHzDB0KXvC g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-DHwaI2AHzDB0KXvC .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-DHwaI2AHzDB0KXvC .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-DHwaI2AHzDB0KXvC .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-DHwaI2AHzDB0KXvC .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-DHwaI2AHzDB0KXvC .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-DHwaI2AHzDB0KXvC .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-DHwaI2AHzDB0KXvC .edgeLabel text{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-DHwaI2AHzDB0KXvC .node circle.state-start{fill:black;stroke:black}#mermaid-svg-DHwaI2AHzDB0KXvC .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-DHwaI2AHzDB0KXvC #statediagram-barbEnd{fill:#9370db}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-state .divider{stroke:#9370db}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-DHwaI2AHzDB0KXvC .note-edge{stroke-dasharray:5}#mermaid-svg-DHwaI2AHzDB0KXvC .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-DHwaI2AHzDB0KXvC .error-icon{fill:#522}#mermaid-svg-DHwaI2AHzDB0KXvC .error-text{fill:#522;stroke:#522}#mermaid-svg-DHwaI2AHzDB0KXvC .edge-thickness-normal{stroke-width:2px}#mermaid-svg-DHwaI2AHzDB0KXvC .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-DHwaI2AHzDB0KXvC .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-DHwaI2AHzDB0KXvC .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-DHwaI2AHzDB0KXvC .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-DHwaI2AHzDB0KXvC .marker{fill:#333}#mermaid-svg-DHwaI2AHzDB0KXvC .marker.cross{stroke:#333} :root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-DHwaI2AHzDB0KXvC { color: rgba(0, 0, 0, 0.75); font: ; } POD-3 POD-2 POD-1 pause nginx php pause nginx php pause nginx php NFS Server web service
configmap配置

获取 nginx 配置文件,参考运维课程添加动静分离,并创建 configmap

[root@master configmap]# vim nginx.conf ... ... location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } ... ... [root@master configmap]# kubectl create configmap nginx-conf --from-file=nginx.conf configmap/nginx-conf created [root@master configmap]# kubectl get configmaps NAME DATA AGE nginx-conf 1 8s

如果需要修改配置文件

1、删除 configmap

​ 编辑新的配置文件,重新创建configmap

2、使用 kubectl edit configmap 名称直接修改(注意格式)

在容器中使用configmap

由于 apache 与 nginx 都使用 80 端口,把之前的实验容器全部删除

[root@master configmap]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apache-service ClusterIP 10.254.78.148 <none> 80/TCP 5h43m kubernetes ClusterIP 10.254.0.1 <none> 443/TCP 3d [root@master configmap]# kubectl delete service apache-service service "apache-service" deleted [root@master configmap]# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE apache-example 2/2 2 2 5h48m [root@master configmap]# kubectl delete deployments apache-example deployment.apps "apache-example" deleted

创建 nginx + php 容器,调用 configmap

[root@master configmap]# vim nginx-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-example spec: selector: matchLabels: app: myapp-nginx replicas: 1 template: metadata: labels: app: myapp-nginx spec: volumes: - name: nginx-php configMap: name: nginx-conf containers: - name: nginx image: 192.168.1.100:5000/myos:nginx ports: - protocol: TCP containerPort: 80 volumeMounts: - name: nginx-php subPath: nginx.conf mountPath: /usr/local/nginx/conf/nginx.conf - name: php image: 192.168.1.100:5000/myos:php-fpm restartPolicy: Always [root@master configmap]# kubectl apply -f nginx-example.yaml [root@master configmap]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP nginx-example-bbb8ddf7b-kxrdf 2/2 Running 0 38s 10.244.4.67 [root@master configmap]# curl http://10.244.4.67/info.html <html> <marquee behavior="alternate"> <font size="12px" color=#00ff00>Hello World</font> </marquee> </html> [root@master configmap]# curl http://10.244.4.67/info.php <pre> Array ( [REMOTE_ADDR] => 10.244.0.0 [REQUEST_METHOD] => GET [HTTP_USER_AGENT] => curl/7.29.0 [REQUEST_URI] => /info.php ) php_host: nginx-example-bbb8ddf7b-kxrdf 1229
持久化存储卷

在 registry 上搭建NFS服务器

[root@registry ~]# yum install -y nfs-utils [root@registry ~]# mkdir -m 777 /var/webroot [root@registry ~]# vim /etc/exports /var/webroot *(rw) [root@registry ~]# systemctl enable --now nfs #-------------------------------下面在任意其他节点测试------------------------------ [root@master ~]# yum install -y nfs-utils [root@master ~]# showmount -e 192.168.1.100 Export list for 192.168.1.100: /var/webroot *

创建 PV

[root@master configmap]# vim pv-example.yaml --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs labels: app: web-nfs spec: volumeMode: Filesystem capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: path: /var/webroot server: 192.168.1.100 [root@master configmap]# kubectl apply -f pv-example.yaml persistentvolume/pv-nfs created [root@master configmap]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS pv-nfs 10Gi RWX Retain Available

创建pvc,并绑定pv

[root@master configmap]# vim pvc-example.yaml --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: volumeMode: Filesystem accessModes: - ReadWriteMany resources: requests: storage: 8Gi selector: matchLabels: app: web-nfs [root@master configmap]# kubectl apply -f pvc-example.yaml [root@master configmap]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM pv-nfs 10Gi RWX Retain Bound default/pvc-nfs [root@master configmap]# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-nfs Bound pv-nfs 10Gi RWX 27s

为资源文件 pod 添加持久卷访问支持,并在所有节点安装 nfs-utils 软件工具包

[root@node-0001 ~]# yum install -y nfs-utils ----------------------------------------------------------------------------------------- [root@node-0002 ~]# yum install -y nfs-utils ----------------------------------------------------------------------------------------- [root@node-0003 ~]# yum install -y nfs-utils ----------------------------------------------------------------------------------------- [root@master configmap]# kubectl delete -f nginx-example.yaml deployment.apps "nginx-example" deleted [root@master configmap]# vim nginx-example.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-example spec: selector: matchLabels: app: myapp-nginx replicas: 3 template: metadata: labels: app: myapp-nginx spec: volumes: - name: nginx-php configMap: name: nginx-conf - name: site-data persistentVolumeClaim: claimName: pvc-nfs containers: - name: nginx image: 192.168.1.100:5000/myos:nginx ports: - protocol: TCP containerPort: 80 volumeMounts: - name: nginx-php subPath: nginx.conf mountPath: /usr/local/nginx/conf/nginx.conf - name: site-data mountPath: /usr/local/nginx/html - name: php image: 192.168.1.100:5000/myos:php-fpm volumeMounts: - name: site-data mountPath: /usr/local/nginx/html restartPolicy: Always [root@master configmap]# kubectl apply -f nginx-example.yaml

添加 service 服务,并使用 ingress 发布到集群外部

[root@master configmap]# vim nginx-service.yaml --- apiVersion: v1 kind: Service metadata: name: nginx-service spec: ports: - protocol: TCP port: 80 targetPort: 80 selector: app: myapp-nginx type: ClusterIP --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-app annotations: kubernetes.io/ingress.class: "nginx" spec: backend: serviceName: nginx-service servicePort: 80 [root@master configmap]# kubectl apply -f nginx-service.yaml

在registry上添加网页文件,在跳板机上完成访问测试

拷贝 info.php 到 nfs server 的 /var/webroot/ 目录下

[root@ecs-proxy ~]# watch -n 1 'curl -s http://192.168.1.33/info.php'
最新回复(0)