k8s 1.10.2 https搭建文档

1.下载k8s镜像

方式一:docker hub + github,需要创建一个docker hub账户,连接指定的github账户,docker hub会从github中引用相关Dockerfile,k8s版本以及镜像名称可以从github获取,构建任务后docker hub会从google拉取镜像,以kube-apiserver Dockerfile举例。

例:

FROM gcr.io/google_containers/kube-apiserver-amd64:v1.10.2

MAINTAINER xxxx <xxxx@163.com>

镜像构建完成后,可直接docker pull下载镜像。

# 需要在docker hub将该repo设置为public。

方式二:github下载release版本的k8s,解压后执行~/kubernetes/cluster/get-kube-binaries.sh,会下载kubernetes-server-linux-amd64.tar.gz,解压后会看到k8s各个组件的镜像以及相关二进制文件和配置模板。

2.创建配置文件及目录

mkdir -p /etc/kubernetes/{pki,manifests}

kubelet.service

[Service]

ExecStart=/usr/local/bin/kubelet

Restart=on-failure

StartLimitInterval=0

RestartSec=10

Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubeconfig --config=/etc/kubernetes/kubelet.yaml"

Environment="KUBE_LOGTOSTDERR=--logtostderr=true --v=0 --log-dir=/var/log/kubelet.log --allow-privileged=true"

Environment="KUBELET_POD_CONTAINER=--pod-infra-container-image=gcr.io/google_containers/pause-amd64:3.0"

Environment="KUBE_NODE_LABEL=--node-labels=node-role.kubernetes.io/master=true --register-node=true"

ExecStart=

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_POD_CONTAINER $KUBE_LOGTOSTDERR $KUBE_NODE_LABEL

[Install]

antedBy=multi-user.target

kubelet.yaml

kind: KubeletConfiguration

apiVersion: kubelet.config.k8s.io/v1beta1

evictionHard:

memory.available:  "200Mi"

CgroupDriver:  systemd

failSwapOn: false

serializeImagePulls: false

podManifestPath: /etc/kubernetes/manifests

address: 0.0.0.0

port: 10250

apiserver.yaml controller-manager.yaml  scheduler.yaml从https://github.com/cjfpjt/kubernetes.git的yaml文件夹下下载

3.创建证书

ApiServer认证,认证一共有三种方式:

1)Https双向认证(最安全)

2)Http Token认证

3)Http Base认证,用户名和密码

生成token.csv

token的生成方式:head -c 16 /dev/urandom | od -An -t x | tr -d ' ‘

cat > token.csv

d0b54455f7cc574b4825293626be75ea,user1,1

# 这里的user1是我们后面设置上下文需要用到的用户名,不能写错

ca证书的生成方式:

链接:https://kubernetes.io/docs/concepts/cluster-administration/certificates/

我们采用简洁的openssl(以pre-k8s-master举例)

1. openssl genrsa -out ca.key 2048

2. openssl req -x509 -new -nodes -key ca.key -subj "/CN= ${MASTER}" -days 10000 -out ca.crt

3. openssl genrsa -out server.key 2048

4. cat csr.conf

[ req ]

default_bits = 2048

prompt = no

default_md = sha256

req_extensions = req_ext

distinguished_name = dn

[ dn ]

C = CN

ST = beijing

L = beijing

O = company

OU = company

CN = 内网ip

[ req_ext ]

subjectAltName = @alt_names

[ alt_names ]

DNS.1 = kubernetes

DNS.2 = kubernetes.default

DNS.3 = kubernetes.default.svc

DNS.4 = kubernetes.default.svc.cluster

DNS.5 = kubernetes.default.svc.cluster.local

IP.1 = 内网ip

IP.2 = slb或者公网ip

IP.3 = 10.96.0.1

[ v3_ext ]

authorityKeyIdentifier=keyid,issuer:always

basicConstraints=CA:FALSE

keyUsage=keyEncipherment,dataEncipherment

extendedKeyUsage=serverAuth,clientAuth

subjectAltName=@alt_names

5. openssl req -new -key server.key -out server.csr -config csr.conf

6. openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf

7. openssl x509  -noout -text -in ./server.crt

ca以及证书创建完毕。

apiserver.yaml配置项添加如下参数:

—client-ca-file=/etc/kubernetes/pki/ca.crt

—tls-cert-file=/etc/kubernetes/pki/server.crt

—tls-private-key-file=/etc/kubernetes/pki/server.key

—token=/etc/kubernetes/token.csv

controller-manager.yaml配置项添加如下参数:

--root-ca-file=/etc/kubernetes/pki/ca.crt

--service-account-private-key-file=/etc/kubernetes/pki/server.key

设置kubeconfig(在master上操作)

# kubeconfig如果不指定配置文件名称、路径,默认会保存在/root/.kube/config文件下,该文件的作用是向node节点提供注册所需要的配置信息,如集群名称、认证名称、用户名称、通信方式等。

创建脚本kube.sh

cat kube.sh

#!/bin/bash

KUBE_APISERVER="https://slb或者公网ip:6443"

cd /etc/kubernetes/pki && \

kubectl config set-cluster kubernetes \

--certificate-authority=ca.crt \

--embed-certs=true \

--server=${KUBE_APISERVER} \

--kubeconfig=../kubelet.conf && \

kubectl config set-credentials user1 \

--token=${BOOTSTRAP_TOKEN}

--kubeconfig=../kubelet.conf && \

# —client-certificate=server.crt \

# —client-key=server.key \

# —embed-certs=true \

kubectl config set-context kubernetes \

--cluster=kubernetes \

--user=user1 \

--kubeconfig=../kubelet.conf && \

kubectl config use-context kubernetes \

--kubeconfig=../kubelet.conf

创建完成后,会生成/etc/kubernetes/kubelet.conf文件,将该文件拷贝至/root/.kube/config文件。

验证配置是否正确:

curl https://172.17.100.27:6443/api/v1/nodes --cacert /etc/kubernetes/pki/ca.crt --cert /etc/kubernetes/pki/server.crt --key /etc/kubernetes/pki/server.key -H 'Authorization: Bearer d0b54455f7cc574b4825293626be75ea' -v

# d0b54455f7cc574b4825293626be75ea为生成的token值。

验证完成后即可添加node节点,k8s搭建完成。

容器编排之Kubernetes1.10.2安装与配置的更多相关文章

  1. 容器编排之Kubernetes1.7.6安装与配置

    kubernetes官网的安装教程是采用kubeadm init的方式,但是在生产环境当中,可能需要独自手动安装k8s,本文采用源码安装的方式,一步步搭建k8s的master节点和node节点. 系统 ...

  2. ubuntu10.10 tftp安装,配置,测试

    ubuntu10.10 tftp安装,配置,测试 成于坚持,败于止步 虽然ubuntu/centos/redhat都是linux,但是内核其中存在一定的修改,所以对于tftp服务器的安装存在不同的命令 ...

  3. MySQL安装 MySQL5.7.10免安装版配置,mysql5.7.10免安装版

    MySQL5.7.10免安装版配置,mysql5.7.10免安装版  最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: ...

  4. ArcSDE 10.1安装、配置、连接

    ArcSDE 10.1安装.配置.连接 (SQL Server 2008) 1  概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版本,有了一些显著的变化,比如取消了Post ...

  5. ArcSDE 10.1安装、配置、连接 (SQL Server 2008)

    转自:http://blog.csdn.net/esrichinacd/article/details/8510224 1  概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版 ...

  6. 容器与容器编排实战系列 1 -- Docker 安装

    CentOS7.4 下安装Docker 详细步骤 第一步:安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yu ...

  7. MySQL5.7.10免安装版配置

     最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: mysql-5.7.10-winx64 + win7(64位) 一 ...

  8. Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows

    知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html ------------------------ 安装方式有3种: (1)Windows ...

  9. ActiveMQ 5.10.0 安装与配置

    先在官网下载activeMQ,我这里是5.10.0. 然后在解压在一个文件夹下即可. 我这里是:D:\apache-activemq-5.10.0-bin 然后进入bin目录:D:\apache-ac ...

随机推荐

  1. Django基础(二)—— models

    六:Models示例 Django本身提供了非常强大易使用的ORM组件,并且支持多种数据库. 配置连接数据文件 在自己创建的project 目录下编辑settings.py DATABASES = { ...

  2. mysql 异常宕机 ..InnoDB: Database page corruption on disk or a failed,,InnoDB: file read of page 8.

    mysql 测试环境异常宕机 系统:\nKylin 3.3 mysql版本:5.6.15--yum安装,麒麟提供的yum源数据库版本 error日志 181218 09:38:52 mysqld_sa ...

  3. 数据库学习笔记(二)MySQL数据库进阶

    MySQL 进阶 关于连表 左右连表: join 上下连表: union #自动去重 (当两张表里的数据,有重复的才会自动去重) union all #不去重 #上下连表示例: select sid, ...

  4. 2017年总结&2018年计划

    谈一谈2017年计划: 1.完成壁咚项目2.写一个自己的扫描器3.完善web安全手册.4.搞一个大漏洞或CVE的漏洞 完成进度:1.壁咚这个项目,当初发誓要用java来写完,其实最开始就已经写完了,前 ...

  5. 2016.8.17服务器端数据库用户导入导出方法 expdp和impdp

    EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. IMP只适用于EXP导出的 ...

  6. 转载 : JSP取得绝对路径

    转自:https://www.aliyun.com/jiaocheng/770177.html 转自:http://www.cnblogs.com/xdp-gacl/p/3707243.html 在J ...

  7. ORA-04098 trigger 'DBBJ.DB_EV_ALTER_ST_METADATA' is invalid and failed re-validation

    转自:https://blog.csdn.net/dragoo1/article/details/9411105 ORA-04098: trigger 'DBBJ.DB_EV_ALTER_ST_MET ...

  8. DAY15-web框架本质及第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  9. 详解CSS盒模型(转)

    详解CSS盒模型   阅读目录 一些基本概念 盒模型 原文地址:http://luopq.com/2015/10/26/CSS-Box-Model/ 本文主要是学习CSS盒模型的笔记,总结了一些基本概 ...

  10. hibernate第三天 一对多 , 多对多

    1.1. 阐述你对inverse的理解 答: 1.inverse的默认值是false,代表不放弃外键维护权,配置值为true,代表放弃了外键的维护权. 2.双方维护外键会多产生update语句,造成浪 ...