1、master: kubernetes 管理結(jié)點(diǎn) 2、apiserver : 提供接口服務(wù),用戶通過 apiserver 來(lái)管理整個(gè)容器集群平臺(tái)。API Server 負(fù)責(zé)和 etcd 交互(其他組件不會(huì)直接操作 etcd,只有 API Server 這么做),整個(gè) kubernetes 集群的所有的交互都是以 API Server 為核心的。 3、scheduler kubernetes 調(diào)度服務(wù) 4、Replication Controllers 復(fù)制, 保證 pod 的高可用 Replication Controller 是 Kubernetes 系統(tǒng)中最有用的功能,實(shí)現(xiàn)復(fù)制多個(gè) Pod 副本,往往一個(gè)應(yīng)用需要多個(gè) Pod 來(lái)支撐,并且可以保證其復(fù)制的副本數(shù),即使副本所調(diào)度分配的宿主機(jī)出現(xiàn)異常,通過 Replication Controller 可以保證在其它宿主機(jī)啟用同等數(shù)量的 Pod,Replication Controller 可以通過 repcon 模板來(lái)創(chuàng)建多個(gè) Pod 副本,同樣也可以直接復(fù)制已存在 Pod,需要通過 Label selector 來(lái)關(guān)聯(lián)。
在長(zhǎng)島等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站建設(shè),長(zhǎng)島網(wǎng)站建設(shè)費(fèi)用合理。5、minion : 真正運(yùn)行容器 container 的物理機(jī), kubernets 中需要很多 minion 機(jī)器,來(lái)提供運(yùn)算 6、container : 容器 ,可以運(yùn)行服務(wù)和程序 7、 Pod :在 Kubernetes 系統(tǒng)中,調(diào)度的最小顆粒不是單純的容器,而是抽象成一個(gè) Pod,Pod是一個(gè)可以被創(chuàng)建、銷毀、調(diào)度、管理的最小的部署單元;pod 中可以包括一個(gè)或一組容器 8、Kube_proxy 代理做端口轉(zhuǎn)發(fā),相當(dāng)于 LVS-NAT 模式中的負(fù)載調(diào)度器 Proxy 解決了同一宿主機(jī),相同服務(wù)端口沖突的問題,還提供了對(duì)外服務(wù)的能力,Proxy 后端使用了隨機(jī)、輪循負(fù)載均衡算法。
9、etcd etcd 存儲(chǔ) kubernetes 的配置信息, 可以理解為是 k8s 的數(shù)據(jù)庫(kù),存儲(chǔ)著 k8s 容器云平臺(tái)中所有節(jié)點(diǎn)、pods、網(wǎng)絡(luò)等信息。Linux 系統(tǒng)中/etc 目錄作用是存儲(chǔ)配置文件,所以 etcd (daemon) 是一個(gè)存儲(chǔ)配置文件的后臺(tái)服務(wù)。
10、Services : Services 是 Kubernetes 最外圍的單元,通過虛擬一個(gè)訪問 IP 及服務(wù)端口,可以訪問我們定義好的 Pod 資源,目前的版本是通過 iptables 的 nat 轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn),轉(zhuǎn)發(fā)的目標(biāo)端口為 Kube_proxy 生成的隨機(jī)端口。
11、Labels 標(biāo)簽 Labels 是用于區(qū)分 Pod、Service、Replication Controller 的 key/value 鍵值對(duì),僅使用在 Pod、Service、 Replication Controller 之間的關(guān)系識(shí)別,但對(duì)這些單元本身進(jìn)行操作時(shí)得使用 name標(biāo)簽。 12、 Deployment Kubernetes Deployment 用于更新 Pod 和 Replica Set(下一代的 Replication Controller)的 方法,你可以在 Deployment 對(duì)象中只描述你所期望的理想狀態(tài)(預(yù)期的運(yùn)行狀態(tài)),Deployment 控制器會(huì)將現(xiàn)在的實(shí)際狀態(tài)轉(zhuǎn)換成期望的狀態(tài)。例如,將所有的 webapp:v1.0.9 升級(jí)成 webapp:v1.1.0,只需創(chuàng)建一個(gè) Deployment,Kubernetes 會(huì)按照 Deployment 自動(dòng)進(jìn)行升級(jí)。通過 Deployment 可以用來(lái)創(chuàng)建新的資源。Deployment 可以幫我們實(shí)現(xiàn)無(wú)人值守的上線,大大降低我們的上線過程的復(fù)雜溝通、操作風(fēng)險(xiǎn)。
13、Kubelet 命令 : Kubelet 和 Kube-proxy 都運(yùn)行在 minion 節(jié)點(diǎn)上。 Kube-proxy 實(shí)現(xiàn) Kubernetes 網(wǎng)絡(luò)相關(guān)內(nèi)容。 Kubelet 命令管理 Pod、Pod 中容器及容器的鏡像和卷等信息。
各組件之間的關(guān)系1、Kubernetes的架構(gòu)由一個(gè)master和多個(gè)minion組成,master通過api提供服務(wù),接受kubectl的請(qǐng)求來(lái)調(diào)度管理整個(gè)集群; kubectl: 是 k8s 平臺(tái)的一個(gè)管理命令
2、Replication controller 定義了多個(gè) pod 或者容器需要運(yùn)行,如果當(dāng)前集群中運(yùn)行的 pod 或容器達(dá)不到配置的數(shù)量,replication controller 會(huì)調(diào)度容器在多個(gè) minion 上運(yùn)行,保證集群中的 pod 數(shù)量
3、service 則定義真實(shí)對(duì)外提供的服務(wù),一個(gè) service 會(huì)對(duì)應(yīng)后端運(yùn)行的多個(gè) container
4、Kubernetes 是個(gè)管理平臺(tái),minion 上的kube-proxy 擁有提供真實(shí)服務(wù)公網(wǎng) IP,客戶端訪問kubernetes 中提供的服務(wù),是直接訪問到 kube-proxy 上的
5、在 Kubernetes 中 pod 是一個(gè)基本單元,一個(gè) pod 可以是提供相同功能的多個(gè) container,這些容器會(huì)被部署在同一個(gè) minion 上;minion 是運(yùn)行 Kubelet 中容器的物理機(jī);minion 接受 master的指令創(chuàng)建 pod 或者容器
搭建 Kubernetes 系統(tǒng)minion : 真正運(yùn)行容器 container 的物理機(jī), kubernets 中需要很多 minion 機(jī)器,來(lái)提供運(yùn)算
ip地址 | 主機(jī)名 | 系統(tǒng) |
---|---|---|
192.168.88.132 | master | centos7.6 4G4核 |
192.168.88.133 | etcd | centos7.6 4G4核 |
192.168.88.134 | minion1 | centos7.6 2G4核 |
192.168.88.135 | minion2 | centos7.6 2G4核 |
[root@master ~]# yum install -y kubernetes flannel ntp [root@etcd ~]# yum install -y kubernetes etcd flannel ntp [root@minion1 ~]# yum install -y kubernetes flannel ntp [root@minion2 ~]# yum install -y kubernetes flannel ntp
###修改所有節(jié)點(diǎn)的hosts文件 cat /etc/hosts 192.168.88.132 master 192.168.88.133 etcd 192.168.88.134 minion1 192.168.88.135 minion2
配置 etcd(etcd是一個(gè)存儲(chǔ)配置文件的后臺(tái)服務(wù))cat /etc/etcd/etcd.conf #[Member] #ETCD_CORS="" ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #ETCD_WAL_DIR="" #ETCD_LISTEN_PEER_URLS="http://localhost:2380" ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.88.133:2379" ? #增加修改etcd對(duì)外服務(wù)監(jiān)聽地址 #ETCD_MAX_SNAPSHOTS="5" #ETCD_MAX_WALS="5" ETCD_NAME="etcd" ? #修改etcd 節(jié)點(diǎn)名稱 #ETCD_SNAPSHOT_COUNT="100000" #ETCD_HEARTBEAT_INTERVAL="100" #ETCD_ELECTION_TIMEOUT="1000" #ETCD_QUOTA_BACKEND_BYTES="0" #ETCD_MAX_REQUEST_BYTES="1572864" #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" # #[Clustering] #ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.88.133:2379" #修改etcd對(duì)外客戶端的地址 [root@etcd ~]# vim /etc/etcd/etcd.conf [root@etcd ~]# systemctl start etcd [root@etcd ~]# systemctl status etcd [root@etcd ~]# netstat -antup | grep 2379 tcp ? ? ? 0 ? ? 0 192.168.88.133:2379 ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? 47843/etcd ? ? ? ? ? tcp ? ? ? 0 ? ? 0 192.168.88.133:2379 ? ? 192.168.88.133:34680 ? ESTABLISHED 47843/etcd ? ? ? ? ? tcp ? ? ? 0 ? ? 0 192.168.88.133:34680 ? 192.168.88.133:2379 ? ? ESTABLISHED 47843/etc [root@etcd ~]# etcdctl member list 8e9e05c52164694d: name=etcd peerURLs=http://localhost:2380 clientURLs=http://192.168.88.133:2379 isLeader=true配置 master(kubernetes 管理結(jié)點(diǎn))
[root@master ~]# tail -5 /etc/kubernetes/config ? ? ##更改master的ip # Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="--allow-privileged=false" ? # How the controller-manager, scheduler, and proxy find the apiserver KUBE_MASTER="--master=http://192.168.88.132:8080" ? ####修改最后一行master的監(jiān)聽的地址 ? [root@master ~]# vim /etc/kubernetes/apiserver ###提供接口服務(wù),用戶通過 apiserver 來(lái)管理整個(gè)容器集群平臺(tái) 改:8 KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" ? 為:8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ? ###修改為監(jiān)聽所有端口 改:17 KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" 為:17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.88.133:2379" ##設(shè)定etcd的服務(wù)地址 改:23 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" 為:23 KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit" ? #允許所有節(jié)點(diǎn)可以訪問 apiserver ? [root@master ~]# tail -5 /etc/kubernetes/scheduler ? #scheduler是kubernetes 調(diào)度服務(wù) # default config should be adequate # Add your own! KUBE_SCHEDULER_ARGS="0.0.0.0" #改 scheduler 監(jiān)聽到的地址為:0.0.0.0,默認(rèn)是 127.0.0.1 [root@master ~]# vim /etc/sysconfig/flanneld 改:4 FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379" 為:4 FLANNEL_ETCD_ENDPOINTS="http://192.168.88.133:2379" 改:8 FLANNEL_ETCD_PREFIX="/atomic.io/network" 為:8 FLANNEL_ETCD_PREFIX="/k8s/network" #其中/k8s/network 與上面 etcd 中的 network 對(duì)應(yīng) 改:11 #FLANNEL_OPTIONS="" 為:11 FLANNEL_OPTIONS="--iface=ens33" #指定通信的物理網(wǎng)卡設(shè)置 etcd 網(wǎng)絡(luò) (存儲(chǔ)著 k8s 容器云平臺(tái)中所有節(jié)點(diǎn)、pods、網(wǎng)絡(luò)等信息。)
[root@etcd ~]# etcdctl mkdir /k8s/network ###創(chuàng)建一個(gè)目錄/k8s/network 用于存儲(chǔ)flannel 網(wǎng)絡(luò)信息 [root@etcd ~]# etcdctl set /k8s/network/config '{"Network": "88.255.0.0/16"}' ? {"Network": "88.255.0.0/16"} #賦一個(gè)字符串的值 '{"Network": "88.255.0.0/16"}' [root@etcd ~]# etcdctl get /k8s/network/config {"Network": "88.255.0.0/16"} [root@etcd ~]# vim /etc/sysconfig/flanneld #flanneld,負(fù)責(zé)在提前配置好的地址空間中分配子網(wǎng)租約,F(xiàn)lannel 使用 etcd 來(lái)存儲(chǔ)網(wǎng)絡(luò)配置 # Flanneld configuration options ? # etcd url location. Point this to the server where etcd runs FLANNEL_ETCD_ENDPOINTS="http://192.168.88.133:2379" # etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_PREFIX="/k8s/network" # Any additional options that you want to pass FLANNEL_OPTIONS="--iface=ens33" ##指定通信的物理網(wǎng)卡 [root@etcd ~]# vim /etc/sysconfig/flanneld [root@etcd ~]# vim /etc/sysconfig/flanneld [root@etcd ~]# systemctl restart flanneld [root@etcd ~]# systemctl enable flanneld Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service. [root@etcd ~]# systemctl status flanneld ● flanneld.service - Flanneld overlay address etcd agent ? Loaded: loaded (/usr/lib/systemd/system/flanneld.service; enabled; vendor preset: disabled) ? Active: active (running) since Fri 2022-12-02 02:06:21 EST; 7s ago Main PID: 48089 (flanneld) ? CGroup: /system.slice/flanneld.service ? ? ? ? ? └─48089 /usr/bin/flanneld -etcd-endpoints=http://192.168.88.133:2379 -etcd-prefix=/k8s/network --iface=ens33 [root@etcd ~]# ifconfig ens33: flags=4163配置 minion1 節(jié)點(diǎn)節(jié)點(diǎn)服務(wù)器mtu 1500 ? ? ? inet 192.168.88.133 netmask 255.255.255.0 broadcast 192.168.88.255 ? ? ? inet6 fe80::250:56ff:fe2b:5af0 prefixlen 64 scopeid 0x20 ether 00:50:56:2b:5a:f0 txqueuelen 1000 (Ethernet) ? ? ? RX packets 80067 bytes 107620683 (102.6 MiB) ? ? ? RX errors 0 dropped 0 overruns 0 frame 0 ? ? ? TX packets 22599 bytes 1698563 (1.6 MiB) ? ? ? TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ? flannel0: flags=4305 mtu 1472 ? ? ? inet 88.255.62.0 netmask 255.255.0.0 destination 88.255.62.0 ? ? ? inet6 fe80::447c:58ae:e12d:91b8 prefixlen 64 scopeid 0x20 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC) ? ? ? RX packets 0 bytes 0 (0.0 B) ? ? ? RX errors 0 dropped 0 overruns 0 frame 0 ? ? ? TX packets 3 bytes 144 (144.0 B) ? ? ? TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 flannel 啟動(dòng)過程解析: (1)、從 etcd 中獲取出/k8s/network/config 的值 (2)、劃分 subnet 子網(wǎng),并在 etcd 中進(jìn)行注冊(cè) (3)、將子網(wǎng)信息記錄到/run/flannel/subnet.env 中 [root@etcd ~]# cat /run/flannel/subnet.env FLANNEL_NETWORK=88.255.0.0/16 FLANNEL_SUBNET=88.255.62.1/24 FLANNEL_MTU=1472 FLANNEL_IPMASQ=false
[root@minion1 ~]# vim /etc/sysconfig/flanneld # Flanneld configuration options ? # etcd url location. Point this to the server where etcd runs FLANNEL_ETCD_ENDPOINTS="http://192.168.88.133:2379" # etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_PREFIX="/k8s/network" # Any additional options that you want to pass FLANNEL_OPTIONS="--iface=ens33" [root@minion1 ~]# vim /etc/kubernetes/config ? [root@minion1 ~]# tail -5 /etc/kubernetes/config ? # Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver KUBE_MASTER="--master=http://192.168.88.132:8080" ###修改master的路徑 ? [root@minion1 ~]# vim /etc/kubernetes/kubelet #Kubelet 運(yùn)行在 minion 節(jié)點(diǎn)上,Kubelet 組件管理 Pod、Pod 中容器及容器的鏡像和卷等信息 # kubernetes kubelet (minion) config # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces) KUBELET_ADDRESS="--address=0.0.0.0" ? #監(jiān)聽所有端口 # The port for the info server to serve on # KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname KUBELET_HOSTNAME="--hostname-override=minion1" ##更改成自己的主機(jī)名更加容易識(shí)別 # location of the api-server KUBELET_API_SERVER="--api-servers=http://192.168.88.132:8080" ###更改api的路徑 # pod infrastructure container KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" # Add your own! KUBELET_ARGS="" [root@minion1 ~]# systemctl restart flanneld kube-proxy kubelet docker [root@minion1 ~]# systemctl enable flanneld kube-proxy kubelet docker [root@minion1 ~]# ifconfig docker0: flags=4099配置 minion2 節(jié)點(diǎn)節(jié)點(diǎn)服務(wù)器mtu 1500 ? ? ? inet 88.255.5.1 netmask 255.255.255.0 broadcast 0.0.0.0 ? ? ? ether 02:42:58:b6:2a:8f txqueuelen 0 (Ethernet) ? ? ? RX packets 0 bytes 0 (0.0 B) ? ? ? RX errors 0 dropped 0 overruns 0 frame 0 ? ? ? TX packets 0 bytes 0 (0.0 B) ? ? ? TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@minion1 ~]# netstat -antup | grep proxy tcp ? ? ? 0 ? ? 0 127.0.0.1:10249 ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? 46200/kube-proxy ? ? ? ?
[root@minion1 ~]# scp /etc/kubernetes/config 192.168.88.135:/etc/kubernetes/ [root@minion1 ~]# scp /etc/kubernetes/proxy 192.168.88.135:/etc/kubernetes/ #Kube-proxy運(yùn)行在 minion 節(jié)點(diǎn)上。 代理做端口轉(zhuǎn)發(fā),相當(dāng)于 LVS-NAT 模式中的負(fù)載調(diào)度器 [root@minion2 ~]# systemctl start kube-proxy [root@minion2 ~]# systemctl enable kube-proxy [root@minion1 ~]# scp /etc/kubernetes/kubelet 192.168.88.135:/etc/kubernetes/ #Kubelet 運(yùn)行在 minion 節(jié)點(diǎn)上,Kubelet 組件管理 Pod、Pod 中容器及容器的鏡像和卷等信息 [root@minion2 ~]# vim /etc/kubernetes/kubelet 改:KUBELET_HOSTNAME="--hostname-override=minion2" [root@minion2 ~]# systemctl restart kubelet [root@minion2 ~]# systemctl enable kubelet [root@minion2 ~]# systemctl restart flanneld kube-proxy kubelet docker [root@minion2 ~]# systemctl enable flanneld kube-proxy kubelet docker [root@minion2 ~]# ifconfig docker0: flags=4099mtu 1500 ? ? ? inet 88.255.100.1 netmask 255.255.255.0 broadcast 0.0.0.0 ? ? ? ether 02:42:80:93:b7:38 txqueuelen 0 (Ethernet) ? ? ? RX packets 0 bytes 0 (0.0 B) ? ? ? RX errors 0 dropped 0 overruns 0 frame 0 ? ? ? TX packets 0 bytes 0 (0.0 B) ? ? ? TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@minion2 ~]# netstat -antup | grep proxy tcp ? ? ? 0 ? ? 0 127.0.0.1:10249 ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? 51485/kube-proxy ? ? tcp ? ? ? 0 ? ? 0 192.168.88.135:57952 ? 192.168.88.132:8080 ? ? ESTABLISHED 51485/kube-proxy ? ? tcp ? ? ? 0 ? ? 0 192.168.88.135:57954 ? 192.168.88.132:8080 ? ? ESTABLISHED 51485/kube-proxy ?
登錄 master 查看整個(gè)集群的運(yùn)行狀態(tài): [root@master ~]# kubectl get nodes NAME STATUS AGE minion1 Ready 6m minion2 Ready 3s
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享標(biāo)題:搭建Kubernetes管理系統(tǒng)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article6/jdjog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、ChatGPT、網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容