1. 使用 k8s 官方提供的部署工具 kubeadm 自动安装,需要在 master node 节点上安装 docker 等组件,然后初始化,把管理端的控制服务和 node 上的服务都以 pod 的方式运行。
  1. kubernetes部署过程:
  2. 本次部署的集群是v1.17.4
  3. 分为以下几个步骤
  4. 1.基础环境准备
  5. 2.master 安装指定版本的 kubeadm kubeletkubectldocker
  6. 3.在所有 node 节点安装指定版本的 kubeadm kubeletdocker,在 node 节点 kubectl
  7. 可选安装,看是否需要在 node 执行 kubectl 命令进行集群管理及 pod 管理等操作。
  8. 4.master节点运行kubeadm init初始化命令
  9. 5.验证master节点状态
  10. 6. node 节点使用 kubeadm 命令将自己加入 k8s master(需要使用 master 生成 token
  11. 证)
  12. 7.验证集群状态
    #######centos系统必须要关闭firewalld和SELINUX!!!
  1. 1.机器准备
    k8s-master 10.0.0.50
  2. k8s-node1 10.0.0.51
  3. k8s-node2 10.0.0.52
  4. harbor 10.0.0.111
  5. #这里的harbor主要为了方便上传下载镜像!!!
  1. 2.更改主机名
  2. hostnamectl set-hostname K8s-master
  3. hostnamectl set-hostname K8s-node1
  4. hostnamectl set-hostname K8s-node2
  1. 3.部署harbor
  2. ##部署habror的步骤省略,在上一篇有详细说明
  1. 4.关闭swap分区
  2. swapoff -a
  1. 5.调整内核参数,否则kubernetes集群无法起来。
  2. root@K8s-node2:~# vim /etc/sysctl.conf
  3. net.ipv4.ip_forward = 1
  1. 6.所有节点安装docker
  2. #在阿里云有详细安装docker。
  3.  
  4. 验证 docker 版本:
  5. root@K8s-node1:/# docker --version
  6. Docker version 19.03.8, build afacb8b7f0
  1. 7.配置docker的镜像加速。
  2. https://help.aliyun.com/document_detail/60450.html
  3.  
  4. sudo mkdir -p /etc/docker
  5. sudo tee /etc/docker/daemon.json <<-'EOF'
  6. {
  7. "registry-mirrors": ["https://b4budxxz.mirror.aliyuncs.com"]
  8. }
  9. EOF
  10. # sudo systemctl daemon-reload && sudo systemctl restart docker
  1. 8.所有节点安装 kubelet kubeadm kubectl
  2. #所有节点配置阿里云仓库地址并安装相关组件,node 节点可选安装 kubectl
  3. #https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11JXALy6 阿里云kubernetes镜像地址
  4. apt-get update && apt-get install -y apt-transport-https
  5.  
  6. root@K8s-node2:/# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
  7. > deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
  8. > EOF #
  9. root@K8s-master:~# apt-get update
  10.  
  11. #安装指定版本 kubeadm 查看版本信息
  12. # apt-cache madison kubeadm
  13.  
  14. root@K8s-master:~# apt install kubeadm=1.17.2-00 kubectl=1.17.2-00 kubelet=1.17.2-00
  15.  
  16. root@K8s-node1:/# apt install kubeadm=1.17.2-00 kubelet=1.17.2-00
  17.  
  18. root@K8s-master:~# systemctl start kubelet && systemctl enable kubelet && systemctl status kubelet

    #验证kubeadm版本

root@K8s-master:/# kubeadm version
 kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-0 1-18T23:27:49Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}



  1. 9.准备k8s-master需要的镜像
  2. #查看安装指定K8s版本需要的镜像有哪些
  3. root@K8s-master:/# kubeadm config images list --kubernetes-version v1.17.2
  4. k8s.gcr.io/kube-apiserver:v1.17.2
  5. k8s.gcr.io/kube-controller-manager:v1.17.2
  6. k8s.gcr.io/kube-scheduler:v1.17.2
  7. k8s.gcr.io/kube-proxy:v1.17.2
  8. k8s.gcr.io/pause:3.1
  9. k8s.gcr.io/etcd:3.4.3-0
  10. k8s.gcr.io/coredns:1.6.5
  11.  
  12. 10.下载master需要的镜像
  13. root@K8s-master:~# vim images-download.sh
  14.  
  15. #!bin/bash
  16. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.2
  17. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.2
  18. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.2
  19. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.2
  20. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
  21. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
  22. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
  23. root@K8s-master:~# bash images-download.sh
  24.  
  25. root@K8s-master:~# docker images
  26. REPOSITORY TAG IMAGE ID CREATED SIZE
  27. quay.io/coreos/flannel v0.12.0-amd64 4e9f801d2217 10 months ago 52.8MB
  28. registry.aliyuncs.com/google_containers/kube-proxy v1.17.2 cba2a99699bd 12 months ago 116MB
  29. registry.aliyuncs.com/google_containers/kube-controller-manager v1.17.2 da5fd66c4068 12 months ago 161MB
  30. registry.aliyuncs.com/google_containers/kube-apiserver v1.17.2 41ef50a5f06a 12 months ago 171MB
  31. registry.aliyuncs.com/google_containers/kube-scheduler v1.17.2 f52d4c527ef2 12 months ago 94.4MB
  32. registry.aliyuncs.com/google_containers/coredns 1.6.5 70f311871ae1 14 months ago 41.6MB
  33. registry.aliyuncs.com/google_containers/etcd 3.4.3-0 303ce5db0e90 14 months ago 288MB
  34. registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 3 years ago 742kB
  1. 11.master节点运行集群初始化命令
  2. kubeadm init --apiserver-advertise-address=10.0.0.50 --apiserver-bind-port=6443 --
  3. kubernetes-version=v1.17.2 --pod-network-cidr=192.168.0.0/16 --service-cidr=10.20.0.0/16 --
  4. service-dns-domain=lengyuye --image-repository=registry.cnhangzhou.aliyuncs.com/google_containers --ignore-preflight-errors=swap
  1. 12.初始化结果
  2. To start using your cluster, you need to run the following as a regular user:
  3.  
  4. mkdir -p $HOME/.kube
  5. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  6. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  7.  
  8. You should now deploy a pod network to the cluster.
  9. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  10. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  11.  
  12. Then you can join any number of worker nodes by running the following on each as root:
  13.  
  14. kubeadm join 10.0.0.50:6443 --token 1gm82e.z91u96kh4cxes0o1 \
  15. --discovery-token-ca-cert-hash sha256:8427c509f211eece6e720623628d8895ccaf63b8482f85daf79002aec988d682
  1. 13.创建kube-config配置文件并且上传网络组件。
  2. root@K8s-master:~# mkdir -p $HOME/.kube
  3. root@K8s-master:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  4. root@K8s-master:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config
  5. root@K8s-master:~# kubectl get nodes

    root@K8s-master:~# kubectl apply -f kube-flannel.yml
  1. 14.验证k8s集群状态
  2. root@K8s-master:/# kubectl get cs
  3. NAME STATUS MESSAGE ERROR
  4. controller-manager Healthy ok
  5. scheduler Healthy ok
  6. etcd-0 Healthy {"health":"true"}
  7.  
  8. 15当前csr证书状态
  9. root@K8s-master:/# kubectl get csr
  10. NAME AGE REQUESTOR CONDITION
  11. csr-4s2pt 52m system:bootstrap:1gm82e Approved,Issued
  12. csr-kkr64 84m system:node:k8s-master Approved,Issued
  13. csr-km8fl 51m system:bootstrap:1gm82e Approved,Issued
  1. 16.k8s集群添加node节点
  2.  
  3. kubeadm join 10.0.0.50:6443 --token 1gm82e.z91u96kh4cxes0o1 \
  4. --discovery-token-ca-cert-hash sha256:8427c509f211eece6e720623628d8895ccaf63b8482f85daf79002aec99bd682
  5.  
  6. 17.验证当前node节点状态
  7.  
  8. root@K8s-master:/# kubectl get node
  9. NAME STATUS ROLES AGE VERSION
  10. k8s-master Ready master 86m v1.17.2
  11. k8s-node1 Ready <none> 54m v1.17.2
  12. k8s-node2 Ready <none> 53m v1.17.2

## kubernetes集群部署到这里全部结束!!!希望对你能有所帮助!!

一文吃透如何部署kubernetes高可用集群的更多相关文章

  1. 一键部署Kubernetes高可用集群

    三台master,四台node,系统版本为CentOS7 IP ROLE 172.60.0.226 master01 172.60.0.86 master02 172.60.0.106 master0 ...

  2. 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  3. 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)

    一.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm ...

  4. 部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下

    七.高可用架构(扩容多Master架构) Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失 ...

  5. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  6. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  7. 部署MYSQL高可用集群

                                                  mysql-day08     部署MYSQL高可用集群 u 集群架构                   ...

  8. 部署zookeepe高可用集群

                                                                部署zookeepe高可用集群 部署规划 Nno1         192.16 ...

  9. 搭建 Kubernetes 高可用集群

    使用 3 台阿里云服务器(k8s-master0, k8s-master1, k8s-master2)作为 master 节点搭建高可用集群,负载均衡用的是阿里云 SLB ,需要注意的是由于阿里云负载 ...

随机推荐

  1. AtCoder Beginner Contest 169

    比赛链接:https://atcoder.jp/contests/abc169/tasks A - Multiplication 1 #include <bits/stdc++.h> us ...

  2. P1108 低价购买(DP)

    题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...

  3. A. Little Elephant and Interval

    The Little Elephant very much loves sums on intervals. This time he has a pair of integers l and r ( ...

  4. servlet接口实现类HttpServlet以及开发中一些细节

    1. 但是eclipse不会帮我们改web.xml配置文件,所以我们也要在web.xml文件里面手动改 2. 这个样子的话你在用浏览器访问的时候链接的映射就改成了t_day05,这个主要用于你建立完一 ...

  5. 部署gitlab-01

    Gitlab Server 部署 1.环境配置 关闭防火墙.SELinux 开启邮件服务 systemctl start postfix systemctl enable postfix#ps:不开去 ...

  6. 翻译:《实用的Python编程》01_03_Numbers

    目录 | 上一节 (1.2 第一个程序) | 下一节 (1.4 字符串) 1.3 数字 本节讨论数学计算. 数字类型 Python 有 4 种类型的数字: 布尔型 整型 浮点型 复数(虚数) 布尔型( ...

  7. Apple & 人体工程学

    Apple & 人体工程学 https://support.apple.com/zh-cn/HT205655 MBP 2018 https://help.apple.com/macbookpr ...

  8. Express vs Koa

    Express vs Koa https://www.esparkinfo.com/express-vs-koa.html https://www.cleveroad.com/blog/the-bes ...

  9. CSS3 Grid Layout & <track-size> & <line-name>

    CSS3 Grid Layout & <track-size> & <line-name> grid container grid-template: < ...

  10. css effect all in one

    css effect all in one CSS 特效汇总 / 前端特效汇总 图片滑动对比 https://www.fika.io/ https://chrome.google.com/websto ...