范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Kubeadm部署HA的Kubernetes集群

  部署HA的Kubernetes集群 前提条件
  准备好系统环境、安装好docker并启动服务和安装好kubeadm、kubectl和kubelet程序包三步。
  系统环境要求各节点时间同步,可以使⽤chronyd服务;各节点关闭防⽕墙;
  CentOS 7:systemctl stop firewalld.service && systemctl disable firewalld.service
  Ubuntu 18.04:ufw disable各节点禁⽤Swap设备~#swapoff-a ~#sed-i"s@^[^#].*swap@#&@"/etc/fstab确保节点MAC地址和procut_id的惟⼀性
  安装运⾏Docker
  Docker的配置⽂件⽰例{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors":["https://4mii0w1b.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"] }
  安装kubeadm、kubectl和kubelet程序包初始化控制平⾯
  初始化过程⼤体可分为三步:初始化控制平⾯第⼀个节点;配置kubectl命令的管理员配置;部署⽹络插件;
  运⾏kubeadm init命令
  kubeadm init可从命令⾏选项或配置⽂件读取配置信息,本⽰例采⽤命令⾏壬的⽅式。⾸先,在第⼀个控制节点上运⾏如下命令进⾏初始化。~$ sudo kubeadm init  --image-repository registry.aliyuncs.com/google_containers  --kubernetes-version v1.18.1  --control-plane-endpoint k8s-api.ilinux.io  --apiserver-advertise-address 172.29.9.1  --pod-network-cidr 10.244.0.0/16  --token-ttl 0
  各选项的意义:--image-repository:指定要使⽤的镜像仓库;--kubernetes-version:kubernetes程序组件的版本号,应该与kubelet的版本号相同;--control-plane-endpoint:控制平⾯的固定访问端点,可以是IP地址或DNS名称,会被⽤于集群管理员及集群组件的kubeconfig配置⽂件的API Server的访问地址;单控制平⾯部署时可以不使⽤该选项;--pod-network-cidr:Pod⽹络的地址范围,其值为CIDR格式的⽹络地址,flannel⽹络插件的默认为10.244.0.0/16,calico插件的默认值为192.168.0.0/16;--service-cidr:Service的⽹络地址范围,其值为CIDR格式的⽹络地址,默认为10.96.0.0/12;--apiserver-advertise-address:apiserver通告给其它组件的IP地址,⼀般应该为Master节点的⽤于集群内部通信的IP地址,0.0.0.0表⽰节点上所有可⽤地址;--token-ttl:共享令牌(token)的过期时⻓,默认为24⼩时,0表⽰永不过期;为防⽌不安全存储等原因导致的令牌泄露危及到集群安全,建议为其设定过期时⻓;
  该命令成功执⾏的最后会返回如下的结果,⽤于提⽰后续的操作步骤:
  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/
  You can now join any number of control-plane nodes by copying certificate authorities and
  service account keys on each node and then running the following as root:
  kubeadm join k8s-api.ilinux.io:6443 --token 994tce.8elc2p7zjg9tp8wf  --discovery-token-ca-cert-hash sha256:cf12deca4e52fabe8e0ddd681dbc60fea4bf3f3001ce4f33a240e170ed459363  --control-plane
  Then you can join any number of worker nodes by running the following on each as root:
  kubeadm join k8s-api.ilinux.io:6443 --token 994tce.8elc2p7zjg9tp8wf  --discovery-token-ca-cert-hash sha256:cf12deca4e52fabe8e0ddd681dbc60fea4bf3f3001ce4f33a240e170ed459363
  ⽣成kubectl命令的管理员配置
  建议以Linux系统的普通⽤⼾⾝份执⾏后续操作,以ilinux为例,⾸先创建账号
  ~# useradd -m -s /bin/bash ilinux
  ~# echo -e "mageedu mageedu" | passwd ilinux
  ~# echo "ilinux ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/ilinux
  接下来复制kubectl命令的管理配置⽂件给ilinux⽤⼾:
  ~# su - ilinux
  ~# mkdir -p $HOME/.kube
  ~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  ~# sudo chown $(id -u):$(id -g) $HOME/.kube/config
  测试该命令的执⾏:
  ~$ kubectl get nodes
  部署⽹络插件
  Kubernetes以插件⽅式⽀持众多第三⽅的Pod⽹络实现,著名有flannel和calico等。本⽂以flannel为例进⾏说明。
  ~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  添加⼯作节点
  在每个⼯作节点上分别执⾏如下命令即可加⼊到指定的控制平⾯中,kubeadm的执⾏需要⽤到root⽤⼾的权限。
  ~# kubeadm join k8s-api.ilinux.io:6443 --token 994tce.8elc2p7zjg9tp8wf  --discovery-token-ca-cert-hash sha256:cf12deca4e52fabe8e0ddd681dbc60fea4bf3f3001ce4f33a240e170ed459363
  回到kubectl节点上,验证添加的结果:
  ~# kubectl get nodes添加其它控制平⾯节点
  控制平⾯中的节点需要共享Kubernetes CA、etcd CA和front-proxy CA等的证书和私钥信息,我们可以从第⼀个控制平⾯节点之上⼿动分发相关⽂件给准备添加的其它Master,也可借助于kubeadm init中的⼀个特定操作步骤完成。
  回到第⼀个控制平⾯节点执⾏如下命令,并获取其返回结果,尤其注意最后的certificate key。
  ~$ sudo kubeadm init phase upload-certs --upload-certs W0423 13:48:05.271436 22360
  configset.go:202] WARNING: kubeadm cannot validate component configs for API groups
  [kubelet.config.k8s.io kubeproxy.config.k8s.io] [upload-certs] Storing the certificates in Secret
  "kubeadm-certs" in the "kube-system" Namespace [upload-certs] Using certificate key:
  4977c9110f2abfd95fc9aa29a382064cb24a04ec9123b74f7bb273850d664e4c
  注意:该命令上传⽣成的Secret的⽣命周期为两个⼩时,超过该时⻓后再添加Master节点,需要重新运⾏如上命令。
  接下来在待添加为Master的节点上分别执⾏如下命令,完成添加,命令格式来⾃前⾯两个kubeadm init的结果输出。
  ~# kubeadm join k8s-api.ilinux.io:6443 --token 994tce.8elc2p7zjg9tp8wf  --discovery-token-ca-cert-hash sha256:cf12deca4e52fabe8e0ddd681dbc60fea4bf3f3001ce4f33a240e170ed459363  --control-plane --certificate-key
  4977c9110f2abfd95fc9aa29a382064cb24a04ec9123b74f7bb273850d664e4c
  该命令最后会返回如下结果:
  This node has joined the cluster and a new control plane instance was created:Certificate signing request was sent to apiserver and approval was received.The Kubelet was informed of the new secure connection details.Control plane (master) label and taint were applied to the new node.The Kubernetes control plane instances scaled up.A new etcd member was added to the local/stacked etcd cluster.
  To start administering your cluster from this node, 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
  Run "kubectl get nodes" to see this node join the cluster.
  添加的每个节点本地都可以配置kubetl命令⾏⼯具,该配置会⽣成同样具有管理员权限的kubeconfig配置⽂件,如上⾯命令的返回结果所⽰。另外,若需要测试本地节点的⼯作效果,可以修改/etc/hosts中的k8s-api.ilinux.io的名称解析指向当前Master的IP,⽽后于本地运⾏kubectl命令进⾏测试。
  ~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master01.ilinux.io Ready master114m v1.18.1 k8s-master02.ilinux.io Ready master 5m15s v1.18.1 k8s-master03.ilinux.io Readymaster 3m2s v1.18.1 k8s-node01.ilinux.io Ready 100m v1.18.1 k8s-node02.ilinux.io Ready 100mv1.18.1 k8s-node03.ilinux.io Ready 99m v1.18.1
  升级HA的Kubernetes集群 查找是否有可升级的版本
  获取当前版本
  ~$ kubectl version
  ~# kubeadm version
  kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.1",
  GitCommit:"7879fc12a63337efff607952a323df90cdc7a335", GitTreeState:"clean",
  BuildDate:"2020-04-08T17:36:32Z", GoVersion:"go1.13.9", Compiler:"gc",
  Platform:"linux/amd64"}
  上⾯命令返回结果显⽰当前版本是v1.18.1,下⾯查看是否存在可升级版本
  ~# apt update
  ~$ sudo apt-cache madison kubeadm
  kubeadm | 1.18.2-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64Packages kubeadm | 1.18.1-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages kubeadm | 1.18.0-00 | https://mirrors.aliyun.com/kubernetes/aptkubernetes-xenial/main amd64 Packages
  ……
  以可升级到的命令中的最新版本v1.18.2为例。
  升级控制平⾯
  升级第⼀个控制平⾯节点
  先升级kubeadm程序包,并确认升级完成。
  ~# apt-get update &&  apt-get install -y --allow-change-held-packages kubeadm=1.18.2-00
  ~# kubeadm version
  kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2",
  GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean",
  BuildDate:"2020-04-16T11:54:15Z", GoVersion:"go1.13.9", Compiler:"gc",
  Platform:"linux/amd64"}
  排空当前节点。
  ~$ kubectl drain k8s-master01.ilinux.io --ignore-daemonsets
  node/k8s-master01.ilinux.io cordoned WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-dltsg, kube-system/kube-proxy-mvjr5 evicting pod kube-system/coredns-7ff77c879f-8wkrt evicting pod kube-system/coredns-7ff77c879f-n6c7hpod/coredns-7ff77c879f-8wkrt evicted pod/coredns-7ff77c879f-n6c7h evicted node/k8s-master01.ilinux.io evicted
  运⾏如下命令,开启升级计划。
  ~# kubeadm upgrade plan
  该命令会返回类似如下的升级提⽰。
  Components that must be upgraded manually after you have upgraded the control plane with"kubeadm upgrade apply": COMPONENT CURRENT AVAILABLE Kubelet 6 x v1.18.1 v1.18.2
  Upgrade to the latest version in the v1.18 series:
  COMPONENT CURRENT AVAILABLE API Server v1.18.1 v1.18.2 Controller Manager v1.18.1 v1.18.2Scheduler v1.18.1 v1.18.2 Kube Proxy v1.18.1 v1.18.2 CoreDNS 1.6.7 1.6.7 Etcd 3.4.3 3.4.3-0
  You can now apply the upgrade by executing the following command:kubeadm upgrade apply v1.18.2
  按照上⾯的提⽰,将集群升级到v1.18.2版本。该命令也会同时更新证书信息,阻⽌证书更新,可同时附加"--certificate-renewal=false"选项。
  ~# kubeadm upgrade apply v1.18.2
  ……
  [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.2". Enjoy!
  [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your
  kubelets if you haven"t already done so.
  关闭该节点的不可作为调度⽬标的标识。
  ~$ kubectl uncordon k8s-master01.ilinux.io node/k8s-master01.ilinux.io uncordoned
  升级控制平⾯的其它节点
  步骤同升级第⼀个节点相同,除了其中的"kubeadm upgrade apply"命令要替换为"kubeadm
  upgrade node"命令。因⽽按前⼀节的步骤和本切的提⽰依次升级余下的每个Master节点即可。
  为控制平⾯的所有节点升级kubectl和kubelet
  在控制平⾯的所有节点上执⾏如下命令,并重启kubelet服务,完成程序版本更新。
  ~# apt-get update && apt-get install -y --allow-change-held-packages kubelet=1.18.2-00
  kubectl=1.18.2-00
  ~# systemctl restart kubelet
  使⽤下⾯的命令验证更新结果:
  ~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master01.ilinux.io Ready master167m v1.18.2 k8s-master02.ilinux.io Ready master 58m v1.18.2 k8s-master03.ilinux.io Readymaster 55m v1.18.2 k8s-node01.ilinux.io Ready 153m v1.18.1 k8s-node02.ilinux.io Ready 153mv1.18.1 k8s-node03.ilinux.io Ready 152m v1.18.1
  升级⼯作节点
  应该以灰度⽅式进⾏,⼀次更新⼀个或有限⼏个节点。
  在选定的⼯作节点上升级kubeadm程序包。
  root@k8s-node01:~# apt-get update &&  apt-get install -y --allow-change-held-packages
  kubeadm=1.18.2-00
  在管理节点上执⾏如下命令排空选定的⼯作节点,以k8s-node01.ilinux.io为例。
  ik8s@k8s-master01:~$ kubectl drain k8s-node01.ilinux.io --ignore-daemonsets
  在⼯作节点上运⾏如下命令进⾏升级:
  ~# kubeadm upgrade node [upgrade] Reading configuration from the cluster... [upgrade] FYI: You can look at this config file with "kubectl -n kube-system get cm kubeadm-config -oyaml" [upgrade]Skipping phase. Not a control plane node. [kubelet-start] Downloading configuration for thekubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace [kubelet-start]Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [upgrade] The configurationfor this node was successfully updated! [upgrade] Now you should go ahead and upgrade thekubelet package using your package manager.
  更新kubelet和kubectl,并重启kubelet服务。
  root@k8s-node01:~# apt-get update &&  apt-get install -y --allow-change-held-packages
  kubelet=1.18.2-00 kubectl=1.18.2-00
  root@k8s-node01:~# systemctl restart kubelet
  在管理节点上执⾏如下命令,关闭该节点不可被调度的标识。
  ik8s@k8s-master01:~$ kubectl uncordon k8s-node01.ilinux.io node/k8s-node01.ilinux.io
  uncordoned
  验证更新结果:
  ~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master01.ilinux.io Ready master3h1m v1.18.2 k8s-master02.ilinux.io Ready master 72m v1.18.2 k8s-master03.ilinux.io Readymaster 69m v1.18.2 k8s-node01.ilinux.io Ready 167m v1.18.2 k8s-node02.ilinux.io Ready 166mv1.18.1 k8s-node03.ilinux.io Ready 166m v1.18.1
  其它节点的更新⽅式相同。
  重置集群
  若要重置某个节点,⾸先在管理节点上使⽤如下命令排空该节点。
  ik8s@k8s-master01:~$ kubectl drain k8s-node01.ilinux.io --ignore-daemonsets
  ⽽后于该节点上运⾏如下命令完成重置操作。
  ~# kubeadm reset
  基本应⽤ 命令式命令
  创建部署
  ~$ kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0
  创建服务:
  ~$ kubectl create service clusterip demoapp --tcp=80
  于某个Pod中发起访问测试:
  将应⽤的副本扩展⾄多个,验证测试过程。
  ~$ kubectl scale deployment/demoapp --replicas=3
  升级并暂停(⾦丝雀发布),通过循环请求进⾏验证:
  ~$ kubectl set image deployments/demoapp demoapp=ikubernetes/demoapp:v1.1 &&  kubectl
  rollout pause deployments/demoapp
  查看暂停状态的更新。
  ~$ kubectl rollout status deployments/demoapp Waiting for deployment "demoapp" rollout to
  finish: 1 out of 3 new replicas have been updated...
  继续完成处于暂停状态的更新操作。
  ~$ kubectl rollout resume deployments/demoapp deployment.apps/demoapp resumed
  删除Service
  ~$ kubectl delete services/demoapp
  删除deployment
  ~$ kubectl delete deployments/demoapp
  ~# ethtool --offload flannel.1 rx off tx off

搜索量超70苹果手机在西班牙二手市场大受欢迎据西班牙经济学家报网站近日报道,针对西班牙二手智能手机市场的分析指出,苹果手机(尤其是苹果11)是2021年最受欢迎的机型,搜索量约为73。近年来,随着主要手机品牌不断增加新设备发英特尔苹果联想台积电都站队乌克兰?都是被美国逼的自上周开始的俄乌冲突是愈演愈烈,而在战场之外,科技战金融战也是直接打响了。目前以美国为首的众多国家和公司,也对俄罗斯进行了一系列科技方面的制裁,比如台积电联想英特尔苹果特斯拉等等都低性价比画质差!2022年了谁还头铁买激光电视?激光电视指的是那些以激光作为光源,搭配上专用的投影幕,利用超短焦投影技术成像实现大屏幕观影体验的电视,其原理都是光线穿过镜头后,将画面投射到幕布上。也就是说用户最终看到的是一个经过奥密克戎变种可能被低估了,研究发现BA。2传播更快,症状也更严重相对乌克兰局势来说,当前有一个也很重要但讨论较少的事情,那就是目前出现了一个比奥密克戎传染性更强也更危险的新变种,这种病毒当前被命名为奥密克戎BA。2亚型变异株。根据日本东京大学的文字转语音工具怎么选?如何操作?文字转语音工具,只需微信小程序配音鹅就可以。主播选择多样,背景音乐丰富,还可再调节语序快慢和添加停顿时长等功能。具体操作步骤如下首先,将文字直接粘贴到此文本框中,字数现在最高可达到有什么好的APP值的推荐和使用?1。新闻软件今日头条。精细化推送内容,可以利用碎片化,着手接受内容。2。短视频软件抖音。同为头条的产品,一款专注为年轻人的音乐短视频软件,谁用谁知道。3。聊天工具微信。毋庸置疑微信助听器常见的验配公式是什么?你好,每个人对声音的需求不一样,不同的公式处理的声音方法也不一样,NALNL1公式是1999年由澳大利亚国家声学实验室针对非线性放大助听器而推出的验配公式,通过不同强度的言语,使佩怎样来提升花呗额度更高?花呗第一付款位,能用支付宝就尽量使用支付宝,完善个人信息,保持良好信用,支付宝买点理财产品,基金什么的。反正就是各种来一套呲牙呲牙呲牙使用支付宝花呗来消费已经成为我们很常见的支付方比特币机器是怎么运转的?比特币挖矿经济账5800台矿机一天电费6720元作为目前虚拟货币中的领头羊,比特币声名在外。而在比特币的产出环节,比特币矿场如何运转,盈利情况如何?外界尚难知晓更多。比特币矿机24网店中一个显卡的售价接近2000元,可一台配备此显卡的主机才3000多元,这是为什么?谢邀。首先,要清楚,即使显卡同一型号,例如都是GTX1080,像华硕与小影霸的价格,就不是一个档位的,华硕下面GTX1080还有不同的型号细分,并且还有工包卡,网吧卡甚至是矿卡一类我的QQ等级能不能借钱?qq可以借款,在qq里借钱一般通过qq里的微粒贷功能借钱,不过开通微粒贷都是采用邀请制,如果没有获得邀请是不能开通的,如果qq不能开通,可尝试用qq绑定银行卡进行一段时间的支付转账
小米43吋电视960元到手价,当显示器用真香如果你想购买一台大屏显示器,而预算只有一千块,那今天给你推荐一款小米A43电视,43吋大小放在桌上享受大屏震撼。这款小米43寸电视,目前活动售价999元,下单1件和凑单品满1000为什么现在市面上不出曲面屏电视了?虽然现在很多人都不爱看电视了,但电视机还是必不可少的家用电器之一。现如今,随着科技的发展,电视的种类和功能也越来越多。其中,就有曲面屏电视。需求推动供给,供给不足,那么可能是因为市oled屏长期使用纯黑色壁纸会烧屏吗?如果单单用纯黑色的壁纸的话,就会出现图标一直亮着,背景不亮,图标就会先老化,这样显示纯色的时候就会看到图标的影子,一样是烧屏,省电倒是省点电。只有让每个像素点的工作频率一致,一起老末端物流的终极价值只走到第1。5步文新经济沸点郭娟编者按这篇稿件采写于2014年,一位资深的物流创业者再创业,针对的是这个领域当时存在的三个痛点快递员投妥率消费者隐私保护和消费端需求的精准采集。社区商店成为这三个痛美柚立足女性健康长远利益,构建孕妈社群新生态随着公域流量的红利逐渐消退,获客成本不断上升,粘性和留存率也较低,挖掘私域流量成了目前的行业发展趋势,各大互联网公司和品牌纷纷入局,以实现对用户资产的精细化运营。但许多企业直接把私燃油车或被取代!海南禁售燃油车日期确认,全国禁售指日可待石油是不可再生资源,再加上现在的全球变暖问题日益严重,还有各种意外导致的火灾增加了二氧化碳的排放,给全球变暖装备了加速器,改善环境已成为人们的首要目标。现在全球很多国家已经将普及新为什么Crypto是(元宇宙)的关键随着Facebook最近宣布更名为Meta并积极探索元宇宙,有关这一领域将如何发展引发了诸多讨论。话虽如此,元宇宙将是区块链和加密资产走向主流的一个巨大机遇,为何如此呢?元宇宙带来大家玩喵糖的战绩如何?有没有获得4999元奖励的?1号那波我还玩的挺带劲,每天攒喵糖投红包,预选场攒了十六七块的红包吧,结果还来了个好像什么实战场,两对pk,还有门票,输了的除了红包没有还得倒扣门票钱,更悲催的是就算你不去pk,门特斯拉Model规格曝光!2K真全面钛合金机身,支持太阳能充电说起特斯拉,大家都知道它是智能电动车界的大哥。早在几个月前,曾有消息称特斯拉欲进军智能手机市场分一杯羹,而近日,特斯拉的首款手机Model似乎已有了雏形。据消息人士透露,特斯拉Mo油价14连涨,600万新能源车主却笑不出来,为啥?有6个原因2021年11月5日24时,我国油价又迎来了新一轮的调价,这一次调价是成品油年内第二十次调价,而从9月份开始,我国油价已经连续两个多月在上涨,到11月就实现了14连涨。目前,92号iPhoneSE3月又有了新消息,为了控制成本,库克做得天衣无缝我们知道,就在2020年4月份,苹果发布了新一代iPhoneSE手机,做到了3299元的起售价,可以说性价比非常高了,但是遗憾的是,不支持5G,从而果粉对新一代支持5G的iPhon