久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Kubernetes集群聯邦怎么創建

163次閱讀
沒有評論

共計 8045 個字符,預計需要花費 21 分鐘才能閱讀完成。

這篇文章主要介紹“Kubernetes 集群聯邦怎么創建”,在日常操作中,相信很多人在 Kubernetes 集群聯邦怎么創建問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Kubernetes 集群聯邦怎么創建”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

準備域名

Federation 使用域名將不同子集群的同一個服務暴露出來,因此需要用戶提供一個可配置的域名。您可以通過萬網在阿里云上購買域名然后配置到您的 Federation 集群上。
以域名 spacexnice.xyz 為例,請按照購買域名文檔購買好域名。

配置域名

由于 Federation 在添加域名解析記錄的時候設置域名的 TTL 為 3 分鐘,域名層級為 5 級,因此需要到阿里云上對您剛購買的域名進行設置,使得該域名允許的最小 TTL 值小于 3 分鐘,同時域名層級大于 5.

進入云解析控制臺選擇您剛剛購買的域名,更多里面選 [升級] 或者[升級 VIP]

在彈出的頁面中更改最低 TTL 值為 60s, 子域名級別為 7 級,然后保存。

創建多個子集群

本示例創建的 Federation 集群包含兩個子集群,分別在杭州和北京 region。我們首先需要在這兩個 Region 創建出兩個可用的集群,集群創建步驟參考文檔

杭州集群

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-hangzhou.i-bp11ajet2v9o3tp0o2uw Ready master 3d v1.8.4
cn-hangzhou.i-bp15pt2475mgw64k72ma Ready master 3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ew Ready  none  3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ex Ready  none  3d v1.8.4
cn-hangzhou.i-bp1bpj58bdzdosdxxf82 Ready master 3d v1.8.4

北京集群

[root@iZze7z98ssc50pfzt6be9 ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-beijing.i-2ze7z98ssc50pfzt6be9 Ready master 3d v1.8.4
cn-beijing.i-2ze8hr6k03ccroopicd2 Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junslmihqz Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junyipunrf Ready  none  3d v1.8.4

部署 federation 控制平面

選擇杭州的子集群作為 Federation 的宿主集群,安裝 Federation 的控制平面。并配置好本地的 kubeconfig。通過運行 kubefed init 命令來初始化主集群。具體步驟如下:

安裝 kubefed

在 hangzhou 集群的 master 節點安裝 kubefed

[root@iZze7z98ssc50pfzt6be9 ~]# curl -L http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/bin/kubefed-1.8.4 -o kubefed
[root@iZze7z98ssc50pfzt6be9 ~]# sudo cp kubefed /usr/bin
[root@iZze7z98ssc50pfzt6be9 ~]# sudo chmod +x /usr/bin/kubefed
[root@iZze7z98ssc50pfzt6be9 ~]# kubefed version

配置 kubeconfig

在杭州集群 master 節點中配置 hangzhou,beijing 兩個集群的 context,讓改節點能通過切換 context 連接不同的子集群。要修改的內容如下:

修改 hangzhou 集群的 kubeconfig 的 cluster,user,context 的名字為 hangzhou

拷貝 beijing 集群 kubeconfig 中的 cluster,user,context 內容到 a)步驟中 kubeconfig,并修改相應的 cluster,user,context 名字為 beijing

為了方便初學者,我們提供了一個自動化的腳本,可以自動通過 ssh 從您指定的集群中下載 kubeconfig 配置文件,并合并成一個整體。
通過執行腳本來自動生成~/.kube/config 文件。腳本需要指明從哪些集群上下載 kubeconfig 文件并合并,格式如下 python context.py -H hangzhou:1.1.1.1,beijing:2.2.2.2  注意參數替換成你自己的集群 Region 和 IP,腳本可能會要求您輸入 ssh 的登錄密碼。

[root@iZbp1bpj58bdzdosdxxf82Z ~]# curl http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/tools/context.py   context.py
[root@iZbp1bpj58bdzdosdxxf82Z ~]# sudo pip install pyyaml
[root@iZbp1bpj58bdzdosdxxf82Z ~]# unset KUBECONFIG
[root@iZbp1bpj58bdzdosdxxf82Z ~]# python context.py -H ${HOST}
Info: host, hangzhou:118.31.177.21,beijing:47.95.96.234 .
Info: file /root/.kube/config successfully generated.

配置結果如下:

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
 hangzhou kubernetes-hangzhou kubernetes-admin-hangzhou
* beijing kubernetes-beijing kubernetes-admin-beijing

配置 alidns.yaml 文件

zones 填寫您前面申請的域名,注意以點號結尾。并且替換您的 accesskeyid 和 accesskeysecret.

cat  alidns.yaml  EOF
[Global]
access-key-id =  Your-key-id 
access-key-secret =  Your-key-secret 
zones = spacexnice.xyz.
EOF

初始化控制 federation 平面

通過本條命令初始化 federation 控制平面,參數如下: 
 kubefed init federation \ #  聯邦的名字
 --host-cluster-context=hangzhou \ #  主集群的 context 名字
 --dns-provider= alidns  \ # DNS 服務提供商
 --dns-zone-name= spacexnice.xyz.  \ #  前面注冊好的域名,必須以. 結束
 --dns-provider-config= alidns.yaml  \ # alidns 配置文件
 --image= registry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce  \ # hyperkube 鏡像
 --etcd-image= registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11  \ #etcd  鏡像
 --etcd-persistent-storage=false #  關閉 etcd 持久存儲
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed init federation \
 --host-cluster-context=hangzhou \
 --dns-provider= alidns  \
 --dns-zone-name= spacexnice.xyz.  \
 --dns-provider-config= alidns.yaml  \
 --image= registry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce  \
 --etcd-image= registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11  \
 --etcd-persistent-storage=false
Creating a namespace federation-system for federation system components... done
Creating federation control plane service..... done
Creating federation control plane objects (credentials, persistent volume claim)... done
Creating federation component deployments... done
Updating kubeconfig... done
Waiting for federation control plane to come up..................................................................................................................................................... done
Federation API server is running at: 120.55.196.1

添加集群至 federation

目前為止您已經成功的初始化好了 Federation 的控制平面。接下來需要將各個子集群加入到 Federation 集群中。

添加 hangzhou 集群

命令行參數解析
 kubefed join hangzhou \ # 加入聯邦的集群命名名字
 --context=federation \ # 聯邦的 context
 --cluster-context=hangzhou \ # 要添加集群的 context
 --host-cluster-context=hangzhou # 主集群的 context
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed join hangzhou \
 --context=federation \
 --cluster-context=hangzhou \
 --host-cluster-context=hangzhou
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME STATUS AGE
hangzhou Ready 28s

添加 beijing 集群

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed join beijing \
 --context=federation \
 --cluster-context=beijing \
 --host-cluster-context=hangzhou
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME STATUS AGE
hangzhou Ready 4m
beijing Ready 59s

后面介紹下集群查詢,移除集群,刪除聯邦等命令

集群查詢

查詢注冊到 Federation 的 kubernetes 集群列表

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME STATUS AGE
hangzhou Ready 4m
beijing Ready 59s

移除集群

移除 beijing 集群

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed unjoin beijing --host-cluster-context=hangzhou --context=federation
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get clusters --context=federation
NAME STATUS AGE
hangzhou Ready 1d

刪除集群聯邦

集群聯邦控制平面的刪除功能還在開發中,目前可以通過刪除 namespace federation-system 的方法來清理(注意 pv 不會刪除)。命令在 host-cluster-context 上執行。

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl delete ns federation-system

創建服務

集群聯邦支持以下聯邦資源,這些資源會自動在所有注冊的 kubernetes 集群中創建.

Federated ConfigMap

Federated Service

Federated DaemonSet

Federated Deployment

Federated Ingress

Federated Namespaces

Federated ReplicaSets

Federated Secrets

Federated Events(僅存在 federation 控制平面)

創建 service

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl run nginx --image nginx --context=federation
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl expose deploy nginx --port 80 --target-port 80 --type LoadBalancer --context=federation
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get svc --context=federation

您還可以通過 kubectl scale deploy nginx –replicas=3 –context=federation 來擴展 nginx 副本,然后觀察 nginx 應用在各個子集群中的分布情況。

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --context=beijing
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --context=hangzhou

創建 deployment

[root@iZbp1bpj58bdzdosdxxf82Z ~]# cat deployment-nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: nginx-deployment
spec:
 replicas: 3
 template:
 metadata:
 labels:
 app: nginx
 spec:
 containers:
 - name: nginx
 image: nginx:1.7.9
 ports:
 - containerPort: 80
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl create -f deployment-nginx.yaml --context=federation

查看 federation service

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl describe svc nginx --context=federation
Name: nginx
Namespace: default
Labels: app=nginx
Annotations: federation.kubernetes.io/service-ingresses={items :[{ cluster : hangzhou , items :[{ ip : 120.55.149.69}]},{cluster : shanghai , items :[{ ip : 139.196.70.146}]}]}
Selector: app=nginx
Type: LoadBalancer
LoadBalancer Ingress: 120.55.149.69, 139.196.70.146
Port: http 80/TCP
Endpoints:  none 
Session Affinity: None
Events:  none

通過域名訪問服務:

[root@iZbp1bpj58bdzdosdxxf82Z ~]# curl nginx.default.fed.svc.spacexnice.xyz
 !DOCTYPE html 
 html 
 head 
 title Welcome to nginx! /title 
 style 
 body {
 width: 35em;
 margin: 0 auto;
 font-family: Tahoma, Verdana, Arial, sans-serif;
 }
 /style 
 /head 
 body 
 h2 Welcome to nginx! /h2 
 p If you see this page, the nginx web server is successfully installed and
working. Further configuration is required. /p 
 p For online documentation and support please refer to
 a href= http://nginx.org/ nginx.org /a . br/ 
Commercial support is available at
 a href= http://nginx.com/ nginx.com /a . /p 
 p em Thank you for using nginx. /em /p 
 /body 
 /html

查看云解析 dns 的 record 記錄

我們可以在阿里云云解析控制臺看見剛剛添加的 nginx 的 dns 記錄。

到此,關于“Kubernetes 集群聯邦怎么創建”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計8045字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 玛纳斯县| 钟祥市| 汽车| 清河县| 陕西省| 永修县| 湖州市| 克山县| 敦化市| 乌兰浩特市| 安塞县| 佛山市| 清徐县| 广南县| 安阳市| 襄垣县| 武胜县| 沭阳县| 金沙县| 崇礼县| 潜江市| 宜兰市| 繁峙县| 阜康市| 济源市| 昌宁县| 礼泉县| 黑龙江省| 太谷县| 二手房| 济阳县| 五莲县| 喀什市| 前郭尔| 石首市| 肥城市| 凤山县| 龙游县| 微山县| 察哈| 库车县|