1.背景;
連城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!由于簡(jiǎn)化部署k8s 集群 ,公司的k8s 部署方案使用的是 kubeadm ,且跟進(jìn)線上線下維度進(jìn)行集群劃分,為何要使用kubeadm 主要有兩個(gè)原因:1.部署方便快捷,2.k8s節(jié)點(diǎn)擴(kuò)容方便? 3.部署難度降低;?
2.系統(tǒng)環(huán)境;
系統(tǒng)版本 | 內(nèi)核版本 | etcd? | 備注 |
CentOS Linux release 7.5.1804 | 3.10.0-862.14.4.el7.x86_64 | etcdctl version: 3.3.11 | |
3.相關(guān)組件版本;
kubeadmin 組件名稱 | 組件版本名稱 | 備注 |
k8s.gcr.io/kube-apiserver? | v1.13.4 | kube-apiserver 是 Kubernetes 最重要的核心組件之一,主要提供以下的功能
|
k8s.gcr.io/kube-controller-manager? | v1.13.4 | kube-scheduler 負(fù)責(zé)分配調(diào)度 Pod 到集群內(nèi)的節(jié)點(diǎn)上,它監(jiān)聽 kube-apiserver,查詢還未分配 Node 的 Pod,然后根據(jù)調(diào)度策略為這些 Pod 分配節(jié)點(diǎn)(更新 Pod 的? 調(diào)度器需要充分考慮諸多的因素:
|
k8s.gcr.io/kube-scheduler | v1.13.4 | Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 組成,是 Kubernetes 的大腦,它通過 apiserver 監(jiān)控整個(gè)集群的狀態(tài),并確保集群處于預(yù)期的工作狀態(tài)。 |
k8s.gcr.io/kube-proxy | v1.13.4 | 每臺(tái)機(jī)器上都運(yùn)行一個(gè) kube-proxy 服務(wù),它監(jiān)聽 API server 中 service 和 endpoint 的變化情況,并通過 iptables 等來為服務(wù)配置負(fù)載均衡(僅支持 TCP 和 UDP)。 kube-proxy 可以直接運(yùn)行在物理機(jī)上,也可以以 static pod 或者 daemonset 的方式運(yùn)行。 |
k8s.gcr.io/pause | 3.1 | Kubernetes為每個(gè)Pod都附屬了gcr.io/google_containers/pause:latest,這個(gè)容器只接管Pod的網(wǎng)絡(luò)信息,業(yè)務(wù)容器通過加入網(wǎng)絡(luò)容器的網(wǎng)絡(luò)來實(shí)現(xiàn)網(wǎng)絡(luò)共享。此容器隨著pod創(chuàng)建而創(chuàng)建,隨著Pod刪除而刪除,正如其名字“pause” 該容器是對(duì)業(yè)務(wù)pod的命名空間的解析。 |
k8s.gcr.io/coredns | 1.2.6 | DNS 是 Kubernetes 的核心功能之一,通過 kube-dns 或 CoreDNS 作為集群的必備擴(kuò)展來提供命名服務(wù)。 |
weaveworks/weave | 2.5.2 | Weave Net是一個(gè)多主機(jī)容器網(wǎng)絡(luò)方案,支持去中心化的控制平面,各個(gè)host上的wRouter間通過建立Full Mesh的TCP鏈接,并通過Gossip來同步控制信息。這種方式省去了集中式的K/V Store,能夠在一定程度上減低部署的復(fù)雜性, |
4.應(yīng)用實(shí)踐;
(1).集群已經(jīng)正常運(yùn)行如下所示;
2.查看deployment 配置;
apiVersion:?extensions/v1beta1? kind:?Deployment? metadata:? ??name:?nginx-dp spec:? ??selector: ????matchLabels: ??????app:?nginx-dp ??replicas:?1 ??template:? ????metadata:? ??????labels:? ????????app:?nginx-dp? ????spec:? ??????containers:? ????????-?name:?nginx? ??????????image:?nginx:alpine? ??????????ports:? ????????????-?containerPort:?803.查看ervice 配置;
apiVersion:?v1 kind:?Service metadata: ??name:?nginx-dp-cpf spec: ??type:?NodePort ??ports: ??-?nodePort:?30001 ????port:?80 ????targetPort:?80 ????protocol:?TCP ??selector: ????app:?nginx-dp4.查看生成endpoints?
5.查看service 規(guī)則;
6.查看由kube-proxy 生成的iptables 防火墻規(guī)則; (正常規(guī)則)
注意:
1.如果防火墻規(guī)則出現(xiàn) 類似如下規(guī)則:
? ? ? -A KUBE-EXTERNAL-SERVICES -p tcp -m comment --comment "default/nginx-dp-cpf: has no endpoints" -m addrtype --dst-type LOCAL -m tcp --dport 30001 -j REJECT --reject-with icmp-port-unreachable
? 2.解決辦法;
(1).net.ipv4.ip_forward?= 1? #系統(tǒng)內(nèi)核路由轉(zhuǎn)發(fā)功能
?(2).iptables -PFORWARD ACCEPT? #允許 iptables??FORWARD 鏈規(guī)則通過;
? ? ? ? ?(3).iptables -P?OUTPUT ACCEPT? #允許 iptables??OUTPUT?鏈規(guī)則通過;
? ? ? ? ?(4).檢查deployment?labels? 和 service?labels?設(shè)置是否關(guān)聯(lián)正確;
? ? ? ? ?(5).kubectl get endpoints? --show-labels? #注意此規(guī)則和防火墻規(guī)則匹配 若出現(xiàn)none 請(qǐng)檢查防火墻規(guī)則;
7.進(jìn)行功能測(cè)試 (k8s 集群內(nèi)進(jìn)行測(cè)試);
8.ingress 部署;
#master?端執(zhí)行; kubectl?apply?-f?https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml kubectl?apply?-f?https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml注意:?
? ? nodeSelector 字段 labels? 和 node labels 關(guān)聯(lián); 否則運(yùn)行ingres pod 出現(xiàn) peding 狀態(tài);
8.ingress 配置;
##配置yaml apiVersion:?extensions/v1beta1 kind:?Ingress metadata: ??name:?test-ingress spec: ??rules: ??-?http: ??????paths: ??????-?path:?/ ????????backend: ??????????serviceName:?test-nginx? ??????????servicePort:?80###查看創(chuàng)建?ingress;####測(cè)試訪問###
####基于域名多服務(wù)的 Ingress
路由到多服務(wù)的 Ingress 即根據(jù)請(qǐng)求路徑的不同轉(zhuǎn)發(fā)到不同的后端服務(wù)上,比如
www.breaklinux.com?->?10.109.21.77->?/test1?????s1:80 ??????????????????????????????????—>?/test2??????s2:80apiVersion:?extensions/v1beta1 kind:?Ingress metadata: ??name:?test spec: ??rules: ??-?host:?www.breaklinux.com ????http: ??????paths: ??????-?path:?/test1 ????????backend: ??????????serviceName:?test-nginx ??????????servicePort:?80 ??????-?path:?/test2 ????????backend: ??????????serviceName:?nginx-dp-test-01? ??????????servicePort:?80
###虛擬主機(jī) Ingress
apiVersion:?extensions/v1beta1 kind:?Ingress metadata: ??annotations: ????nginx.ingress.kubernetes.io/configuration-snippet:?"" ????nginx.ingress.kubernetes.io/proxy-body-size:?10240m ????nginx.ingress.kubernetes.io/proxy-read-timeout:?"36000" ????nginx.ingress.kubernetes.io/proxy-send-timeout:?"36000" ????nginx.ingress.kubernetes.io/rewrite-target:?/$1 ????nginx.ingress.kubernetes.io/ssl-redirect:?"false" ??name:?test-nginx-ingess spec: ??rules: ??-?host:?test-nginx-ingress.dev.k8s.chj.cloud ????http: ??????paths: ??????-?backend: ??????????serviceName:?test-nginx ??????????servicePort:?80? ????????path:?/?(.*)##基于虛擬主機(jī)訪問測(cè)試#
##因?yàn)闆]有dns 服務(wù)環(huán)境 綁定hosts 進(jìn)行測(cè)試
cat?/etc/hosts 10.109.21.77???www.breaklinux.com?test-nginx-ingress.dev.k8s.chj.cloud另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。