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. 代码审计学习01-in_array() 函数缺陷

    一.开始代码审计之旅 01 从今天起,学习代码审计了,这篇文章就叫代码审计01吧,题目来自 PHP SECURITY CALENDAR 2017 的第一题,结合 红日安全 写的文章,开始吧. 二.先看 ...

  2. springBoot之 spring-boot-starter-parent 引入详解

    springBoot中引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...

  3. A - A Flipping Game

    这道题判断如何选择区间进行01变换让数列中的1个数最多,可以用暴力做法来做,每选择一个区间求出一个值,最后找到一个最大值. Iahub got bored, so he invented a game ...

  4. PTA刷题记录

    考虑到PAT甲级考试和开学后的XCPC比赛,决定寒假把PAT (Advanced Level) Practice刷完,进度条会在这篇博客下更新.由于主要以记录为主,大体上不会像单篇题解那么详细,但是对 ...

  5. 2020牛客暑期多校训练营(第四场)BCFH

    BCFH B. Basic God Problem 题意 给出c和n,求fc(n). 题解 递归到最后 fc 函数肯定等于1,那么就变成了求c被乘了几次,只要找到 x 最多能被分解成多少个数相乘就好了 ...

  6. P1280 尼克的任务(DP)

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  7. Educational Codeforces Round 88 (Rated for Div. 2) B、New Theatre Square C、Mixing Water

    题目链接:B.New Theatre Square 题意: 你要把所有"." 都变成"*",你可以有两个选择,第一种就是一次铺一个方块(1*1),第二种就是同一 ...

  8. 2019 Multi-University Training Contest 5——permutation 2

    传送门 题意: t组输入,之后每组例子有三个数n.x.y代表在一个以x为开头y为结尾的长为n的数组里面,开头和结尾数据已经固定,让你从1--n中找其他数据填入数组中 (每个数据不能重复使用),使它满足 ...

  9. Codeforces Round #691 (Div. 2) C. Row GCD (数学)

    题意:给你两个数组\(a\)和\(b\),对于\(j=1,...,m\),找出\(a_1+b_j,...,a_n+b_j\)的\(gcd\). 题解:我们很容易的得出\(gcd\)的一个性质:\(gc ...

  10. Python中“*”和“**”的用法 || yield的用法 || ‘$in’和'$nin' || python @property的含义

    一.单星号 * 采用 * 可将列表或元祖中的元素直接取出,作为随机数的上下限: import random a = [1,4] print(random.randrange(*a)) 或者for循环输 ...