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

歡迎訪問 生活随笔!

生活随笔

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

Ubuntu

rancher k8s docker 关系_【环境搭建】Ubuntu20.04通过rke部署K8S

發(fā)布時間:2024/10/8 Ubuntu 140 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rancher k8s docker 关系_【环境搭建】Ubuntu20.04通过rke部署K8S 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題背景

rke大大簡化了k8s集群的部署,但是也帶來了一個問題:稍有差池就會一臉懵逼,rke的文檔還是偏少,此外rke安裝過程中的日志信息也是少的可憐,導(dǎo)致Google都不知道從何說起

關(guān)于rke(強烈推薦,用它來部署k8s): Rancher文檔

本文中的所有腳本都已經(jīng)放到GitHub:CVPaul/rke-k8s-deploy(腳本中有操作提示,運行之前可以先cat出來看看)

環(huán)境準(zhǔn)備

部署環(huán)境非常重要,非常重要,非常重要,環(huán)境準(zhǔn)備好好了一切都OK(五分鐘部署一個集群不是夢),環(huán)境沒準(zhǔn)備好的話你都不知道去哪debug~~~

  • Step 0:官網(wǎng)必須認真讀:Rancher文檔 (非常重要)
  • Step 0.5: 確保docker正確安裝:CZMan95:【環(huán)境搭建】Docker簡明安裝教程
  • Step 1:配置免密登錄:ssh-copy-id username@ip.address.of.nodes
  • Step 2:為每個node設(shè)置hostname:hotsnamectl set-hostname your.node.name
  • Step 3:檢查必要的模塊
########################################################################## # File Name: module-check+install.sh # Created Time: Wed 16 Sep 2020 02:20:32 PM CST ######################################################################### #!/bin/zsh for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set xt_statistic xt_tcpudp; doif ! lsmod | grep -q $module; thenecho "module $module is not present, try to install...";modprobe $moduleif [ $? -eq 0 ]; thenecho -e "033[32;1mSuccessfully installed $module!033[0m"elseecho -e "033[31;1mInstall $module failed!!!033[0m"fifi; done

然后,在Ubuntu 20.04下得到如下的結(jié)果

肺都氣炸,以nf_conntrack_ip4在4.19版本以后就換名字了~~~~~~~~

不過不要緊,安裝完成發(fā)現(xiàn)沒有也是OK的(我曾一度考慮安裝Ubuntu 18.04,這里要感謝, @Gemfield 的文章,因為我發(fā)現(xiàn)既然用kubeadm可以安裝的話,rke應(yīng)該也不是問題,所以開整。。。)

  • Step 4:關(guān)閉Swap
swapoff -a # 臨時關(guān)閉,close all swap devices # 修改/etc/fstab,注釋掉swap那行,持久化生效 # sudo vim /etc/fstab
  • Step 5:端口開放設(shè)置(Ubuntu防火墻默認是沒有的,所以不用特殊處理)
########################################################################## # File Name: firewall-port-manager.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Thu 17 Sep 2020 10:41:54 AM CST ######################################################################### #!/bin/zsh# Open TCP/6443 for all # iptables -A INPUT -p tcp --dport 6443 -j ACCEPT# Open TCP/$port for all # firewall-cmd --zone=public --add-port=$port/tcp --permanent # firewall-cmd --reload# Open TCP/6443 for one specific IP # 這條命令不能通過遠端執(zhí)行(需要sudo權(quán)限),說以需要去具體的機器上run if [ $# -lt 2 ]; thenecho "Usage: $0 <host> <port>"exit 1 fi host=$1 port=$2 # ssh arthur@192.168.1.110 iptables -A INPUT -p tcp -s 192.168.1.197 --dport 2379 -j ACCEPT iptables -A INPUT -p tcp -s $host --dport $port -j ACCEPT## Open TCP/port for one specific IP #firewall-cmd --permanent --zone=public --add-rich-rule=' # rule family="ipv4" # source address="$host/32" # port protocol="tcp" port="$port" accept' #firewall-cmd --reload
  • Step 6:網(wǎng)橋設(shè)置
########################################################################## # File Name: net.bridge.fix.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Fri 18 Sep 2020 03:04:10 PM CST ######################################################################### #!/bin/zsh echo "fix the net.bridge.bridge-nf-call-iptables=1 with fllowing lines" echo "cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system"
  • Step 7:Ubuntu20.04會自動suspend(待機/休眠)需要關(guān)閉
########################################################################## # File Name: susppend-mask.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Fri 18 Sep 2020 02:52:48 PM CST ######################################################################### #!/bin/zsh sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
  • Step 8:清理環(huán)境(非常重要)
    • 由于歷史原因已經(jīng)安裝過程中的多次嘗試,但是安裝環(huán)境不純凈,會產(chǎn)生各種各樣的問題(比如下面的etcd證書問題),讓人一頭霧水,下面提供兩個腳本清理環(huán)境

    • 放點文本,方便檢索
WARN[0296] [etcd] host [192.168.1.110] failed to check etcd health: failed to get /health for host [192.168.1.110]: Get https://192.168.1.110:2379/health: net/http: TLS handshake timeout WARN[0343] [etcd] host [192.168.1.197] failed to check etcd health: failed to get /health for host [192.168.1.197]: Get https://192.168.1.197:2379/health: net/http: TLS handshake timeout FATA[0343] [etcd] Failed to bring up Etcd Plane: etcd cluster is unhealthy: hosts [192.168.1.110,192.168.1.197] failed to report healthy. Check etcd container logs on each host for more information2020-09-21 04:29:26.085053 I | embed: rejected connection from "192.168.1.197:56164" (error "remote error: tls: bad certificate", ServerName "") 2020-09-21 04:29:26.085560 I | embed: rejected connection from "192.168.1.197:56166" (error "remote error: tls: bad certificate", ServerName "") 2020-09-21 04:29:26.185396 I | embed: rejected connection from "192.168.1.197:56168" (error "remote error: tls: bad certificate", ServerName "") 2020-09-21 04:29:26.186002 I | embed: rejected connection from "192.168.1.197:56170" (error "remote error: tls: bad certificate", ServerName "") 2020-09-21 04:29:26.285123 I | embed: rejected connection from "192.168.1.197:56174" (error "remote error: tls: bad certificate", ServerName "")
    • 清理rke的安裝(需要在每個節(jié)點執(zhí)行)
########################################################################## # File Name: clear-node.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Mon 21 Sep 2020 12:49:41 PM CST ######################################################################### #!/bin/zsh systemctl disable kubelet.service systemctl disable kube-scheduler.service systemctl disable kube-proxy.service systemctl disable kube-controller-manager.service systemctl disable kube-apiserver.servicesystemctl stop kubelet.service systemctl stop kube-scheduler.service systemctl stop kube-proxy.service systemctl stop kube-controller-manager.service systemctl stop kube-apiserver.service# 刪除所有容器 docker rm -f $(docker ps -qa)# 刪除所有容器卷 docker volume rm $(docker volume ls -q)# 卸載mount目錄 for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done# 備份目錄 mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M") mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M") mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M") mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")# 刪除殘留路徑 rm -rf /etc/ceph /etc/cni /opt/cni /run/secrets/kubernetes.io /run/calico /run/flannel /var/lib/calico /var/lib/cni /var/lib/kubelet /var/log/containers /var/log/pods /var/run/calico# 清理網(wǎng)絡(luò)接口 network_interface=`ls /sys/class/net` for net_inter in $network_interface; doif ! echo $net_inter | grep -qiE 'lo|docker0|eth*|ens*';thenip link delete $net_interfi done# 清理殘留進程 port_list='80 443 6443 2376 2379 2380 8472 9099 10250 10254' for port in $port_list dopid=`netstat -atlnup|grep $port |awk '{print $7}'|awk -F '/' '{print $1}'|grep -v -|sort -rnk2|uniq`if [[ -n $pid ]];thenkill -9 $pidfi donepro_pid=`ps -ef |grep -v grep |grep kube|awk '{print $2}'` if [[ -n $pro_pid ]];thenkill -9 $pro_pid fi# 清理Iptables表 ## 注意:如果節(jié)點Iptables有特殊配置,以下命令請謹(jǐn)慎操作 sudo iptables --flush sudo iptables --flush --table nat sudo iptables --flush --table filter sudo iptables --table nat --delete-chain sudo iptables --table filter --delete-chainsystemctl restart docker
    • 清理kubeadm的安裝(需要在每個節(jié)點執(zhí)行)
########################################################################## # File Name: uninstall-cluster.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Fri 18 Sep 2020 05:34:43 PM CST ######################################################################### #!/bin/zsh kubeadm reset sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube* sudo apt-get autoremove sudo rm -rf ~/.kube
  • Step 9:生成集群配置文件
    • 下載rke的可執(zhí)行文件: Releases · rancher/rke
      • 國內(nèi)由于各種原因可能會很慢,這里推薦一個網(wǎng)站:下載 直接起飛
    • 輸入命令:./rke config 根據(jù)提示進行操作
      • 這里需要注意的是internal_address,對于部分云服務(wù)器而言公網(wǎng)IP和內(nèi)網(wǎng)地址是不一樣的,需要設(shè)置,對于自己本地局域網(wǎng)的機器的話兩個設(shè)置成一樣的也ok
      • 關(guān)于網(wǎng)絡(luò)可以看這里,K8s CNI網(wǎng)絡(luò)最強對比:Flannel、Calico、Canal和W_容器,根據(jù)自己的需求進行選擇
      • 其它的默認就好
    • 這一步會在當(dāng)前文件夾下生產(chǎn)cluster.yml
  • Step 10:啟動集群
./rke up

  • Step 11: 安裝kubectl并使用
    • 創(chuàng)建:~/.kube文件夾
    • 將rke生成的kube_config_cluster.yml拷貝到~/.kube,并重命名為config
# kubectl --kubeconfig ~/.kube/kube_config_cluster.yml get nodes # 臨時使用 mkdir ~/.kube && mv kube_config_cluster.yml ~/.kube/config # 做完這兩步就可以kubectl get nodes
    • 如果其它機器要用kubectl的話也要上面的操作
    • 安裝腳本如下(由于kubeadm和kubelet沒有用到,故注釋掉)
########################################################################## # File Name: install-kubectl.sh # Author: xianqiu_li # mail: xianqiu_li@163.com # Created Time: Tue 22 Sep 2020 11:10:43 AM CST ######################################################################### #!/bin/zsh echo "雖然Ubuntu默認的安裝方式snap,但是安裝不成功,所以還是推薦apt" apt-get update apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -tee /etc/apt/sources.list.d/kubernetes.list <<EOF deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOFapt-get update apt-get install -y kubectl # kubelet kubeadm apt-mark hold kubectl # kubelet kubeadm

其它

  • cluster.yml,kube_config_cluster.yml文件一定要好好保存,后續(xù)集群維護都要用到
    • kube_config_cluster.yml這個文件有kubectl和helm的憑據(jù)。
    • rancher-cluster.yml:RKE集群配置文件。
    • kube_config_rancher-cluster.yml:集群的 Kube config文件,此文件包含完全訪問集群的憑據(jù)。
    • cluster.rkestate:Kubernetes集群狀態(tài)文件,此文件包含完全訪問集群的憑據(jù)。
  • 上面的所有腳本都整理發(fā)到了github:CVPaul/rke-k8s-deploy
    • 腳本中有操作提示,運行之前可以先cat出來看看

總結(jié)

以上是生活随笔為你收集整理的rancher k8s docker 关系_【环境搭建】Ubuntu20.04通过rke部署K8S的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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