日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu18.04搭建 kubernetes(k8s)集群

發(fā)布時(shí)間:2024/1/23 Ubuntu 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu18.04搭建 kubernetes(k8s)集群 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

???這里介紹使用kubeadm安裝k8s集群,因?yàn)檫@種搭建方式需要訪(fǎng)問(wèn)grc.io(https://cloud.google.com/container-registry/)(國(guó)內(nèi)被墻了)下載對(duì)應(yīng)的image,所以需要確保自己能訪(fǎng)問(wèn)該網(wǎng)站???

???即使網(wǎng)絡(luò)不能訪(fǎng)問(wèn),也有折中的解決辦法,具體請(qǐng)看詳細(xì)安裝步驟???

安裝前準(zhǔn)備:

  • 關(guān)閉iptables/ufw:? service ufw disable
  • 關(guān)閉swap:? swapoff? -a
  • Centos還需要關(guān)閉SELinux/firewalld

下面使用kubeadm來(lái)創(chuàng)建k8s cluster
1. 所有主機(jī)節(jié)點(diǎn)上都需要安裝docker

?

# sudo apt-get update # sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # sudo apt-key fingerprint 0EBFCD88 output: pub rsa4096 2017-02-22 [SCEA]9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]# sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable" # sudo apt-get update # sudo apt-get install docker-ce docker-ce-cli containerd.io

?

?

其他操作系統(tǒng)參考官方文檔: https://docs.docker.com/install/linux/docker-ce/ubuntu/


2. config /etc/hostname,config every node and hostname

修改主機(jī)名,規(guī)劃好master和node

修改/etc/hostname文件來(lái)永久修改hostname

$?sudo hostnamectl set-hostname??k8s-nodex


3. (獨(dú)立安裝?kubectl,可以跳過(guò)本部選擇在步驟4中一起安裝)在所有節(jié)點(diǎn)上安裝 kubectl

?

# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl # curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt #獲取當(dāng)前穩(wěn)定版本 # curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.1/bin/linux/amd64/kubectl #版本號(hào)根據(jù)需要可自行修改 # chmod +x ./kubectl # sudo mv ./kubectl /usr/local/bin/kubectl # source <(kubectl completion bash)###ubuntu版本如果支持快捷安裝可以執(zhí)行以下命令來(lái)安裝### # sudo snap install kubectl --classi

?

?
4. 在所有節(jié)點(diǎn)上安裝??kubectl kubelet kubeadm

?

# apt-get update && apt-get install -y apt-transport-https # curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - # cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF # apt-get update # apt-get install -y kubectl kubelet kubeadm國(guó)內(nèi)請(qǐng)使用aliyun源: # sudo apt-get update && apt-get install -y apt-transport-https # sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - # sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF # sudo apt-get update # apt-get install -y kubectl kubelet kubeadm

?

?

5. 初始化master節(jié)點(diǎn)

???

Kubenetes默認(rèn)Registries地址是k8s.gcr.io,很明顯,在國(guó)內(nèi)并不能訪(fǎng)問(wèn)gcr.io,因此在kubeadm v1.13之前的版本,安裝起來(lái)非常麻煩,但是在1.13版本中終于解決了國(guó)內(nèi)的痛點(diǎn),其增加了一個(gè)--image-repository參數(shù),默認(rèn)值是k8s.gcr.io,我們將其指定為國(guó)內(nèi)鏡像地址:registry.aliyuncs.com/google_containers,其它的就可以完全按照官方文檔來(lái)操作。

我們還需要指定--kubernetes-version參數(shù),因?yàn)樗哪J(rèn)值是stable-1,會(huì)導(dǎo)致從https://dl.k8s.io/release/stable-1.txt下載最新的版本號(hào),我們可以將其指定為固定版本(最新版:v1.14.2)來(lái)跳過(guò)網(wǎng)絡(luò)請(qǐng)求。

???

pod網(wǎng)絡(luò)插件是必要安裝,以便pod可以相互通信. 請(qǐng)?zhí)崆按_認(rèn)自己需要使用的pod網(wǎng)絡(luò)插件,以Flannel為例,為了使Flannel正常工作,執(zhí)行kubeadm init命令時(shí)需要增加--pod-network-cidr=10.244.0.0/16參數(shù)

?

# kubeadm init --pod-network-cidr=10.244.0.0/16 ? ? # k8s.gcr.io可以訪(fǎng)問(wèn)的情況下可以直接執(zhí)行init# kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.14.2 --pod-network-cidr=10.244.0.0/16 ?# 通過(guò)跳轉(zhuǎn)registry的方式安裝以上兩種init的方式自己根據(jù)情況選擇執(zhí)行

?

use tocken: qjm4v2.8mqfbjrtjpf2xmq2
output:
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

# mkdir -p $HOME/.kube # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # sudo chown $(id -u):$(id -g) $HOME/.kube/config

?

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 10.100.0.128:6443 --token qjm4v2.8mqfbjrtjpf2xmq2 \
--discovery-token-ca-cert-hash sha256:65131ae78527130dfd6ccf0b6be6e86d2089c4d07856d7f318cede1ce84fb0ef

6. 安裝pod網(wǎng)絡(luò)插件flannel

?

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml這里由于國(guó)內(nèi)墻的原因,kubelet可能無(wú)法拉取flannel鏡像,需要手動(dòng)執(zhí)行命令拉取: flannel 鏡像詳細(xì)的版本號(hào)可以執(zhí)行以下命令查詢(xún): # kubectl get pod -n kube-system # kubectl describe pod kube-flannel-ds-amd64-xxx -n kube-system # kube-flannel-ds-amd64-xxx 為上一條命令查詢(xún)出來(lái)的flannel pod 拉取鏡像: # docker pull quay.io/coreos/flannel:v0.11.0-amd64 # 如果不能直接連接gcr.io,在node節(jié)點(diǎn)上也要手動(dòng)拉取這個(gè)鏡像 §§特別說(shuō)明一下,由于我家里是長(zhǎng)城寬帶,執(zhí)行命令拉取的時(shí)候還是報(bào)錯(cuò),于是我用手機(jī)共享了手機(jī)聯(lián)通網(wǎng)絡(luò)做熱點(diǎn),結(jié)果還真的下載成功了!§§

 再次安裝flannel插件即可:

? # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

? 然后再查詢(xún)集群狀態(tài),可以看到kube-flannel-ds-xxx Pod狀態(tài)為running,master節(jié)點(diǎn)狀態(tài)也變?yōu)镽eady,表明master節(jié)點(diǎn)初始化成功了。happy!!!

???

 

?

?flannel支持多種模型

  • VxLAN #vxLAN有以下兩種模式
    • vxlan #疊加網(wǎng)絡(luò)或者隧道網(wǎng)絡(luò),通過(guò)封裝網(wǎng)絡(luò)報(bào)文的方式使不同網(wǎng)段的pod之間可以通訊
    • Directrouting #直接使用主機(jī)的IP地作為網(wǎng)關(guān),通過(guò)主機(jī)路由的方式與目標(biāo)pod進(jìn)行通訊,當(dāng)目標(biāo)pod與當(dāng)前pod不在同一三層網(wǎng)絡(luò)內(nèi),會(huì)自動(dòng)降級(jí)為VxLAN模式
  • host-gw: Host GateWay?#與VxLAN的Directrouting模式相同,當(dāng)目標(biāo)pod與當(dāng)前pod不在同一三層網(wǎng)絡(luò)內(nèi)時(shí),pod之間無(wú)法通訊
  • UDP:?#早期由于Linux內(nèi)核不支持VxLAN,host-gw又有非常高的入門(mén)門(mén)檻,udp是flannel最早期使用的模式,由于使用普通的udp報(bào)文通訊,性能非常差,在可以使用前面兩種模式的情況下請(qǐng)勿使用該模式
  • 默認(rèn)flannel的模式為vxlan,可以修改為性能更好的directrouting模式,修改見(jiàn)下圖

    

?

?

7. 添加node工作節(jié)點(diǎn)

  • SSH到node節(jié)點(diǎn)
  • 切換到root用戶(hù)
  • 執(zhí)行添加node命令:
# kubeadm join --token <token> <master-ip>:<master-port> 這里可以直接copy master節(jié)點(diǎn)init過(guò)程末尾的kubeadm join 命令行直接執(zhí)行默認(rèn)情況下,token的有效期是24小時(shí),如果我們的token已經(jīng)過(guò)期的話(huà),可以使用以下命令重新生成: # kubeadm token create

 如果我們也沒(méi)有--discovery-token-ca-cert-hash的值,可以使用以下命令生成:

# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

?

?8. 所有node節(jié)點(diǎn)加入到master節(jié)點(diǎn)之后,可以執(zhí)行以下命令查看集群信息

?

# kubectl get nodes[root@maple-master opt]# kubectl get nodes NAME STATUS ROLES AGE VERSION maple-master Ready ? ?master 30m v1.14.2 k8s-node1 ? ?Ready ? ?node ? 2m v1.14.2 k8s-node2 ? ?Ready ? ?node ? 2m v1.14.2

?

Note:?kubeadm reset 可以重置'kubeadm init' or 'kubeadm join'的操作。? 同時(shí)需要?jiǎng)h除家目錄下的.kube?目錄。才能恢復(fù)到初始化之前的狀態(tài)

?

參考文檔:http://docs.kubernetes.org.cn/459.html

     https://kubernetes.io/zh/docs/setup/independent/install-kubeadm/

     https://www.cnblogs.com/yitianyouyitian/p/10143217.html? 解決了國(guó)內(nèi)無(wú)法下載相關(guān)image的問(wèn)題,成功init

總結(jié)

以上是生活随笔為你收集整理的ubuntu18.04搭建 kubernetes(k8s)集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。