分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

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

发布时间:2023-09-06 02:19责任编辑:顾先生关键词:kubernetes

介绍

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

一、集群环境信息

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

192.168.56.20 k8s-m1192.168.56.21 k8s-m2192.168.56.30 k8s-n1192.168.56.31 k8s-n2
内存不小于1G
内核版本不小于 3.10.0

1.2 软件版本

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

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

master节点包含的组件:
kube-apiserverkube-schedulerkube-controller-manageretcdflanneldocker
待添加

node节点包含的组件:

flannelddockerkubeletkube-proxy
待添加

二、系统环境设置

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

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

2.2 设置host解析

参考‘1.1 设备信息‘

2.3 所有节点设置k8s参数

[root@k8s-m1 ~]# cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1
EOF[root@k8s-m1 ~]# sysctl -p /etc/sysctl.d/k8s.conf

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

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

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

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

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

[root@k8s-m1 ~]# sudo useradd -m docker[root@k8s-m1 ~]# sudo gpasswd -a k8s docker[root@k8s-m1 ~]# sudo mkdir -p ?/etc/docker/[root@k8s-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 在每个设备上创建目录

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

2.8 修改PATH环境变量

[k8s@k8s-m1 ~]$ sudo sh -c "echo ‘PATH=/opt/k8s/bin:$PATH:$HOME/bin:$JAVA_HOME/bin‘ >>/root/.bashrc"[k8s@k8s-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 加载环境变量,并给各节点创建信任关系

# 加载环境变量[k8s@k8s-m1 ~]$ cd /opt/k8s/bin[k8s@k8s-m1 bin]$ source environment.sh# 从m1节点,给各节点创建信任关系[k8s@k8s-m1 bin]$ ssh-keygen[k8s@k8s-m1 bin]$ for node_ip in ${NODE_IPS[@]}; do echo ">>> $node_ip"; ssh-copy-id -i ~/.ssh/id_rsa.pub k8s@$node_ip; done# 将环境变量分发到各个节点[k8s@k8s-m1 bin]$ for node_ip in ${NODE_IPS[@]} ?do ???echo ">>> ${node_ip}" ???scp environment.sh k8s@${node_ip}:/opt/k8s/bin/ ???ssh k8s@${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

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved