搭建kubernetes(v1.3.3)集群及相关管理组件

目 录
1. 综述 2
1.1. 背景 2
1.2. 目的 2
1.3. 适用范围 2
2. 集群环境说明 3
3. Docker安装 3
3.1. 解压docker二进制文件,并移动至/usr/bin 3
3.2. 配置docker.service 3
3.3. 启动docker.service 3
4. Master配置 4
4.1. 配置TLS 4
4.2. 安装calico-etcd 5
4.3. 安装calico 6
4.4. 安装kubernetes 6
5. Nodes配置 7
5.1. 配置TLS 7
5.2. 配置工作节点kubelet 8
5.3. 安装calico 9
5.4. 安装kubernetes 11
6. 配置kubectl远程访问 12
7. 安装DNS插件 13
8. 安装kubernetes UI插件(可选) 13
附件 14
附件1 calico-etcd.manifest 14
附件2 network-environment 14
附件3 calico-node.service 15
附件4 kubelet.service 15
附件5 kubernetes-master.manifest 16
附件6 network-environment 19
附件7 kubelet.service 19
附件8 kube-proxy.manifest 20
附件9 skydns.yaml 21
附件10 kubernetes-dashboard.yaml 24

1. 综述

1.1. 背景

Kubernetes是一个全新的基于容器技术的分布式架构领先方案,kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制、多用户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。同时,kubernetes还提供了完善的管理工具,这些工具涵盖了包括开发、部署测试、运维监控在内的各个环节。

1.2. 目的

本文创建是为了了解kubernetes集群搭建,及配套功能的使用。本文中kubernetes包含calico、dns、dashboard。

1.3. 适用范围

本文档用于指导kubernetes集群搭建,主机操作系统为RHEL7.2

2. 集群环境说明

Kubernetes集群中的机器划分为一个Master节点和一群工作节点(Node)。
Master节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod管理、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是自动完成的。
Node作为工作节点,运行真正的应用程序,在Node上kubernetes管理的最小运行单元是Pod。Node上运行着kubernetes的kubelet和kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁,以及实现软件模式的负载均衡器。
**

3. Docker安装

**

3.1. 解压安装文件

解压docker二进制文件,并移动至/usr/bin
tar –zxf docker-1.12.1.tgz
mv docker/* /usr/bin

3.2. 配置docker.service

[Unit]
Description=Docker Daemon

[Service]
ExecStart=/usr/bin/dockerd \
--insecure-registry=192.168.2.100:5000
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

3.3. 启动docker.service

systemctl start docker.service
systemctl enable docker.service
systemctl status docker.service

**

4. Master配置

**

4.1. 配置TLS

Master节点要求有root CA公钥ca.pem;apiserver的证书apiserver.pem以及它的私钥apiserver-key.pem

**1. 按照下文创建 openssl.cnf

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
IP.1 = 10.100.0.1
IP.2 = ${MASTER_IPV4}

2. 定义MASTER_IPV4地址,替换master_ipv4为master节点地址
export MASTER_IPV4=

**3. 生成root 证
openssl genrsa -out ca-key.pem 2048.

4、指定证书申请者的个人信息
openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj “/CN=kube-ca”

5. 生成apiserver 密钥对
openssl genrsa -out apiserver-key.pem 2048
openssl req -new -key apiserver-key.pem -out apiserver.csr -subj “/CN=kube-apiserver” -config openssl.cnf
openssl x509 -req -in apiserver.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out apiserver.pem -days 365 -extensions v3_req -extfile openssl.cnf
现在生成文件有ca.pem,apiserver.pem和apiserver-key.pem

6. 移动文件至/etc/kubernetes/ssl下,并设置仅root用户只读
mkdir -p /etc/kubernetes/ssl/
mv -t /etc/kubernetes/ssl/ ca.pem apiserver.pem apiserver-key.pem

设置权限
chmod 600 /etc/kubernetes/ssl/apiserver-key.pem
chown root:root /etc/kubernetes/ssl/apiserver-key.pem

4.2. 安装calico-etcd

Calico需要配置etcd来存储状态,这里我们在master上安装一个单节点etcd。
注意:在生产部署时,建议运行分布式ercd集群,在本文中采用简单的单节点etcd。
1. 下载模板manifest文件(见附件1 calico-etcd.manifest)
wget https://raw.githubusercontent.com/projectcalico/calico-cni/k8s-1.1-docs/samples/kubernetes/master/calico-etcd.manifest

2. 替换calico-etcd.amnifest中,所有为master地址

3. 移动文件至/etc/kubernetes/manifests目录,该文件暂不启动直到kubelet启动。
mv -f calico-etcd.manifest /etc/kubernetes/manifests

4.3. 安装calico

在master安装calico,主节点将被允许在各节点之间转发数据包。
1. 安装calicoctl工具
wget https://github.com/projectcalico/calico-containers/releases/download/v0.15.0/calicoctl
chmod +x calicoctl
mv calicoctl /usr/bin

2. 获取calico镜像
docker pull calico/node:v0.15.0

3. 从calico-kubernetes仓库下载network-environment样例文件
(见附件2 network-environment)
wget -O network-environment https://raw.githubusercontent.com/projectcalico/calico-cni/k8s-1.1-docs/samples/kubernetes/master/network-environment-template

4. 修改network-environment
替换 为master的IP地址,这个IP需要能与工作节点通信。
export ETCD_AUTHORITY=:6666

5. 移动network-environment至/etc
mv -f network-environment /etc

6. 安装并启用calico-node(见附件3 calico-node.service)
wget -N -P /etc/systemd https://raw.githubusercontent.com/projectcalico/calico-cni/k8s-1.1-docs/samples/kubernetes/common/calico-node.service
systemctl enable /etc/systemd/calico-node.service
systemctl start calico-node.service

4.4. 安装kubernetes

利用kubelet来引导kubernetes。
1. 下载并安装kubelet和kubectl的二进制文件
wget -N -P /usr/bin http://storage.googleapis.com/kubernetes-release/release/v1.1.4/bin/linux/amd64/kubectl
wget -N -P /usr/bin http://storage.googleapis.com/kubernetes-release/release/v1.1.4/bin/linux/amd64/kubelet
chmod +x /usr/bin/kubelet /usr/bin/kubectl

2. 安装kubelet的单元文件并启动kubelet(见附件4 kubelet.service)
sudo wget -N -P /etc/systemd https://raw.githubusercontent.com/projectcalico/calico-cni/k8s-1.1-docs/samples/kubernetes/master/kubelet.service

sudo systemctl enable /etc/systemd/kubelet.service

启动服务
sudo systemctl start kubelet.service

3. 下载并安装master的manifest文件,kubernetes的master服务将自动运行。
(见附件5 kubernetes-master.manifest)
mkdir -p /etc/kubernetes/manifests
wget -N -P /etc/kubernetes/manifests https://raw.githubusercontent.com/projectcalico/calico-cni/k8s-1.1-docs/samples/kubernetes/master/kubernetes-master.manifest

4. 使用docker ps检查进程正常,稍等片刻可以看到etcd、apiserver、controller-manager、schedule和kebe-proxy容器在运行。
注意:启动全部容器可能需要一些时间,不用担心docker ps查到的容器启动顺序。

5. Nodes配置

以下操作在个node节点操作

5.1. 配置TLS

工作节点要求3个密钥:ca.pem、worker.pem和worker-key.pem。我们在主节点中已经获得了ca.pem和ca-key.pem,工作节点的密钥对需要在各个工作节点中生成。

1. 创建worker-openssl.cnf文件
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = $ENV::WORKER_IP

2. 输出woker的地址并生成密钥对
export WORKER_IP=

生成密钥
openssl genrsa -out worker-key.pem 2048
openssl req -new -key worker-key.pem -out worker.csr -subj “/CN=worker-key” -config worker-openssl.cnf
openssl x509 -req -in worker.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out worker.pem -days 365 -extensions v3_req -extfile worker-openssl.cnf

3. 发送密钥对至工作节点
发送3个文件(ca.pem、worker.pem和worker-key.pem)到工作节点

4. 移动密钥对至/etc/kubernetes/ssl目录下
sudo mkdir -p /etc/kubernetes/ssl/
sudo mv -t /etc/kubernetes/ssl/ ca.pem worker.pem worker-key.pem

设置权限
sudo chmod 600 /etc/kubernetes/ssl/worker-key.pem
sudo chown root:root /etc/kubernetes/ssl/worker-key.pem

5.2. 配置工作节点kubelet

放置好证书文件至指定位置后,为worker创建一个kubeconfig配置文件/etc/kubernetes/worker-kubeconfig.yaml,替换其中的为master地址
apiVersion: v1
kind: Config
clusters:
- name: local
cluster:
server: https://:443
certificate-authority: /etc/kubernetes/ssl/ca.pem
users:
- name: kubelet
user:
client-certificate: /etc/kubernetes/ssl/worker.pem
client-key: /etc/kubernetes/ssl/worker-key.pem
contexts:
- context:
cluster: local
user: kubelet
name: kubelet-context
current-context: kubelet-context

5.3. 安装calico

在你的计算节点上,在安装kubernetes之前安装calico是十分重要的。我们使用提供的calico-node.service单元文件来安装calico。

1、安装calicoctl二进制文件
wget

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值