链接地址 https://www.cnblogs.com/leleyao/p/10453848.html  安装etcd

证书制作

apiserver 证书

  1. [root@master01 ssl]# ls *json
  2. ca-config.json ca-csr.json server-csr.json
  3. [root@master01 ssl]# cat *json
  4. {
  5. "signing": {
  6. "default": {
  7. "expiry": "87600h"
  8. },
  9. "profiles": {
  10. "kubernetes": {
  11. "expiry": "87600h",
  12. "usages": [
  13. "signing",
  14. "key encipherment",
  15. "server auth",
  16. "client auth"
  17. ]
  18. }
  19. }
  20. }
  21. }
  22. {
  23. "CN": "kubernetes",
  24. "key": {
  25. "algo": "rsa",
  26. "size": 2048
  27. },
  28. "names": [
  29. {
  30. "C": "CN",
  31. "L": "BeiJing",
  32. "ST": "BeiJing",
  33. "O": "cnpc",
  34. "OU": "RF"
  35. }
  36. ]
  37. }
  38. {
  39. "CN": "kubernetes",
  40. "hosts": [
  41. "10.0.0.1",
  42. "127.0.0.1",
  43. "172.16.8.100",
  44. "kubernetes",
  45. "kubernetes.default",
  46. "kubernetes.default.svc",
  47. "kubernetes.default.svc.cluster",
  48. "kubernetes.default.svc.cluster.local"
  49. ],
  50. "key": {
  51. "algo": "rsa",
  52. "size": 2048
  53. },
  54. "names": [
  55. {
  56. "C": "CN",
  57. "L": "BeiJing",
  58. "ST": "BeiJing",
  59. "O": "cnpc",
  60. "OU": "RF"
  61. }
  62. ]
  63. }
  64.  
  65. cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
  66. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

kube-proxy 的证书

  1. [root@master01 ssl]# cat proxy-csr.json
  2. {
  3. "CN": "kube-proxy",
  4. "hosts": [],
  5. "key": {
  6. "algo": "rsa",
  7. "size": 2048
  8. },
  9. "names": [
  10. {
  11. "C": "CN",
  12. "L": "BeiJing",
  13. "ST": "BeiJing",
  14. "O": "cnpc",
  15. "OU": "RF"
  16. }
  17. ]
  18. }
  19.  
  20. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes proxy-csr.json | cfssljson -bare kube-proxy

配置flannel 服务

  1. etcdctl --cacert=/etc/etcd/ssl/ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem --endpoints=https://192.168.141.135:2379,https://192.168.141.136:2379,https://192.168.141.137:2379 put /coreos.com/network/config '{ "Network": "172.18.0.0/16", "Backend": {"Type": "vxlan"}}
  2. flanneld 当前版本 (v0.10.0) 不支持 etcd v3,故使用 etcd v2 API 写入配置 key 和网段数据

修改配置文件

  1. 通过yum方式获取默认 systemd 文件
    [root@master01 ~]# cat /usr/lib/systemd/system/flanneld.service
  2. [Unit]
  3. Description=Flanneld overlay address etcd agent
  4. After=network.target
  5. After=network-online.target
  6. Wants=network-online.target
  7. After=etcd.service
  8. Before=docker.service
  9.  
  10. [Service]
  11. Type=notify
  12. EnvironmentFile=/etc/sysconfig/flanneld
  13. EnvironmentFile=-/etc/sysconfig/docker-network
  14. ExecStart=/bin/flanneld-start $FLANNEL_OPTIONS #注意启动命令的位置
  15. ExecStartPost=/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker #博主nc,写错了路径 flannel 重启了 1000次
  16. Restart=on-failure
  17.  
  18. [Install]
  19. WantedBy=multi-user.target
  20. WantedBy=docker.service

[root@master01 ~]# cat /usr/lib/systemd/system/docker.service.d/flannel.conf
[Service]
EnvironmentFile=-/run/flannel/docker

  1. [root@master01 ~]# rpm -ql flannel
  2. /etc/sysconfig/flanneld
  3. /run/flannel
  4. /usr/bin/flanneld
  5. /usr/bin/flanneld-start
  6. /usr/lib/systemd/system/docker.service.d/flannel.conf
  7. /usr/lib/systemd/system/flanneld.service
  8. /usr/lib/tmpfiles.d/flannel.conf
  9. /usr/libexec/flannel
  10. /usr/libexec/flannel/mk-docker-opts.sh
  11. /usr/share/doc/flannel-0.7.
  12. /usr/share/doc/flannel-0.7./CONTRIBUTING.md
  13. /usr/share/doc/flannel-0.7./DCO
  14. /usr/share/doc/flannel-0.7./LICENSE
  15. /usr/share/doc/flannel-0.7./MAINTAINERS
  16. /usr/share/doc/flannel-0.7./NOTICE
  17. /usr/share/doc/flannel-0.7./README.md
    保留 /etc/flanne/usr/lib/systemd/system/docker.service.d/flannel.conf/usr/lib/systemd/system/flanneld.service
  1. [root@master01 ~]# cd /etc/kubernetes/
    [root@master01 kubernetes]# mkdir flannel
  1. [root@master01 flannel]# cp /usr/lib/systemd/system/docker.service.d/flannel.conf .
  2. [root@master01 flannel]# cp /etc/sysconfig/flanneld .
  3. [root@master01 flannel]# cp /usr/lib/systemd/system/flanneld.service .

[root@master01 flannel]# vim /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS=FLANNEL_ETCD_ENDPOINTS=FLANNEL_ETCD_ENDPOINTS="-etcd-cafile=/etc/etcd/ssl/ca.pem -etcd-certfile=/etc/etcd/ssl/etcd.pem -etcd-keyfile=/etc/etcd/ssl/etcd-key.pem -etcd-endpoints=https://192.168.141.135:2379,https://192.168.141.136:2379,https://192.168.141.137:2379"

# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/coreos.com/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

[root@master01 flannel]# ansible all -m copy -a 'src=/etc/sysconfig/flanneld dest=/etc/sysconfig/flanneld'
192.168.141.135 | SUCCESS => {
"changed": false,
"checksum": "d45252d0c4214ef41743ae03ef0efa2668b84add",
"gid": 0,
"group": "root",
"mode": "0644",
"owner": "root",
"path": "/etc/sysconfig/flanneld",
"size": 536,
"state": "file",
"uid": 0
}
192.168.141.137 | SUCCESS => {
"changed": true,
"checksum": "d45252d0c4214ef41743ae03ef0efa2668b84add",
"dest": "/etc/sysconfig/flanneld",
"gid": 0,
"group": "root",
"md5sum": "3da1d82f18fda0747be4565ea1f426f7",
"mode": "0644",
"owner": "root",
"size": 536,
"src": "/root/.ansible/tmp/ansible-tmp-1558088021.59-228568509248759/source",
"state": "file",
"uid": 0
}
192.168.141.136 | SUCCESS => {
"changed": true,
"checksum": "d45252d0c4214ef41743ae03ef0efa2668b84add",
"dest": "/etc/sysconfig/flanneld",
"gid": 0,
"group": "root",
"md5sum": "3da1d82f18fda0747be4565ea1f426f7",
"mode": "0644",
"owner": "root",
"size": 536,
"src": "/root/.ansible/tmp/ansible-tmp-1558088021.57-153282686622293/source",
"state": "file",
"uid": 0
}

mk-docker-opts.sh 脚本将分配给 flanneld 的 Pod 子网网段信息写入 /run/flannel/docker 文件,后续 docker 启动时 使用这个文件中的环境变量配置 docker0 网桥;

flanneld 使用系统缺省路由所在的接口与其它节点通信,对于有多个网络接口(如内网和公网)的节点,可以用 -iface 参数指定通信接口,如上面的 eth0 接口;

flanneld 运行时需要 root 权限

确定 etcd状态

[root@master02 yum.repos.d]# etcdctl --ca-file=/etc/etcd/ssl/ca.pem --cert-file=/etc/etcd/ssl/etcd.pem --key-file=/etc/etcd/ssl/etcd-key.pem --endpoints='https://192.168.141.135:2379,https://192.168.141.136:2379,https://192.168.141.137:2379' ls /coreos.com/network/subnets/
/coreos.com/network/subnets/172.18.62.0-24
/coreos.com/network/subnets/172.18.80.0-24
/coreos.com/network/subnets/172.18.53.0-24

  

二进制安装kubernetes集群的更多相关文章

  1. 二进制部署 Kubernetes 集群

    二进制部署 Kubernetes 集群   提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernet ...

  2. CentOS 7.5 使用 yum 安装 Kubernetes 集群(二)

    一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...

  3. VirtualBox上使用kubeadm安装Kubernetes集群

    之前一直使用minikube练习,为了更贴近生产环境,使用VirtualBox搭建Kubernetes集群. 为了不是文章凌乱,把在搭建过程中遇到的问题及解决方法记在了另一篇文章:安装Kubernet ...

  4. 安装Kubernetes集群时遇到的问题及解决方法

    在搭建Kubernetes集群时遇到一些问题,记录在这里. 搭建过程在另一篇文章:VirtualBox上使用kubeadm安装Kubernetes集群 1. 虚拟机安装完CentOS7登录时遇到war ...

  5. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  6. 从0到1使用Kubernetes系列(三):使用Ansible安装Kubernetes集群

    前两期的文章介绍了Kubernetes基本概念和架构,用Kubeadm+Ansible搭建Kubernetes集群所需要的工具及其作用.本篇介绍怎么使用Ansible安装Kubernetes集群. 启 ...

  7. 二进制搭建Kubernetes集群(最新v1.16.0版本)

    目录 1.生产环境k8s平台架构 2.官方提供三种部署方式 3.服务器规划 4.系统初始化 5.Etcd集群部署 5.1.安装cfssl工具 5.2.生成etcd证书 5.2.1 创建用来生成 CA ...

  8. 二进制部署kubernetes集群(上篇)

    1.实验架构 1.1.硬件环境 准备5台2c/2g/50g虚拟机,使用10.4.7.0/24 网络 .//因后期要直接向k8s交付java服务,因此运算节点需要4c8g.不交付服务,全部2c2g足够. ...

  9. 二进制文件方式安装kubernetes集群

    所有操作全部用root使用者进行,高可用一般建议大于等于3台的奇数,我们使用3台master来做高可用 练习环境说明: 参考GitHub master: kube-apiserver,kube-con ...

随机推荐

  1. 阿里P7前端需要哪些技能

    原谅我copy过来的,但是这个条理很清楚很有借鉴意义 前言 以下是从公众号的文章中获取到的一位阿里的前端架构师整理的前端架构p7的技能图谱,当然不是最完整.最系统的,所以之后我会一直维护更新这里的内容 ...

  2. android 打卡 虚拟定位 sqlite

    1.使用android5.1模拟器 android5.1模拟器使用数据库管理参数文件,6.0及以后的版本使用xml文件管理 2.使用sqlite修改配置文件 3.修改secure库中的android_ ...

  3. java中的Excel导出功能

    public void exportExcel(Long activityId, HttpServletResponse response) throws IOException { // 获取统计报 ...

  4. 前端面试题(4)JavaScript

    前端面试题JavaScript(一) JavaScript的组成 JavaScript 由以下三部分组成: ECMAScript(核心):JavaScript 语言基础 DOM(文档对象模型):规定了 ...

  5. 考研结束-开启新生活---markdown语法

    markdown语法 考研结束,正式开始提高自己的技术储备. 第一步当然是找到自己原先的博客园,记录下自己的足迹 将博客园设置为markdown编辑器 找到一篇关于markdown的语法介绍 原博文链 ...

  6. 使用Windows service创建一个简单的定时器

    一.需求 我们有时候可能会想要做一些定时任务,例如每隔一段时间去访问某个网站,或者下载一些东西到我们服务器上等等之类的事情,这时候windows service 是一个不错的选择. 二.实现 1.打开 ...

  7. Codeforces 850A - Five Dimensional Points(暴力)

    原题链接:http://codeforces.com/problemset/problem/850/A 题意:有n个五维空间内的点,如果其中三个点A,B,C,向量AB,AC的夹角不大于90°,则点A是 ...

  8. django搭建一个小型的服务器运维网站-用户登陆与session

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

  9. MySQL备份之XtraBackup工具使用

    数据库的完整备份 [root@vhost1 ~]# innobackupex --defaults-file=/mysqldata/3306/my.cnf  --user=root   --passw ...

  10. SQLiteDatabase 数据库使用

    0 SQLiteDatabases数据库特点 一种切入式关系型数据库,支持事务,可使用SQL语言,独立,无需服务.程序内通过类名可访问数据库,程序外不可以访问. SQLiteDatabases数据库使 ...