二进制安装kubernetes v1.11.2 (第一章 集群信息和初始化)

介绍

之前部署过单master节点的环境,并且没有启用证书。这次准备部署高可用的master节点并启用证书和部署dashboard。

一、集群环境信息

1.1 设备信息(使用virtualbox虚拟出了2个master和2个node设备)

192.168.56.20 k8s-m1
192.168.56.21 k8s-m2
192.168.56.30 k8s-n1
192.168.56.31 k8s-n2
内存不小于1G内核版本不小于 3.10.0 

1.2 软件版本

kubernetes-v1.11.2
flannel-v0.10.0
etcd-v3.3.7
docker-18.06.1-ce

1.3 master节点和node节点软件环境

master节点包含的组件:

kube-apiserver
kube-scheduler
kube-controller-manager
etcd
flannel
docker待添加

node节点包含的组件:

flanneld
docker
kubelet
kube-proxy待添加

二、系统环境设置

2.1 添加firewall规则,所有节点互通,关闭selinux

# firewalld 设置,允许所有节点之间互通,添加规则firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 192.168.56.0/24  -j ACCEPT
firewall-cmd --reload
# 关闭selinux
[[email protected] ~]# cat /etc/selinux/config |grep SELINUX
SELINUX=disabled

2.2 设置host解析

参考‘1.1 设备信息‘

2.3 所有节点设置k8s参数

[[email protected] ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1EOF

[[email protected] ~]# sysctl -p /etc/sysctl.d/k8s.conf

2.4 关闭swap,如果不关闭需要调整kubelet参数。/etc/fstab也要注解掉SWAP的挂载。

[[email protected] ~]# swapoff -a && sysctl -w vm.swappiness=0
[[email protected] ~]# sed -i ‘/ swap / s/^\(.*\)$/#\1/g‘ /etc/fstab

2.5 在每个设备上创建一个k8s普通账号,并设置无密码sudo

[[email protected] ~]# sudo useradd -m k8s
[[email protected]-m1 ~]# sudo sh -c ‘echo 123456 | passwd k8s --stdin‘
[[email protected]-m1 ~]# sudo sed -i ‘/%wheel.*NOPASSWD: ALL/s/# %wheel/%wheel/‘ /etc/sudoers
[[email protected]-m1 ~]# sudo grep ‘%wheel.*NOPASSWD: ALL‘ /etc/sudoers
[[email protected]-m1 ~]# sudo gpasswd -a k8s wheel

2.6 在每个设备上创建docker用户

[[email protected] ~]# sudo useradd -m docker
[[email protected]-m1 ~]# sudo gpasswd -a k8s docker
[[email protected]-m1 ~]# sudo mkdir -p  /etc/docker/
[[email protected]-m1 ~]# cat <<EOF > /etc/docker/daemon.json
{
    "registry-mirrors": ["https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
    "max-concurrent-downloads": 20
}
EOF

2.7 在每个设备上创建目录

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

2.8 修改PATH环境变量

[[email protected] ~]$ sudo sh -c "echo ‘PATH=/opt/k8s/bin:$PATH:$HOME/bin:$JAVA_HOME/bin‘ >>/root/.bashrc"
[[email protected]-m1 ~]$ echo ‘PATH=/opt/k8s/bin:$PATH:$HOME/bin:$JAVA_HOME/bin‘ >>~/.bashrc# 完成后重新登录一下当前用户,使新的环境变量生效

2.9 为了简化部署步骤,创建enviernment.sh环境变量文件,在部署过程中使用

#!/usr/bin/bash

# 生成 EncryptionConfig 所需的加密 key
export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)

# 最好使用 当前未用的网段 来定义服务网段和 Pod 网段

# 服务网段,部署前路由不可达,部署后集群内路由可达(kube-proxy 和 ipvs 保证)
export SERVICE_CIDR="10.254.0.0/16"

# Pod 网段,建议 /16 段地址,部署前路由不可达,部署后集群内路由可达(flanneld 保证)
export CLUSTER_CIDR="172.30.0.0/16"

# 服务端口范围 (NodePort Range)
export NODE_PORT_RANGE="8400-9000"

# 集群master机器 IP 数组
export MASTER_IPS=(192.168.56.20 192.168.56.21)

# 集群各机器 IP 数组
export NODE_IPS=(192.168.56.20 192.168.56.21 192.168.56.30 192.168.56.31)

# 集群各 IP 对应的 主机名数组
export NODE_NAMES=(kube-node1 kube-node2 kube-node3)

# kube-apiserver 的 VIP(HA 组件 keepalived 发布的 IP)
export MASTER_VIP=192.168.56.6

# kube-apiserver VIP 地址(HA 组件 haproxy 监听 8443 端口)
export KUBE_APISERVER="https://${MASTER_VIP}:8443"

# HA 节点,配置 VIP 的网络接口名称
export VIP_IF="enp0s3"

# etcd 集群服务地址列表
export ETCD_ENDPOINTS="https://192.168.56.20:2379,https://192.168.56.21:2379"

# etcd 集群间通信的 IP 和端口
export ETCD_NODES="kube-node1=https://192.168.56.20:2380,kube-node2=https://192.168.56.21: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

2.10 加载环境变量,并给各节点创建信任关系

# 加载环境变量
[[email protected]-m1 ~]$ cd /opt/k8s/bin
[[email protected]-m1 bin]$ source environment.sh

# 从m1节点,给各节点创建信任关系
[[email protected]-m1 bin]$ ssh-keygen
[[email protected]-m1 bin]$ for node_ip in ${NODE_IPS[@]}; do echo ">>> $node_ip"; ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]$node_ip; done

# 将环境变量分发到各个节点
[[email protected]-m1 bin]$ for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    scp environment.sh [email protected]${node_ip}:/opt/k8s/bin/
    ssh [email protected]${node_ip} "chmod +x /opt/k8s/bin/*"
  done

注:本系列文档参考了如下文章:

https://github.com/opsnull/follow-me-install-kubernetes-cluster

https://jimmysong.io/kubernetes-handbook/practice/install-kubernetes-on-centos.html

原文地址:https://www.cnblogs.com/aast/p/9832118.html

时间: 2024-08-02 08:49:46

二进制安装kubernetes v1.11.2 (第一章 集群信息和初始化)的相关文章

二进制安装kubernetes v1.11.2 (公有云虚机)

kubernetes搭建在公有云,集群vip可以用使用LB实现,注意下面几点 1.创建LB,监听端口指向api-server的监听端口,假设是6443 2.关闭LB的健康检查 3.修改/home/k8s/.kube/config 中的集群地址为 https://master_vip:6443 否则会出现 error: the server doesn't have a resource type "all" 原文地址:https://www.cnblogs.com/aast/p/102

二进制安装kubernetes v1.11.2 (第十四章 kube-proxy部署)

继续前一章的部署. 部署 kube-proxy 组件 14.1 下载和分发二进制文件,参考 第三章 分发到各节点 source /opt/k8s/bin/environment.sh for node_name in ${NODE_NAMES[@]} do echo ">>> ${node_name}" scp k8s/v1.11.2/server/kubernetes/server/bin/{kube-proxy,kubelet} [email protected]

二进制安装kubernetes v1.11.2 (第十一章 node节点部署)

继续前一章部署. 十一.node节点部署 kubernetes node 节点运行了如下组件: flannel docker kubelet kube-proxy 11.1 部署flanneld 请参考 第五章 11.2 安装依赖包 centos: source /opt/k8s/bin/environment.sh for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" ssh [email protected]

二进制安装kubernetes v1.11.2 (第七章 部署高可用组件)

继续上一章部署. 八.部署高可用组件 本章介绍keepalived和haproxy实现kube-apiserver高可用. keepalive 提供 kube-apiserver 对外提供服务的VIP: haproxy 监听VIP,后端链接所有 kube-apiserver 实例,提供健康检查和负载均衡功能 keepalived 一主一备的运行模式,本文档复用 master 节点的两台设备 haproxy 监听 8443 端口,与 kube-apiserver 的 6443 端口区分开 keep

Kubernetes v1.14.0 之 kube-apiserver集群部署

kube-apiserver集群准备 1.kube-apiserver 服务器配置 对外ip 内网ip cpu 内存 硬盘 192.168.3.10 172.172.1.1 64 256 1T 192.168.3.11 172.172.1.2 64 256 1T 192.168.3.12 172.172.1.3 64 256 1T 192.168.3.13 172.172.1.4 64 256 1T 192.168.3.14 172.172.1.5 64 256 1T 2.kube-apiser

kubeadm安装kubernetes v1.11.3 HA多主高可用并启用ipvs

环境介绍: 系统版本:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Kubernetes: v1.11.3 Docker-ce: 18.06 Keepalived保证apiserever服务器的IP高可用 Haproxy实现apiserver的负载均衡 master x3 && etcd x3 保证k8s集群可用性 192.168.1.1 master 192.168.1.2 master2 192.168.1.3 master3 192.168.1.4

centos7使用kubeadm安装kubernetes 1.11版本多主高可用

centos7使用kubeadm安装kubernetes 1.11版本多主高可用 [TOC] kubernetes介绍要学习一个新的东西,先了解它是什么,熟悉基本概念会有很大帮助.以下是我学习时看过的一篇核心概念介绍.http://dockone.io/article/932 搭建Kubernetes集群环境有以下3种方式: minikubeMinikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境.官方地址:ht

使用kubeadm安装kubernetes v1.14.1

使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ? ? 一台或多台运?行行着下列列系统的机器?: ? Ubuntu 16.04+ ? Debian 9 ? CentOS 7 ? RHEL 7 ? Fedora 25/26 (尽?力力服务) ? HypriotOS v1.0.1+ ? Container Linux (针对1800.6.0 版本测试) ? 每台机器? 2 GB 或更更多的 RAM (如果少于这个数字将会影响您应?用的运?行行

Sealos安装Kubernetes v1.16.0 HA集群

Sealos安装Kubernetes v1.16.0 HA集群 github项目链接https://github.com/fanux/sealos 初始化master节点与worker节点 初始化脚本 init.sh #!/bin/bash # 在 master 节点和 worker 节点都要执行 # 安装 docker # 参考文档如下 # https://docs.docker.com/install/linux/docker-ce/centos/ # https://docs.docker