91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes的詳細搭建過程

發布時間:2021-07-28 17:20:16 來源:億速云 閱讀:117 作者:chen 欄目:云計算

本篇內容主要講解“kubernetes的詳細搭建過程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“kubernetes的詳細搭建過程”吧!

環境說明:

2臺機器,167和168,系統都是centos6.5

167上面會跑etcd,flannel,kube-apiserver,kube-controller-manager,kube-scheduler,自己也充當minion,所以也會跑kube-proxy和kubelet  

168上只需要跑etcd,flannel,kube-proxy和kubelet,etcd和flannel是為了打通2臺機器的網絡

k8s是建立在docker之上的,所以docker是必須的

環境搭建

打通網絡

k8s還需要etcd和Flannel的支持,先下載這2個包,注意2臺機器都需要下載和執行

wget https://github.com/coreos/etcd/releases/download/v2.2.4/etcd-v2.2.4-linux-amd64.tar.gz
wget https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz

分別解壓,然后添加到環境變量

cd etcd-v2.2.4-linux-amd64/
cp etcd etcdctl /usr/bin/
cd flannel-0.5.5/
cp flanneld mk-docker-opts.sh /usr/bin

運行

# 167上運行
etcd -name infra0 -initial-advertise-peer-urls http://172.16.48.167:2380 -listen-peer-urls http://172.16.48.167:2380 -listen-client-urls http://172.16.48.167:2379,http://127.0.0.1:2379 -advertise-client-urls http://172.16.48.167:2379  -discovery https://discovery.etcd.io/322a6b06081be6d4e89fd6db941c4add --data-dir /usr/local/kubernete_test/flanneldata  >> /usr/local/kubernete_test/logs/etcd.log 2>&1 &

# 168上運行
etcd -name infra1 -initial-advertise-peer-urls http://203.130.48.168:2380 -listen-peer-urls http://203.130.48.168:2380 -listen-client-urls http://203.130.48.168:2379,http://127.0.0.1:2379 -advertise-client-urls http://203.130.48.168:2379  -discovery https://discovery.etcd.io/322a6b06081be6d4e89fd6db941c4add   --data-dir /usr/local/kubernete_test/flanneldata  >> /usr/local/kubernete_test/logs/etcd.log 2>&1 &

注意中間的-discovery參數,這是個url地址,我們可以通過訪問 https://discovery.etcd.io/new?size=2來獲得,size表示minion的數目,我們這里是2,2臺機器要用同一個url地址,如果訪問這個地址,會發現返回一坨json字符串,這個服務器我們也是可以自己搭建的

這樣就啟動成功了,然后我們可以在任意一臺機器上執行

etcdctl ls
etcdctl cluster-health

來確認已經成功啟動,如果有錯可以查看日志文件

tail -n 1000 -f /usr/local/kubernete_test/logs/etcd.log

然后在任一臺機器上執行

etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'

執行

[root@w ~]# etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/172.17.4.0-24
/coreos.com/network/subnets/172.17.13.0-24
[root@w ~]# etcdctl get /coreos.com/network/subnets/172.17.4.0-24
{"PublicIP":"203.130.48.168"}
[root@w ~]# etcdctl get /coreos.com/network/subnets/172.17.13.0-24
{"PublicIP":"203.130.48.167"}

可以看到167上的網段為172.17.4.13/24

168上的為172.17.14.0/24,我們后面建立的docker容器的IP就分別在這2個網段中

然后2臺機器上分別執行

flanneld >> /usr/local/kubernete_test/logs/flanneld.log 2>&1 &

在每個機器上執行: 

mk-docker-opts.sh -i
source /run/flannel/subnet.env
rm /var/run/docker.pid
ifconfig docker0 ${FLANNEL_SUBNET}

然后重啟docker

service docker restart

這樣2臺機器上的容器的網絡就打通了,后續可以看到效果

安裝和啟動k8s

wget https://github.com/kubernetes/kubernetes/releases/download/v1.2.0-alpha.6/kubernetes.tar.gz

然后各種解壓

tar zxvf kubernetes.tar.gz cd kubernetes/server
tar zxvf kubernetes-server-linux-amd64.tar.gz   # 這個是我們需要執行命令的包
cd kubernetes/server/bin/

復制命令到環境變量中,這里我只復制了kubectl

cp kubectl /usr/bin/

在167上執行 

./kube-apiserver --address=0.0.0.0  --insecure-port=8080 --service-cluster-ip-range='172.16.48.167/24' --log_dir=/usr/local/kubernete_test/logs/kube --kubelet_port=10250 --v=0 --logtostderr=false --etcd_servers=http://172.16.48.167:2379 --allow_privileged=false  >> /usr/local/kubernete_test/logs/kube-apiserver.log 2>&1 &

./kube-controller-manager  --v=0 --logtostderr=false --log_dir=/usr/local/kubernete_test/logs/kube --master=172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-controller-manager 2>&1 &

./kube-scheduler  --master='172.16.48.167:8080' --v=0  --log_dir=/usr/local/kubernete_test/logs/kube  >> /usr/local/kubernete_test/logs/kube-scheduler.log 2>&1 &

這樣就把master跑起來了,

[root@w ~]# kubectl get componentstatuses
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-0               Healthy   {"health": "true"}   
etcd-1               Healthy   {"health": "true"}

我們可以看到都很健康的在運行

然后我們就闊以愉快的在2臺機器上跑minion需要的程序了(注意167同時也是minion)

# 167
./kube-proxy  --logtostderr=false --v=0 --master=http://172.16.48.167:8080   >> /usr/local/kubernete_test/logs/kube-proxy.log 2>&1 &

./kubelet  --logtostderr=false --v=0 --allow-privileged=false  --log_dir=/usr/local/kubernete_test/logs/kube  --address=0.0.0.0  --port=10250  --hostname_override=172.16.48.167  --api_servers=http://172.16.48.167:8080   >> /usr/local/kubernete_test/logs/kube-kubelet.log 2>&1 &

# 168
./kube-proxy  --logtostderr=false --v=0 --master=http://172.16.48.167:8080   >> /usr/local/kubernete_test/logs/kube-proxy.log 2>&1 &

./kubelet  --logtostderr=false --v=0 --allow-privileged=false  --log_dir=/usr/local/kubernete_test/logs/kube  --address=0.0.0.0  --port=10250  --hostname_override=172.16.48.97  --api_servers=http://172.16.48.167:8080   >> /usr/local/kubernete_test/logs/kube-kubelet.log 2>&1 &

來確認啟動成功

[root@w ~]# kubectl get nodes
NAME            LABELS                                 STATUS    AGE
172.16.48.167   kubernetes.io/hostname=172.16.48.167   Ready     1d
172.16.48.168   kubernetes.io/hostname=172.16.48.168   Ready     18h

2個minion都是Ready

提交命令

k8s支持2種方式,一種是直接通過命令參數的方式,另一種是通過配置文件的方式,配置文件的話支持json和yaml,下面只講通過命令參數的方式

建立rc和pod

kubectl run nginx --image=nginx --port=80  --replicas=5

這樣就建立了一個rc和5個pod

通過以下命令可以查看

kubectl get rc,pods

如果我們手工把建立的pod刪掉,k8s會自動重新啟動一個,始終確保pod的數目為5

跨機器間的通信

我們分別在167和168上用docker ps來查看,會發現2臺機器上分別跑了一下nginx的容器,我們在2臺機器上隨意找一個容器進入,使用ip a來查看IP地址,會發現167上為172.17.13.0/24中,168為172.17.4.0/24中,我們分別ping對方的IP會發現是可以ping通的,說明網絡已經通了,如果宿主機可以連上外網的話,在容器中也是可以訪問外網的

如果我們不通過k8來啟動容器,而是直接通過docker來啟動容器,會發現啟動的容器IP端也是在我們上述2個IP段之內的,并且和k8啟動的容器的網絡是互通的

當然IP端隨機分配并且是內網的IP會給我們造成一些困擾

比如我們一般會這樣做:通過docker啟動容器,然后通過pipework來給其分配固定IP地址,既可以是內網IP也可以是外網IP,辣么,這樣的話k8s啟動的容器會和他們想通么

答案是通了一半,即通過k8s啟動的容器是可以訪問pipework設置的容器的內網IP和外網IP,但是反過來不行,pipework設置的容器是不能訪問k8s啟動的容器的,雖然是這樣,但是不影響我們一般的需求,因為我們一般通過k8s啟動的容器是web應用,通過pipework設置固定IP的是數據庫之類,剛好可以滿足從web應用訪問數據庫的需求

暴露service

kubectl expose rc nginx --port=80 --container-port=9090 --external-ip=x.x.x.168

port參數是容器的端口,因為nginx使用的80,所以這里必須是80

container-port和target-port是一個意思,指的是宿主機轉發的端口,可以隨意指定一個,也可以不指定

external-ip指的是對外暴露的ip地址,一般用公網IP地址,執行那個命令過后,我們就可以在公網上訪問了,但是這里有個問題就是這個IP地址必須是安裝了k8s的機器的IP,如果你隨便用一個IP是不能訪問的,這里也給應用上造成了不便

查看service

kubectl get svc

可以看到CLUSTER_IP和EXTERNAL_IP

到此,相信大家對“kubernetes的詳細搭建過程”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴东县| 独山县| 如皋市| 买车| 即墨市| 罗田县| 高台县| 延川县| 兴业县| 治县。| 大港区| 安岳县| 舟山市| 巴中市| 喀喇沁旗| 和龙市| 赤城县| 马尔康县| 侯马市| 鹤壁市| 繁峙县| 肇东市| 辽阳县| 荆门市| 宜良县| 越西县| 蒙山县| 玛曲县| 耿马| 博乐市| 灵寿县| 上虞市| 浦县| 台前县| 华池县| 安乡县| 普兰店市| 常熟市| 于田县| 武穴市| 荥阳市|