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

K8S安装和创建集群终极教程(单master多worker)

  前言
  本文会以最简单、最直接、最完整的方式记录kubernetes(下面统称K8S)单master多工作节点(worker nodes)的集群步骤基本概念
  首先要简单了解一下本文的3个核心概念:Kubelet:K8S工作节点上的重要组件,它的作用是管理Pod,引用官方的一句描述"The kubelet works in terms of a PodSpec";Kubeadm:官方提供的快速创建集群工具;Kubectl:kubectl是K8S的命令行工具,可以管理集群。工作流程我们的工作流程分三大步安装Kubeadm创建集群安装dashboard第一步 安装Kubeadm环境准备
  ①Linux 主机,配置要求至少拥有2CPU和2GB的内存,本文使用的系统版本是CentOS7.6
  内存建议至少4G
  ②为了完成集群的测试,应准备2台或2台以上的主机,本文使用1台master和2台work
  ③集群中所有机器的网络连接都是完整的(公网或者内网都可以)
  ④每个节点拥有唯一主机名、MAC 地址和product_uuid
  问:如何查看主机名?
  答:执行命令hostname
  问:如何修改主机名?
  答:永久生效的做法:执行命令vi /etc/hostname,把第一行去掉(不能注释掉,要去掉),然后重新写上自定义的主机名(注意命名规范),保存并重启后生效;
  临时生效的做法:执行以下命令hostname 你自定义的主机名
  问:如何查看MAC地址?
  答:执行命令ip link,然后看你的第一网卡
  问:如何查看product_uuid?
  答:执行命令sudo cat /sys/class/dmi/id/product_uuid
  ⑤根据你对不同组件的使用情况需要开放以下端口,并使用telnet测试端口是否打开(如果目的只是为了测试或者条件允许的情况下,直接关闭防火墙即可)master主机(又称为控制平面或者Control plane)需要打开的端口
  Protocol
  方向
  Port Range
  Purpose
  Used By
  TCP
  入站
  6443
  Kubernetes API server   All   TCP   入站   2379-2380   etcd server client API   kube-apiserver, etcd   TCP   入站   10250
  Kubelet API   Self, Control plane   TCP   入站   10259
  kube-scheduler   Self   TCP   入站   10257
  kube-controller-manager   Self 工作节点(又称为worker Node)需要打开的端口   Protocol   方向   Port Range   Purpose   Used By   TCP   入站   10250
  Kubelet API   Self, Control plane   TCP   入站   30000-32767   NodePort Services†   All   注意:30000-32767这个端口范围是我们创建服务的端口必须要设置的一个范围(如果设置范围以外的会有限制提示并创建失败),这是K8S规定的。   另外,如果你要直接关闭防火墙可以执行systemctl stop firewalld.service && systemctl disable firewalld.service   ⑥必须禁用Swap[root@testmachine01 ~]# free total used free shared buff/cache available Mem: 1863252 759616 92032 25736 1011604 818296 Swap: 2098172 0 2098172   Swap total大于0,说明Swap分区是开启的   问:如何关闭Swap?   答:编辑文件/etc/fstab,在swap行前面加上#号注释,保存并重启服务器 [root@testmachine01 ~]# vi /etc/fstab # UUID=fa5df00e-8eb8-4fd1-9376-ccfc15e32848 swap swap defaults 0 0   再次查看分区状态,已生效[root@testmachine01 ~]# free total used free shared buff/cache available Mem: 1863252 726388 123116 30968 1013748 848484 Swap: 0 0 0   安装容器引擎   常见的容器引擎(Container runtime,简称runtime):containerdCRI-ODocker   本文使用的容器引擎是Docker   安装命令sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker.service   安装完成后查看版本:[root@testmachine01 ~]# docker -v Docker version 20.10.11, build dea9396   如果需要删除旧版本sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine   如果需要卸载Docker引擎   当出现可能跟Docker引擎相关的奇怪异常时可以尝试把Docker卸载干净并重新安装,但一定要注意镜像、容器、卷或配置文件这些是否需要备份。   下面记录卸载Docker引擎的步骤:   ①卸载 Docker Engine、CLI 和 Containerd 包:sudo yum remove docker-ce docker-ce-cli containerd.io   ②主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd   ③配置文件如果有不合法的字符时会导致启动失败,我们需要将其删除然后重建[root@testmachine01 ~]# rm -rf /etc/docker/daemon.json   此时Docker引擎已卸载干净   安装kubeadm, kubelet and kubectl   安装yum源cat < --discovery-token-ca-cert-hash sha256:0ab5863d0b42a36e8ef04f174106a9ccfb6927fba3c884052d5a2c9e0de76185 [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with "kubectl -n kube-system get cm kubeadm-config -o yaml" [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap... This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details. Run "kubectl get nodes" on the control-plane to see this node join the cluster.   master上查看所有节点的状态[root@testmachine01 ~]# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME testmachine01 Ready control-plane,master 6h7m v1.22.4 192.168.189.128 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.11 testmachine02 Ready 59m v1.22.4 192.168.189.130 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.11 testmachine03 Ready 17m v1.22.4 192.168.189.131 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.11   到这里集群已经创建完成   最后一步 安装dashboard   最后我再安装K8S的可视化界面kubernetes-dashboard,方便我们日常使用   ①下载yaml文件wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml --no-check-certificate   ②修改yaml文件,新增type和nodePort,使服务能够被外部访问[root@testmachine01 ~]# vi recommended.yaml --- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 31437 selector: k8s-app: kubernetes-dashboard ---   ③安装并查看运行情况[root@testmachine01 ~]# kubectl apply -f recommended.yaml [root@testmachine01 ~]# watch kubectl get pods -n kubernetes-dashboard   ④新建用户[root@testmachine01 ~]# vi dashboard-adminuser.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard   文件创建完成后保存并apply kubectl apply -f dashboard-adminuser.yaml   ⑤获取Token,用于界面登录kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"   ⑥登录dashboard   192.168.189.128是我的master服务器ip,另外要注意必须使用https,并且不能使用ie内核模式   复制⑤生成的token到输入框,点击登录   dashboard安装配置完成   Q&A   问:如何在查看资源情况?   答:在master上执行以下命令可查看资源情况(-o wide是显示更详细的信息),   ①查看所有节点kubectl get nodes -o wide   ②查看所有命名空间kubectl get namespaces -o wide   ③查看命名空间下的podkubectl get pods -n 你的命名空间 -o wide   ④查看所有命名空间的podkubectl get pods --all-namespaces -o wide   ⑤实时查看查看命名空间下的pod运行情况watch kubectl get pods -n 你的命名空间   问:kubeadm join 出现异常[ERROR Port-10250]: Port 10250 is in use,如何解决?   答:这是因为你之前join失败过了,需要先执行kubeadm reset再重新join   问:虚拟机上测试时网卡突然消失如何解决(题外问题记录)?   答:   ①确认丢失的网卡信息,ens开头(可选步骤)   ifconfig -a   ②执行以下命令解决systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl restart network.service && service network restart   问:如何查看K8S版本?   答:kubectl version   问:join命令忘记或者过期了怎么办?   答:   生成永不过期的kubeadm token create --ttl 0 --print-join-command   生成时效24小时的kubeadm token create --print-join-command    问:Pod不断重启并且无其它报错信息时怎么办?   答:这种情况通常是因为你的集群中只有master,没有worker节点,master的创建默认是有污点的,即不允许调度新的Pod,如果你需要(当然这并不推荐),就需要删除 master 上的污点。删除污点可以执行以下命令,kubectl taint nodes --all node-role.kubernetes.io/master-   它应该返回以下内容。node/ untainted

太火爆!vivo又一款新机开售彻底戳中用户痛点距离2020年已经不远啦,很多人也该为自己准备一款新手机了吧。谈到手机,还是那句话,该怎么选!笔者身边朋友就说,要求不高,好看,拍照可以,不卡就行,其实这个要求看着还真挺高的哈。v雷军要用小米CC9Pro交朋友,网友评论辣眼睛小米CC9Pro终于发布啦,对于这款手机,目前网友估计除了处理器,其他地方找不到吐槽的点了。当然作为一款颜值拍照旗舰,骁龙730G也完全可以胜任哈,喜欢性能怪兽的估计真的要考虑小米力压群雄!vivo领跑5G手机,市场份额占据一半以上今年的手机竞争有些激烈,不过值得开心的是,国产手机的发展速度有点快,尤其在全面屏和5G方面,可以直接的讲,引领了全球手机的发展。在全面屏方面,小米开创了全面屏手机,vivo则引领了华为Mate30用户真实评价比iPhone11好今年是5G的元年,很多手机厂商都发布了5G的手机,包括vivoNEX3,小米9Pro,小米MIXAlpha华为Mate30Pro等等,其实这些手机都挺好的,而且都是国产手机,而iP年轻人的第三只眼?小米杀入家庭安防领域随着智能家居产品产业的兴起,智能家居产品越来越丰富。家用电器和厨房电器都在向智能化发展,包括智能安全产品。以智能摄像头为例,它将为我们日常家庭监控提供许多便利,不仅可以防止小偷进入赵丽颖冯绍峰离婚的消息刷屏了!网友别大惊小怪,娱乐圈就这样这几天,赵丽颖和冯绍峰离婚的消息成了很多大媒体的头条,打开手机和电脑,满屏皆是!看到这个消息,有不少网友感到意外,但是也有网友很淡定地表示别大惊小怪,娱乐圈就这样!其实,一直以来,男子相亲时只顾吃,连吃30盘羊肉,女子蒙圈我买的单俗话说,林子大了什么鸟也有。今天我们要说的是一个相亲男,他相亲的时候不但不买单,让女方买单,而且还狂吃,一连吃了30盘羊肉,令人叹为观止!这个相亲男子是甘肃兰州人,他平时比较过日子关键时刻美国原形毕露,中国伸出了援助之手!制氧机紧急空运印度最近这几天,电视新闻和网上一直在报道印度疫情大爆发的消息,而且前两天媒体报道印度在一天之内新增新冠状感染人数超过30多万例,死亡人数火葬场都装不了了,一些死人都在街上焚烧,这真的是半年亏损近千亿,高铁咋就那么能亏?大家都知道,高铁是一个高度垄断的行业,因为铁路线路不可能随便修建,而且列车调配也不可能随便改变,所以行业的性质决定了这个行业的垄断性。在很多网友的眼里,垄断行业应该是赚钱的,似乎亏河南6死6伤车祸事发前监控曝光面包车疑被执法人员疯狂追逐发生在3月27日的河南安阳6死6伤的车祸,引起了众多网友的关注,为什么会有这么多网友关注呢?原因之一是这是一起非常大的交通事故,造成了6死6伤,另外这起事故是发生在最近几日。这是发上海人最爱的品牌小米双11最终战报143亿,全部都是第一今年的双11和往年有些不一样,今年从11。1开始就进行了狂欢,很多人也参与了两次的双11,比较11。11更加的疯狂,笔者也参与了这次双11,购物也差不多万把块吧,明明想着忍住不要剁