版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
kubernetes部署-ingress(H—)
kubernetes部署一ingress
部署ingress
獲取ingress的yaml文件
https://github.ccm/kubernetes/ingress-nginx/tree/nginx-O.20.O/deploy
也可以wget直接下載下來
wgethttps://raw.githubusercontent.com/kubernetes/ingress-
nginx/master/deploy/niandatory.yaml
mandatory,yaml需要修改images的鏡像地址下面的我已經(jīng)都改好了可以直接
用
apiVersion:vl
kind:Namespace
metadata:
name:ingress-nginx
apiVersion:extensions/vlbetal
kind:Deployment
metadata:
name:default-http-backend
labels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingrcss-nginx
namespace:ingress-nginx
spec:
replicas:1
selector:
matchLabels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
spec:
terminationGracePeriodSeconds:60
containers:
name:default-http-backend
#Anyimageispermissibleaslongas:
........1.I.serve..40.pag.a./
........2.T.serve.20.o../health.endpoint
image:goog1econtainer/defaultbackend-amd64:1.5
livenessProbe:
httpGct:
path:/healthz
port:8080
scheme:HTTP
initialDclaySeconds:30
timeoutSeconds:5
ports:
-containerPort:8080
resources:
limits:
cpu:10m
memory:20Mi
requests:
cpu:10m
memory:20Mi
apiVersion:vl
kind:Service
metadata:
name:default-http-backend
namespace:ingress-nginx
labels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
spec:
ports:
-port:80
targetPort:8080
selector:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:nginx-configuration
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:tcp-services
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:udp-services
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
apiVersion:vl
kind:ServiceAccount
metadata:
name:nginx-ingress-serviceaccount
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
apiVersion:rbac.authorization,k8s.io/vlbetal
kind:ClusterRole
metadata:
name:nginx-ingress-clusterrole
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
rules:
-apiGroups:
nii
resources:
-configmaps
-endpoints
-nodes
-pods
-secrets
verbs:
-list
-watch
-apiGroups:
riii
resources:
-nodes
verbs:
-get
-apiGroups:
resources:
-services
verbs:
-get
-list
-watch
-apiGroups:
-"extensions
resources:
-ingresscs
verbs:
-get
-list
-watch
-apiGroups:
MIf
resources:
-events
verbs:
-create
-patch
-apiGroups:
"extensions,
resources:
-ingresses/status
verbs:
-update
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:Role
metadata:
name:nginx-ingress-role
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
rules:
-apiGroups:
ntf
resources:
-configmaps
-pods
secrets
-namespaces
verbs:
-get
-apiGroups:
nii
resources:
-configmaps
resourceNames:
#Defaultsto"<election-icl>-<ingress-class>w
#Here:H<ingrcss-controller-lcader>-<nginx>n
#Thishastobeadaptedifyouchangeeitherparameter
#whenlaunchingthenginx-ingress-controller.
-ningress-controller-leader-nginxr,
verbs:
-get
-update
-apiGroups:
ntf
resources:
-configmaps
verbs:
create
-apiGroups:
nif
resources:
-endpoints
verbs:
一get
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:RoleBinding
metadata:
name:nginx-ingress-role-nisa-binding
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
roleRef:
apiGroup:rbac.authorization,k8s.io
kind:Role
name:nginx-ingress-role
subjects:
-kind:ServiceAccount
name:nginx-ingress-serviceaccount
namespace:ingrcss-nginx
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:ClustcrRolcBinding
metadata:
name:nginx-ingress-clusterrole-nisa-binding
labels:
app.kubcrnctes.io/name:ingrcss-nginx
app.kubernetes.io/part-of:ingress-nginx
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:ClusterRole
name:nginx-ingress-clusterrole
subjects:
-kind:ServiceAccount
name:nginx-ingress-serviceaccount
namespace:ingress-nginx
apiVersion:extensions/vlbetal
kind:Deployment
metadata:
name:nginx-ingress-controller
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
spec:
replicas:2
selector:
matchLabels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
annotations:
prometheus.io/port:"10254”
prometheus.io/scrape:"true"
spec:
serviceAccountNamc:nginx-ingrcss-serviccaccount
containers:
-name:nginx-ingress-controller
image:siriuszg/nginx-ingress-controller:0.20.0
args:
-/nginx-ingress-controller
----default-backend-service=$(POD_NAMESPACE)/defau1t-
http-backend
----configmap=$(POD_NAMESPACE)/nginx-configuration
----tcp-services-configmap=S(POD_NAMESPACE)/tcp-services
----udp-services-configmap=$(POD_NAMESPACE)/udp-services
----pub:ish-service=$(PODNAMESPACE)/ingress-nginx
----annotations-prefix=nginx.ingress,kubernetes.io
securityContext:
capabilities:
drop:
-ALL
add:
-NET_BIND_SERVICE
#www-data->33
runAsUser:33
env:
-name:POD_NAME
valueFrom:
fieldRef:
fieldPath:metadata,name
-name:PODNAMESPACE
valueFrom:
fieldRef:
fieldPath:metadata,namespace
ports:
-name:http
containerPort:80
-name:https
containerPort:443
1ivenessProbe:
failureThreshold:3
httpGet:
path:/healthz
port:10254
scheme:HTTP
initialDelaySeconds:10
periodSeconds:10
successThreshold:1
timcoutScconds:1
readinessProbe:
failureThreshold:3
httpGet:
path:/hcalthz
port:10254
scheme:HTTP
periodSeconds:10
successThreshold:1
timeoutSeconds:1
查看pod是否已經(jīng)起來
kubectlgetpod-ningress-nginx
NAMEREADYSTATUSRESTARTSAGE
default-http-backend-cbd6d5994-hzJ911/1Running015h
這里其實是有問題的從yaml里可以看出會有兩個pod
gatdeploy查看一下
kubectlgetdeploy-ningress-nginx
NAMEREADYUP-TO-DATEAVAILABLEAGE
default-http-backend1/11115h
nginx-ingress-controller0/20015h
nginx-ingress-controller這個并沒有正確的交給pod來運行
/
通過以上流程圖可以看出deploy把任務交給rs,rs在分別啟動pod現(xiàn)在都看
不到pod問題應該在rs上
getrs
kubectlgetrs-ningress-nginx
NAMEDESIREDCURRENTREADYAGE
default-http-backend-cbd6d599411115h
nginx-ingress-control1er-57c8dd86d420015h
狀態(tài)不正確
通過describe查看一下詳情
kubectldescribers/nginx-ingress-controller_57c8dd86d4-ningress-
nginx
WarningFailedCreate49mreplicaset-controllerErrorcreating:pods
"nginx-ingress-controlIer-57c8dd86d4-97gl6risforbidden:Secur
ityContext.RunAsUserisforbidden
通過排查判斷是apiserver的參數(shù)問題
檢查apiserver配置文件:去除:-enable-adnission-plugins中的
SecurityContextDeny部分,分別重啟apiserver
/
get一下pod看起來了沒
kubectlgetpod-ningress-nginx-owide
NAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESS
GATESdefault-http-backend-cbd6d5994-9bkh81/1Running099s
172.17.82.910.167.130.210
nginx-ingress-controller-57c8dd86d4-p8dz91/1Running097s
172.17.71.810.167.130.206
通過curl來測試是否正常
測試默認返回404頁面的主機hllp-backend
curlhttp://172.17.82.9
defaultbackend-404
測試直接訪問nginx代理看是否會轉(zhuǎn)發(fā)到404
curlhttp://172.17.71.8
defaultbackend-404
更改部署方式
此刻問題來了通過yaml創(chuàng)建的deploy以及server來看好像并沒有把nginx端
口映射到宿主機上,那么我訪問宿主機ip就不會有任何返回,這里可以通過
hostport+DaemonSet天解決這個問題
修改yaml文件
1.修改nginx部署方式為DaemonSet
2.注釋replicas:1
3.增加hostNetwork:true在spec:段內(nèi)增加
4.增加hostPort在Ports段內(nèi)增加
kubectldelete-fingress,yaml#刪除重新創(chuàng)建
kubectlapply-fingress,yaml
附上修改后的yaml文件內(nèi)容
apiVersion:vl
kind:Namespace
metadata:
name:ingress-nginx
apiVersion:extensions/vlbetal
kind:Deployment
metadata:
name:default-http-backend
labels:
app.kubcrnctcs.io/name:dcfault-http-backend
app.kubernetes.io/part-of:ingress-nginx
namespace:ingress-nginx
spec:
replicas:1
selector:
matchLabels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
spec:
terminationGracePeriodSeconds:60
containers:
-name:default-http-backend
#Anyimageispermissibleaslongas:
....1.I.serve..40.pag.a./
....2.I.serve.20.o../health,endpoint
image:googlecontainer/defau11backend-amd64:1.5
1ivenessProbe:
httpGet:
path:/healthz
port:8080
scheme:HTTP
initialDelaySeconds:30
timeoutSeconds:5
ports:
-containerPort:8080
resources:
limits:
cpu:10m
memory:20Mi
requests:
cpu:10m
memory:20Mi
apiVersion:vl
kind:Service
metadata:
name:default-http-backend
namespace:ingress-nginx
labels:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
spec:
ports:
-port:80
targetPort:8080
selector:
app.kubernetes.io/name:default-http-backend
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:nginx-configuration
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:tcp-services
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
kind:ConfigMap
apiVersion:vl
metadata:
name:udp-services
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
apiVersion:vl
kind:ServiceAccount
metadata:
name:nginx-ingress-serviceaccount
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:ClusterRole
metadata:
name:nginx-ingress-clusterrole
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
rules:
-apiGroups:
MIf
resources:
-configmaps
-endpoints
-nodes
-pods
-secrets
verbs:
-list
-watch
-apiGroups:
resources:
-nodes
verbs:
-get
-apiGroups:
resources:
-services
verbs:
-get
-list
-watch
-apiGroups:
-"extensions
resources:
-ingresses
verbs:
~get
-list
-watch
-apiGroups:
resources:
-events
verbs:
-create
-patch
-apiGroups:
-"extensions'
resources:
-ingresses/status
verbs:
-update
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:Role
metadata:
name:nginx-ingress-role
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
rules:
-apiGroups:
nii
resources:
-configmaps
-pods
-secrets
-namespaces
verbs:
-get
-apiGroups:
MIf
resources:
-configmaps
resourceNames:
#Defaultsto"(election-id>Yingress-class>"
#Here:v<ingress-controller-leader>-<nginx>,'
#Thishastobeadaptedifyouchangeeitherparameter
#whenlaunchingthenginx-ingress-controller.
-"ingress-controller-leader-nginx”
verbs:
get
-update
-apiGroups:
nii
resources:
-configmaps
verbs:
-create
-apiGroups:
HII
resources:
-endpoints
verbs:
-get
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:RoleBinding
metadata:
name:nginx-ingress-role-nisa-binding
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:Role
name:nginx-ingress-role
subjects:
-kind:ServiceAccount
name:nginx-ingress-serviceaccount
namespace:ingress-nginx
apiVersion:rbac.authorization.k8s.io/vlbetal
kind:ClusterRoleBinding
metadata:
name:nginx-ingress-clusterrole-nisa-binding
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:ClusterRole
name:nginx-ingress-clusterrole
subjects:
-kind:ServiceAccount
name:nginx-ingress-serviceaccount
namespace:ingress-nginx
apiVersion:extensions/vlbetal
kind:DaemonSet
metadata:
name:nginx-ingress-controller
namespace:ingress-nginx
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
spec:
#replicas:1
selector:
matchLabels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/name:ingress-nginx
app.kubernetes.io/part-of:ingress-nginx
annotations:
prometheus.io/port:"10254”
prometheus.io/scrape:"true"
spec:
serviceAccountName:nginx-ingress-serviceaccount
hostNetwork:true
containers:
-name:nginx-ingress-controller
image:siriuszg/nginx-ingress-controller:0.20.0
args:
-/nginx-ingress-controller
----default-backend-service=$(POD_NAMESPACE)/default-
http-backend
----configmap=$(PODNAMESPACE)/nginx-configuration
----tcp-services-configmap=S(POD_NAMESPACE)/tcp-services
----udp-services-configmap=S(POD_NAMESPACE)/udp-services
----pub1ish-service=$(PODNAMESPACE)/ingress-nginx
----annotations-prefix=nginx.ingress,kubernetes.io
securityContext:
capabilities:
drop:
-ALL
add:
-NET_BIND_SERV1CE
#www-data->33
runAsUser:33
env:
name:P0D_NAME
valueFrom:
fieldRef:
fieldPath:metadata,name
-name:POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath:metadata,namespace
ports:
-name:http
containerPort:80
hostPort:80
-name:https
containerPort:443
hostPort:443
livenessProbe:
failureThreshold:3
httpGet:
path:/healthz
port:10254
scheme:HTTP
initialDelaySeconds:10
periodSeconds:10
success^hreshold:1
limeoutSeconds:1
readinessProbe:
failureThreshold:3
httpGet:
path:/healthz
port:10254
scheme:HTTP
periodSeconds:10
success^hreshold:1
timeoutSeconds:1
ingress部署參考文檔
kubernetesingressnginx
創(chuàng)建一個tomcat并用ingress7層代理
轉(zhuǎn)發(fā)
創(chuàng)建tomcat服務以及deploy
cattomcat-ingress,yaml
apiVersion:vl
kind:Service
meLadala:
name:tomcat
namespace:default
spec:
type:ClusterIP
selector:
app:tomcat
release:canary
ports:
-name:http
port:8080
targetPort:8080
apiVersion:apps/vl
kind:Deployment
metadata:
name:tomcat-deploy
spec:
replicas:1
selector:
matchLabels:
app:tomcat
release:canary
template:
metadata:
labels:
app:tomcat
release:canary
spec:
containers:
-name:tomcat
image:tomcat:7-alpine
ports:
-name:httpd
containerPort:8080
查看一下狀態(tài)
kubectlgetpodgreptomcat
tomcat-deploy-64b488b68-wk45q1/1Running029m
kubectlgetsvcgreptomcat
tomcatClusterIP10.0.0.1838080/TCP29m
創(chuàng)建ingress綁定
catingress-tomcat,yaml
apiVersion:extensions/vlbetal
kind:Ingress
metadata:
name:ingress-tomcat
namespace:default
annotations:
kubernets.io/ingress.class:”nginx"
spec:
rules:
-host:www.aa.con#用來解析的域名地址
http:
paths:
-path:
backend:
serviceNane:tomcat4集群服務的名字
servicePort:8080#集群服務開放的端口
訪問測試
curl-H"host:www.aa.com"http://10.167.130.206:80#IP地址為運行
ingress-nginx-controller的主機地址,因為只有運行了這個容器才會監(jiān)聽宿
主的80端口。
<!DOCTYPEhtml>
<htmllang=,,en',>
<head>
<title>ApacheTomcat/7.0.91</title>
可用命令查看ingress列表
kubectlgetingress
NAMEHOSTSADDRESSPORTSAGE
ingress-tomcatwww.aa.com8034m
kubectldescribeingressingress-tomcat
Name:ingress-tomcat
Namespace:default
Address:
Defaultbackend:default-http-backend:80:<none>)
Rules:
HostPathBackends
www.aa.com
tomcat:8080(<none>)
用ingress來負載代理tcp,udp請求
前面已經(jīng)展示了7層代理,那么4層代理比如mysql對3306端口代理怎么辦
呢?
ingress也可以做4層代理配置
具體配置如下
創(chuàng)建我們用來測試使用的mysql實例兩個
catmysql.yaml
apiVersion:vl
kind:Service
metadata:
name:mysql
namespace:default
spec:
type:ClusterIP
selector:
app:mysql
release:canary
ports:
-name:mysql
port:3306
targetPort:3306
apiVersion:apps/vl
kind:DaemonSet#每個node都運行一個pod,我就兩個node正好用來測試
負載效果
metadata:
name:mysql-daemonset
spec:
#replicas:1
selector:
matchLabels:
app:mysql
release:canary
template:
metadata:
labels:
app:mysql
release:canary
spec:
containers:
-name:mysql
image:mysql
env:
name:MYSQLROOT_PASSWORD#mysql鏡像必須的變量,不寫這個
變量mysql跑不起來
value:”nysql”
ports:
-name:mysql
containerPort:3306
kubectlapply-fmysql.yaml#部署mysqlpod
kubectlgetpod
mysql-daemonset
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物材料增強肌腱再生組織力學強度的策略
- 生物材料臨床應用中的個體化治療策略探討
- 生物制品穩(wěn)定性試驗與質(zhì)量風險管理結合
- 生物制品實時穩(wěn)定性試驗數(shù)據(jù)管理規(guī)范
- 生物制劑失應答后IBD的特殊人群用藥策略
- 建筑行業(yè)結構工程師面試問題集及答案
- 深度解析(2026)《GBT 19668.2-2017信息技術服務 監(jiān)理 第2部分:基礎設施工程監(jiān)理規(guī)范》
- 數(shù)字營銷部經(jīng)理面試題及答案
- 電信行業(yè)精算師面試題及解析
- 智能客服坐席主管面試題及答案解析
- 2025北京國文人力資源有限責任公司駐外文化和旅游機構職員招聘5人(第二期)筆試歷年參考題庫附帶答案詳解
- 黨建合作簽約協(xié)議書
- 裝配式部分包覆鋼-混凝土組合結構技術標準 DG-TJ08-2421-2023
- 2025年研發(fā)成果轉(zhuǎn)化與科技成果轉(zhuǎn)化環(huán)境研究報告
- (正式版)DB54∕T 0275-2023 《民用建筑節(jié)能技術標準》
- 電氣焊安全培訓課件
- 客戶開發(fā)與客戶維護課件
- STM32理論課件教學課件
- 測繪安全培訓課件圖片
- 嚴格電話使用管理辦法
- (2025年標準)簡單砌石墻協(xié)議書
評論
0/150
提交評論