部署k8s ssl集群实践1:基础环境准备

参考文档:
https://github.com/opsnull/follow-me-install-kubernetes-cluster
感谢作者的无私分享。
集群环境已搭建成功跑起来。
文章是部署过程中遇到的错误和详细操作步骤记录。如有需要对比参考,请按照顺序阅读和测试。

1.系统环境准备

三台虚机
系统:CentOS Linux release 7.5.1804 (Core)
主机名字和ip

k8s-master 192.168.1.92
k8s-node1 ?192.168.1.93
k8s-node2 ?192.168.1.95

1.1
安装docker(三台都要安装)

基于centos7部署
根据官网教程部署

https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-docker-ce?

##安装要用到的软件

yum -y install yum-utils device-mapper-persistent lvm2

##添加容器源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

##开放edge和test源

yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

##查看容器最新版本命令

?yum list docker-ce --showduplicates | sort -r?

##安装 docker ce 注意版本(最高只能安装v17.03)

?yum install -y --setopt=obsoletes=0 docker-ce-17.03.1.ce-1.el7.centos docker-ce-selinux-17.03.1.ce-1.el7.centos

##启动

systemctl enable docker && systemctl restart docker

1.2
系统的基础设置(三台都要做):

关闭selinux

sed -i ‘s/‘SELINUX=enforcing‘/‘SELINUX=disabled‘/‘ /etc/selinux/config

关闭防火墙

systemctl disable firewalld.service
iptables -P FORWARD ACCEPT

关闭swap

swapoff -a
sed -i ‘s/.*swap.*/#&/‘ /etc/fstab ?

设置hosts解析

echo -e "192.168.1.92 k8s-master\n192.168.1.93 k8s-node1\n192.168.1.95 k8s-node2" >>/etc/hosts

添加k8s和docker账户,设置无密码sudo

[[email protected] ~]# useradd -m k8s
[[email protected] ~]# sh -c ‘echo 123456 | passwd k8s --stdin‘
更改用户 k8s 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# gpasswd -a k8s wheel
正在将用户“k8s”加入到“wheel”组中
[[email protected] ~]#

在每台机器上添加 docker 账户,将 k8s 账户添加到 docker 组中,同时配置 dockerd 参数:

[[email protected] ~]# gpasswd -a k8s docker
正在将用户“k8s”加入到“docker”组中

1.3

设置k8s-master无秘钥ssh登录所有节点(只需要在master节点)

[[email protected] ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:b+pM6W8wQWqqPxOZNBSkz78Tfwz1Px9FXRmtjQ5VPZk [email protected]
The key‘s randomart image is:
+---[RSA 2048]----+
|?? .o.? ? ? ?? oX|
|?? ..?? .? ?? .E=|
|? ..?? o? ?? . ++|
|?? oo o . . . o..|
|?? .o*? So . o? .|
|? ? =.. +o? . . .|
|?? . ..oo=o? . . |
|? . o .=.o+?? o .|
|?? ..o.o=+.? ? o.|
+----[SHA256]-----+
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]

1.4
安装依赖包(三台虚机都需要安装)

yum install -y epel-release
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

ipvs 依赖 ipset

1.5
设置系统参数

/etc/sysctl.d/目录下,新建个k8s.conf

允许路由转发,不对bridge的数据进行处理
kubernetes1在/etc/sysctl.d/目录下,新建个k8s.conf

内容如下:

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100

建好k8s.conf后执行
加载内核模块

modprobe br_netfilter
modprobe ip_vs

再执行

sysctl -p /etc/sysctl.d/k8s.conf

1.6
创建目录,后面要用到(三台虚机都创建)
##用到了我们前面建立的k8s账号

[[email protected] ~]# mkdir -p /opt/k8s/bin
[[email protected] ~]# chown -R k8s /opt/k8s/
[[email protected] ~]# mkdir -p /etc/kubernetes/cert
[[email protected] ~]# chown -R k8s /etc/kubernetes
[[email protected] ~]# mkdir -p /etc/etcd/cert
[[email protected] ~]# chown -R k8s /etc/etcd/
[[email protected] ~]#mkdir -p /var/lib/etcd && chown -R k8s /var/lib/etcd

1.7
集群环境变量

#!/usr/bin/bash
# 生成 EncryptionConfig 所需的加密 key
ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
# 最好使用 当前未用的网段 来定义服务网段和 Pod 网段
# 服务网段,部署前路由不可达,部署后集群内路由可达(kube-proxy 和 ipvs 保证)
SERVICE_CIDR="10.254.0.0/16"
# Pod 网段,建议 /16 段地址,部署前路由不可达,部署后集群内路由可达(flanneld 保证)
CLUSTER_CIDR="172.30.0.0/16"
# 服务端口范围 (NodePort Range)
export NODE_PORT_RANGE="8400-9000"
# 集群各机器 IP 数组
export NODE_IPS=(192.168.1.92 192.168.1.93 192.168.1.95)
# 集群各 IP 对应的 主机名数组
export NODE_NAMES=(k8s-master k8s-node1 k8s-node2)
# kube-apiserver 的 VIP(HA 组件 keepalived 发布的 IP)
export MASTER_VIP=192.168.1.94
# kube-apiserver VIP 地址(HA 组件 haproxy 监听 8443 端口)
export KUBE_APISERVER="https://${MASTER_VIP}:8443"
# HA 节点,VIP 所在的网络接口名称
export VIP_IF="ens192"
# etcd 集群服务地址列表
export ETCD_ENDPOINTS="https://192.168.1.92:2379,https://192.168.1.93:2379,https://192.168.1.95:2379"
# etcd 集群间通信的 IP 和端口
export ETCD_NODES="k8s-master=https://192.168.1.92:2380,k8s-node1=https://192.168.1.93:2380,k8s-node2=https://192.168.1.95:2380"
# flanneld 网络配置前缀
export FLANNEL_ETCD_PREFIX="/kubernetes/network"
# kubernetes 服务 IP (一般是 SERVICE_CIDR 中第一个IP)
export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"
# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
export CLUSTER_DNS_SVC_IP="10.254.0.2"
# 集群 DNS 域名
export CLUSTER_DNS_DOMAIN="cluster.local."
# 将二进制目录 /opt/k8s/bin 加到 PATH 中
export PATH=/opt/k8s/bin:$PATH

打包后的变量定义见 environment.sh,后续部署时会提示导入该脚本;
把全局变量定义脚本拷贝到所有节点的 /opt/k8s/bin 目录:

[[email protected] ~]# cp environment.sh /opt/k8s/bin/
[[email protected] ~]# scp environment.sh [email protected]:/opt/k8s/bin
environment.sh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100% 1740? ?? 1.6MB/s?? 00:00? ?
[[email protected] ~]# scp environment.sh [email protected]:/opt/k8s/bin
environment.sh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100% 1740? ?? 1.2MB/s?? 00:00? ?
[[email protected] ~]#

添加文件执行权限(三台虚机都要添加)

chmod +x /opt/k8s/bin/*

1.8
基础环境部署中遇到的错误记录:

##可能会报错,见下:

[[email protected] sysctl.d]# sysctl -p /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
[[email protected] sysctl.d]# sysctl -p /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
[[email protected] sysctl.d]#

解决方法:

[[email protected] sysctl.d]# modprobe br_netfilter
[[email protected] sysctl.d]# lsmod |grep bridge
bridge? ? ? ? ? ? ? ? 107106? 1 br_netfilter
stp? ? ? ? ? ? ? ? ? ? 12976? 1 bridge
llc? ? ? ? ? ? ? ? ? ? 14552? 2 stp,bridge
[[email protected] ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[[email protected] ~]# ? ?

原文地址:http://blog.51cto.com/goome/2164737

时间: 2024-10-10 20:38:13

部署k8s ssl集群实践1:基础环境准备的相关文章

部署k8s ssl集群实践4:部署etcd集群

参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster感谢作者的无私分享.集群环境已搭建成功跑起来.文章是部署过程中遇到的错误和详细操作步骤记录.如有需要对比参考,请按照顺序阅读和测试. 4.1下载和分发二进制安装包 [[email protected] kubernetes]# wget https://github.com/coreos/etcd/releases/download/v3.3.7/etcd-v3

部署k8s ssl集群实践2:cfssl配置根证书和秘钥

参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster感谢作者的无私分享.集群环境已搭建成功跑起来.文章是部署过程中遇到的错误和详细操作步骤记录.如有需要对比参考,请按照顺序阅读和测试. 2.1##安装CFSSL使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件,CA 是自签名的证书,用来签名后续创建的其它 TLS 证书 [[ema

部署k8s ssl集群实践3:部署kubectl命令工具行

参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster感谢作者的无私分享.集群环境已搭建成功跑起来.文章是部署过程中遇到的错误和详细操作步骤记录.如有需要对比参考,请按照顺序阅读和测试. 3.1下载和分发 kubectl 二进制文件 [[email protected] kubernetes]# wget https://dl.k8s.io/v1.10.4/kubernetes-client-linux-amd64

部署k8s ssl集群实践6:配置高可用kube-apiserver组件ha+keepalived

参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster感谢作者的无私分享.集群环境已搭建成功跑起来.文章是部署过程中遇到的错误和详细操作步骤记录.如有需要对比参考,请按照顺序阅读和测试. kubernetes master 节点运行如下组件:kube-apiserverkube-schedulerkube-controller-managerkube-scheduler 和 kube-controller-mana

部署k8s ssl集群实践14:work节点部署kube-proxy

二进制文件前面已经下载分发好. 6.1创建kube-proxy证书 创建证书签名请求 [[email protected] kube-proxy]# cat kube-proxy-csr.json { "CN": "system:kube-proxy", "key": { "algo": "rsa", "size": 2048 }, "names": [ { &quo

部署k8s ssl集群实践11:work节点配置flanneld

前面三节点flanneld已经部署好,只需要在新加节点部署flanneld即可 把flanneld执行文件copy到新加节点 [[email protected] ~]# scp [email protected]:/opt/k8s/bin/flanneld /opt/k8s/bin [email protected]'s password: flanneld? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

(二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署

在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题. 这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的. ------------首次登陆-------------- 首次登陆需要解决的问题就是: 1,信任远程主机公钥的问题,也就是key_word:yes/no? 2,然后就是远程主机的密码,key_word:password: 在自动化部署过程中,需要进行免交互和免密码登陆. 1,使用expect编写免交互登陆脚本(适用于te

内网环境上部署k8s+docker集群:集群ftp的yum源配置

接触docker已经有一年了,想把做的时候的一些知识分享给大家. 因为公司机房是内网环境无法连接外网,所以这里所有的部署都是基于内网环境进行的. 首先,需要通过ftp服务制作本地的yum源,可以从http://mirrors.163.com/centos/ 上找到对应版本的centos系统,下载该系统的base和extra包到本地. 将下载完成的文件放到服务器的/var/ftp/pub/media/x86_64目录下./var/ftp为ftp服务器的根目录.这里请谨记,ftp一般在系统安装的时候

centos7下部署elasticsearch7.2集群

1 Elastic Stack简介 如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch.Logstash.Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack.所以说,ELK是旧的称呼,Elastic Stack是新的名字. 全系的Elastic Stack技术栈包括: 1.Elasticsearch Elasticsearch 基于java,是个开源分布式搜索引擎,它的