容器编排之Kubernetes1.10.2安装与配置
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安装与配置的更多相关文章
- 容器编排之Kubernetes1.7.6安装与配置
kubernetes官网的安装教程是采用kubeadm init的方式,但是在生产环境当中,可能需要独自手动安装k8s,本文采用源码安装的方式,一步步搭建k8s的master节点和node节点. 系统 ...
- ubuntu10.10 tftp安装,配置,测试
ubuntu10.10 tftp安装,配置,测试 成于坚持,败于止步 虽然ubuntu/centos/redhat都是linux,但是内核其中存在一定的修改,所以对于tftp服务器的安装存在不同的命令 ...
- MySQL安装 MySQL5.7.10免安装版配置,mysql5.7.10免安装版
MySQL5.7.10免安装版配置,mysql5.7.10免安装版 最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: ...
- ArcSDE 10.1安装、配置、连接
ArcSDE 10.1安装.配置.连接 (SQL Server 2008) 1 概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版本,有了一些显著的变化,比如取消了Post ...
- ArcSDE 10.1安装、配置、连接 (SQL Server 2008)
转自:http://blog.csdn.net/esrichinacd/article/details/8510224 1 概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版 ...
- 容器与容器编排实战系列 1 -- Docker 安装
CentOS7.4 下安装Docker 详细步骤 第一步:安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yu ...
- MySQL5.7.10免安装版配置
最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: mysql-5.7.10-winx64 + win7(64位) 一 ...
- Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows
知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html ------------------------ 安装方式有3种: (1)Windows ...
- ActiveMQ 5.10.0 安装与配置
先在官网下载activeMQ,我这里是5.10.0. 然后在解压在一个文件夹下即可. 我这里是:D:\apache-activemq-5.10.0-bin 然后进入bin目录:D:\apache-ac ...
随机推荐
- 通过PowerShell命令给Azure VM添加CustomScriptExtension
Azure的VM提供了一种管理工具叫Azure VM Extension.它实现了一些管理虚拟机所需要的重要功能,比如:重设密码.设置RDP参数.以及许多其他关键的功能,并且Azure VM一直在添加 ...
- 一个WCF使用TCP协议进行通协的例子
在解决方案资源管理器中,需要添加两个引用:System.ServiceModel和WCFService.然后双击窗口,在Form_Load事件中编写如下代码: 添加一个应用程序配置文件App.Conf ...
- 西安电子科技大学第16届程序设计竞赛 E Xieldy And His Password
链接:https://www.nowcoder.com/acm/contest/107/E来源:牛客网 Xieldy And His Password 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...
- ECS Windows系统使用自带监视器查看IIS并发连接数
问题现象 ECS Windows系统如何查看IIS并发连接数? 解决方案 1.运行-->输入“perfmon.msc” . 2.在“系统监视器”图表区域里点击右键,然后点“添加计数器”. 3.在 ...
- java 多线程系列基础篇(六)之线程让步
1. yield()介绍 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其 ...
- 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图 ...
- windows 10微软账户不能访问局域网共享,但是本地账户可以访问
windows10有时候无法访问局域网的共享文件夹.会提示没有权限. 如果共享的文件夹已经设置为everyone,那么通常是windows 10用的是微软账户登录的. 有两个方案可以处理这种情况. 一 ...
- executeUpdate,executeQuery,executeBatch 的区别
executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...
- OpenCV4Android 不需要安装OpenCVManager,就可以运行的方法
http://blog.csdn.net/yanzi1225627/article/details/27863615 OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种 ...
- sqlserver 查询int类型 in (字符串) 报转换int类型出错的问题
, , '') ) AS c_departNames FROM t_user AS A LEFT JOIN t_role AS B ON A.c_roleId=B.c_roleId 用 CHARIND ...