写给想入门kubernetes的同学们

# 系统版本

  1. [root@master ~]# cat /etc/os-release
  2. NAME="CentOS Linux"
  3. VERSION="7 (Core)"
  4. ID="centos"
  5. ID_LIKE="rhel fedora"
  6. VERSION_ID="7"
  7. PRETTY_NAME="CentOS Linux 7 (Core)"
  8. ANSI_COLOR="0;31"
  9. CPE_NAME="cpe:/o:centos:centos:7"
  10. HOME_URL="https://www.centos.org/"
  11. BUG_REPORT_URL="https://bugs.centos.org/"
  12.  
  13. CENTOS_MANTISBT_PROJECT="CentOS-7"
  14. CENTOS_MANTISBT_PROJECT_VERSION="7"
  15. REDHAT_SUPPORT_PRODUCT="centos"
  16. REDHAT_SUPPORT_PRODUCT_VERSION="7"

#主机环境

  1. 网络规划
  2. 172.20.0.0/16 node通信网络
  3. master 172.20.0.2
  4. node1 172.20.0.3
  5. node2 172.20.0.4
  6.  
  7. 10.244.0.0/16 Pod 网络
  8.  
  9. 10.96.0.0/12 Service 网络
    #内核参数

[root@master ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

使配置生效

[root@linux-node1 ~]# sysctl --system

  

# 初始化操作

安装 docker 和 kubeadm 在各个节点上(建议使用阿里云资源进行安装,不然会很卡)https://opsx.alibaba.com/mirror

  1. # step 1: 安装必要的一些系统工具
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. # Step 2: 添加软件源信息
  4. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. # Step 3: 更新并安装 Docker-CE
  6. sudo yum makecache fast
  7. sudo yum -y install docker-ce
  8. # Step 4: 开启Docker服务
  9. sudo service docker start
  10.  
  11. # kubeadm
  12. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  13. [kubernetes]
  14. name=Kubernetes
  15. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  16. enabled=1
  17. gpgcheck=1
  18. repo_gpgcheck=1
  19. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  20. EOF
  21. setenforce 0
  22. yum install -y kubelet kubeadm kubectl
  23. systemctl enable kubelet

# 镜像拉去

执行kubeadm init  进程会帮我们自动拉去这些进程并初始化master 集群。但是貌似这些镜像不太好拉去。

我选择的方式是购买共有云的香港节点,安装docker 手动进行资源拉去 然后在打包 docker文件夹(/var/lib/docker),然后覆盖三台主机的docker主程序目录。

  1. [root@master ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. k8s.gcr.io/kube-apiserver v1.13.3 fe242e556a99 3 weeks ago 181MB
  4. k8s.gcr.io/kube-controller-manager v1.13.3 0482f6400933 3 weeks ago 146MB
  5. k8s.gcr.io/kube-proxy v1.13.3 98db19758ad4 3 weeks ago 80.3MB
  6. k8s.gcr.io/kube-scheduler v1.13.3 3a6f709e97a0 3 weeks ago 79.6MB
  7. k8s.gcr.io/coredns 1.2.6 f59dcacceff4 3 months ago 40MB
  8. k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 5 months ago 220MB
  9. k8s.gcr.io/pause 3.1 da86e6ba6ca1 14 months ago 742kB

# 执行 kubeadm init

mkdir .kube

cp  /etc/kubernetes/admin.conf  .kube/config

  1. node节点加入我们的master节点需要做两方面操作
  2. 1 配置好hosts文件解析
  3. 2 使用命令行加入k8s集群
  4. kubeadm join 172.20.0.91:6443 --token zibyeb.pmujgusravogr0k9 --discovery-token-ca-cert-hash sha256:f5f12fe4f58fbf698f33eb078c8b98b8491e2e2e996230926f
  5.  
  6. 一个是token 默认24小时失效 可通过 kubeadm token命令进行create
  7. 一个是 根证书的 sha256
  8. 通过以下命令获取
  9. openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
  10.  
  11. node节点会安装flannle 然后变成可用
    For Kubernetes v1.7+ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#  最后状态

  1. [root@master ~]# kubectl get nodes -o wide
  2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  3. k8s-node1 Ready <none> 5d6h v1.13.3 172.20.0.3 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.2
  4. k8s-node2 Ready <none> 5d6h v1.13.3 172.20.0.4 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.2
  5. master Ready master 5d9h v1.13.3 172.20.0.2 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.2

#   kubectl  命令行自动补全

  1. source < $(kubectl completion bash )
  2. kubectl completion bash > ~/.kube/completion.bash.inc

#  搞定了 开始你的  k8s 之路吧。

kubeadm 帮你做了什么

  1. [init]:指定版本进行初始化操作
  2.  
  3. [preflight] :初始化前的检查和下载所需要的Docker镜像文件
  4.  
  5. [kubelet-start] :生成kubelet的配置文件”/var/lib/kubelet/config.yaml”,没有这个文件kubelet无法启动,所以初始化之前的kubelet实际上启动失败。
  6.  
  7. [certificates]:生成Kubernetes使用的证书,存放在/etc/kubernetes/pki目录中。
  8.  
  9. [kubeconfig] :生成 KubeConfig 文件,存放在/etc/kubernetes目录中,组件之间通信需要使用对应文件。
  10.  
  11. [control-plane]:使用/etc/kubernetes/manifest目录下的YAML文件,安装 Master 组件。
  12.  
  13. [etcd]:使用/etc/kubernetes/manifest/etcd.yaml安装Etcd服务。
  14.  
  15. [wait-control-plane]:等待control-plan部署的Master组件启动。
  16.  
  17. [apiclient]:检查Master组件服务状态。
  18.  
  19. [uploadconfig]:更新配置
  20.  
  21. [kubelet]:使用configMap配置kubelet
  22.  
  23. [patchnode]:更新CNI信息到Node上,通过注释的方式记录。
  24.  
  25. [mark-control-plane]:为当前节点打标签,打了角色Master,和不可调度标签,这样默认就不会使用Master节点来运行Pod
  26.  
  27. [bootstrap-token]:生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到
  28.  
  29. [addons]:安装附加组件CoreDNSkube-proxy

  

k8s(一) kubeadm简单集群初始化的更多相关文章

  1. Kubernetes 使用kubeadm创建集群

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 实践环境 CentOS-7-x86_64-DVD-1810 Docker 19.03.9 Kubernetes version: v1.20.5 ...

  2. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  3. K8S部署Redis Cluster集群

    kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...

  4. K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

    一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...

  5. 阿里云EMR集群初始化后的开发准备工作

              前言:EMR的集群使用越来越普遍,但是每一次的集群释放到集群的重新创建,期间总有一些反复的工作需要查询与配置.为方便后续工作查阅,现在对集群初始化后的工作进行大概的梳理如下.   ...

  6. Jedis cluster集群初始化源码剖析

    Jedis cluster集群初始化源码剖析 环境 jar版本: spring-data-redis-1.8.4-RELEASE.jar.jedis-2.9.0.jar 测试环境: Redis 3.2 ...

  7. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  9. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

随机推荐

  1. Keil软件常见配置

    1.tab键占据字节数 Edit-->Configuration-->Tab Size-->安装上默认2个空格,这里改为4,符合通用代码编辑器的处理. 2.编码配置 Edit--&g ...

  2. EF CRUD

    EF 使用心得 有点傻逼! 1.通常情况 表实例一个对象 T_User model = new T_User(); 2.关键 非空字段赋值主键必须要写 model.EID = "009&qu ...

  3. Item 21: 比起直接使用new优先使用std::make_unique和std::make_shared

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 让我们先从std::make_unique和std::make_s ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(91)-EF 连接 MySql

    前言 虽然系统目前只支持MSSQL版本,但是很多朋友公司技术规定必须使用MySql,下面我们就来使用EF连接MySQL吧! (1)安装MYSQL环境 1.下载安装MYSQL数据,这里我们安装phpSt ...

  5. Meterpreter常⻅见⽤用法

    0x01 背景 meterpreter作为后渗透模块有多种类型,并且命令由核⼼心命令和扩展库命令组成,极⼤大的丰富了了攻击⽅方式. 需要说明的是meterpreter在漏漏洞洞利利⽤用成功后会发送第二 ...

  6. CONTINUE...?模拟分情况

    CONTINUE...? DreamGrid has  classmates numbered from  to . Some of them are boys and the others are ...

  7. 006-筛选分类排序搜索查找Filter-Classificatio-Sort-Search-Find-Seek-Locate

    006-筛选分类排序搜索查找Filter-Classificatio-Sort-Search-Find-Seek-Locate https://www.cnblogs.com/delphixx/p/1 ...

  8. Node.js api接口和SQL数据库关联

    数据库表创建 服务器环境配置.连接 .操作.数据库 API接口  原则:

  9. Median String CodeForces - 1144E

    You are given two strings ss and tt, both consisting of exactly kk lowercase Latin letters, ss is le ...

  10. 使用C# HttpWebRequest进行多线程网页提交。Async httpclient/HttpWebRequest实现批量任务的发布及异步提交和超时取消

    使用线程池并发处理request请求及错误重试,使用委托处理UI界面输出. http://www.cnblogs.com/Charltsing/p/httpwebrequest.html for (i ...