1、master: kubernetes 管理結(jié)點 2、apiserver : 提供接口服務(wù),用戶通過 apiserver 來管理整個容器集群平臺。API Server 負(fù)責(zé)和 etcd 交互(其他組件不會直接操作 etcd,只有 API Server 這么做),整個 kubernetes 集群的所有的交互都是以 API Server 為核心的。 3、scheduler kubernetes 調(diào)度服務(wù) 4、Replication Controllers 復(fù)制, 保證 pod 的高可用 Replication Controller 是 Kubernetes 系統(tǒng)中最有用的功能,實現(xiàn)復(fù)制多個 Pod 副本,往往一個應(yīng)用需要多個 Pod 來支撐,并且可以保證其復(fù)制的副本數(shù),即使副本所調(diào)度分配的宿主機(jī)出現(xiàn)異常,通過 Replication Controller 可以保證在其它宿主機(jī)啟用同等數(shù)量的 Pod,Replication Controller 可以通過 repcon 模板來創(chuàng)建多個 Pod 副本,同樣也可以直接復(fù)制已存在 Pod,需要通過 Label selector 來關(guān)聯(lián)。
在長島等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需設(shè)計網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),長島網(wǎng)站建設(shè)費用合理。5、minion : 真正運行容器 container 的物理機(jī), kubernets 中需要很多 minion 機(jī)器,來提供運算 6、container : 容器 ,可以運行服務(wù)和程序 7、 Pod :在 Kubernetes 系統(tǒng)中,調(diào)度的最小顆粒不是單純的容器,而是抽象成一個 Pod,Pod是一個可以被創(chuàng)建、銷毀、調(diào)度、管理的最小的部署單元;pod 中可以包括一個或一組容器 8、Kube_proxy 代理做端口轉(zhuǎn)發(fā),相當(dāng)于 LVS-NAT 模式中的負(fù)載調(diào)度器 Proxy 解決了同一宿主機(jī),相同服務(wù)端口沖突的問題,還提供了對外服務(wù)的能力,Proxy 后端使用了隨機(jī)、輪循負(fù)載均衡算法。
9、etcd etcd 存儲 kubernetes 的配置信息, 可以理解為是 k8s 的數(shù)據(jù)庫,存儲著 k8s 容器云平臺中所有節(jié)點、pods、網(wǎng)絡(luò)等信息。Linux 系統(tǒng)中/etc 目錄作用是存儲配置文件,所以 etcd (daemon) 是一個存儲配置文件的后臺服務(wù)。
10、Services : Services 是 Kubernetes 最外圍的單元,通過虛擬一個訪問 IP 及服務(wù)端口,可以訪問我們定義好的 Pod 資源,目前的版本是通過 iptables 的 nat 轉(zhuǎn)發(fā)來實現(xiàn),轉(zhuǎn)發(fā)的目標(biāo)端口為 Kube_proxy 生成的隨機(jī)端口。
11、Labels 標(biāo)簽 Labels 是用于區(qū)分 Pod、Service、Replication Controller 的 key/value 鍵值對,僅使用在 Pod、Service、 Replication Controller 之間的關(guān)系識別,但對這些單元本身進(jìn)行操作時得使用 name標(biāo)簽。 12、 Deployment Kubernetes Deployment 用于更新 Pod 和 Replica Set(下一代的 Replication Controller)的 方法,你可以在 Deployment 對象中只描述你所期望的理想狀態(tài)(預(yù)期的運行狀態(tài)),Deployment 控制器會將現(xiàn)在的實際狀態(tài)轉(zhuǎn)換成期望的狀態(tài)。例如,將所有的 webapp:v1.0.9 升級成 webapp:v1.1.0,只需創(chuàng)建一個 Deployment,Kubernetes 會按照 Deployment 自動進(jìn)行升級。通過 Deployment 可以用來創(chuàng)建新的資源。Deployment 可以幫我們實現(xiàn)無人值守的上線,大大降低我們的上線過程的復(fù)雜溝通、操作風(fēng)險。
13、Kubelet 命令 : Kubelet 和 Kube-proxy 都運行在 minion 節(jié)點上。 Kube-proxy 實現(xiàn) Kubernetes 網(wǎng)絡(luò)相關(guān)內(nèi)容。 Kubelet 命令管理 Pod、Pod 中容器及容器的鏡像和卷等信息。
各組件之間的關(guān)系1、Kubernetes的架構(gòu)由一個master和多個minion組成,master通過api提供服務(wù),接受kubectl的請求來調(diào)度管理整個集群; kubectl: 是 k8s 平臺的一個管理命令
2、Replication controller 定義了多個 pod 或者容器需要運行,如果當(dāng)前集群中運行的 pod 或容器達(dá)不到配置的數(shù)量,replication controller 會調(diào)度容器在多個 minion 上運行,保證集群中的 pod 數(shù)量
3、service 則定義真實對外提供的服務(wù),一個 service 會對應(yīng)后端運行的多個 container
4、Kubernetes 是個管理平臺,minion 上的kube-proxy 擁有提供真實服務(wù)公網(wǎng) IP,客戶端訪問kubernetes 中提供的服務(wù),是直接訪問到 kube-proxy 上的
5、在 Kubernetes 中 pod 是一個基本單元,一個 pod 可以是提供相同功能的多個 container,這些容器會被部署在同一個 minion 上;minion 是運行 Kubelet 中容器的物理機(jī);minion 接受 master的指令創(chuàng)建 pod 或者容器
搭建 Kubernetes 系統(tǒng)minion : 真正運行容器 container 的物理機(jī), kubernets 中需要很多 minion 機(jī)器,來提供運算
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é)點的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是一個存儲配置文件的后臺服務(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對外服務(wù)監(jiān)聽地址 #ETCD_MAX_SNAPSHOTS="5" #ETCD_MAX_WALS="5" ETCD_NAME="etcd" ? #修改etcd 節(jié)點名稱 #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對外客戶端的地址 [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é)點)
[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 來管理整個容器集群平臺 改: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é)點可以訪問 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 對應(yīng) 改:11 #FLANNEL_OPTIONS="" 為:11 FLANNEL_OPTIONS="--iface=ens33" #指定通信的物理網(wǎng)卡設(shè)置 etcd 網(wǎng)絡(luò) (存儲著 k8s 容器云平臺中所有節(jié)點、pods、網(wǎng)絡(luò)等信息。)
[root@etcd ~]# etcdctl mkdir /k8s/network ###創(chuàng)建一個目錄/k8s/network 用于存儲flannel 網(wǎng)絡(luò)信息 [root@etcd ~]# etcdctl set /k8s/network/config '{"Network": "88.255.0.0/16"}' ? {"Network": "88.255.0.0/16"} #賦一個字符串的值 '{"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 來存儲網(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é)點節(jié)點服務(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 啟動過程解析: (1)、從 etcd 中獲取出/k8s/network/config 的值 (2)、劃分 subnet 子網(wǎng),并在 etcd 中進(jìn)行注冊 (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 運行在 minion 節(jié)點上,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ī)名更加容易識別 # 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é)點節(jié)點服務(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運行在 minion 節(jié)點上。 代理做端口轉(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 運行在 minion 節(jié)點上,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 查看整個集群的運行狀態(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級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享標(biāo)題:搭建Kubernetes管理系統(tǒng)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article6/jdjog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、ChatGPT、網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容