从centos7镜像到搭建kubernetes集群(kubeadm方式安装)

  在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术。废话不多扯了。。。。

一、前期准备

1、k8s-master01:master主服务器(存在单点故障)

2、k8s-node01、k8s-node02:2个工作节点

3、Harbor:私有仓库(简单记录搭建Harbor私服仓库

4、Router:软路由(由于kubeadm是存放在谷歌云的,国内无法访问,K8S集群搭建之软路由的安装

二、系统初始化

以下操作均是对3个K8S节点进行操作

1、设置系统主机名

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

2、hosts文件相互解析

vi /etc/hosts,添加如下配置

192.168.66.10 k8s-master01
192.168.66.20 k8s-node01
192.168.66.21 k8s-node02

3、安装依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

4、设置防火墙为iptables并设置空规则

systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

5、关闭selinux(防止pod运行在虚拟内存)

swapoff -a && sed -i ‘/ swap / s/^\(.*\)$/#\1/g‘ /etc/fstab
setenforce 0 && -i ‘s/^SELINUX=.*/SELINUX=disabled/‘ /etc/selinux/config

6、调整内核参数,对于K8S

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nv_conntrack_max=2310720
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -f /etc/sysctl.d/kubernetes.conf

7、调整系统时区

#设置xiton.g时区为 中国/上海
timedatectl set-timezone Asia/Shanghai
#将当前的UTC时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond

8、关闭系统不需要服务

systemctl stop postfix && systemctl disable postfix

9、设置rsyslogd和systemd journald

mkdir /var/log/journal   #持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d

mkdir > /etc/systemd/journald.conf.d <<EOF
[Journal]
#持久化保存到磁盘
Storage=persistent
#压缩历史日志
Compress=yes

SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
#最大占用空间10G
SystemMaxUse=10G
#单日志文件最大200M
SystemMaxFileSize=200M
#日志保存时间2周
MaxRetentionSec=2week
#不将日志转发达 syslog
ForwardToSyslog=no
EOF
systemctl restart systemd-journald

10、升级系统内核为4.4

CentOS7.x自带的3.10.x内核存在一些Bugs,导致运行的Docker、ku‘bernetes不稳定。

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#安装完成后检查 /boot/grub2/grub.cfg中对应内核menuentry中是否包含initrd16配置,如果没有,再安装一次

yum --enablerepo=elrepo-kernel install -y kernel-lt

#设置开机从新内核启动
grub2-set-default ‘CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)‘

#重启机器
reboot

三、Docker相关设置(3个节点)

1、配置daemon

vim /etc/docker/daemon.json
{
    "exec-opts":["native.cgroupdriver=systemd"],
    "log-driver":"json-file",
    "log-opts":
        {
        "max-size":"100m"
        }
}

2、新建目录

mkdir -p /etc/systemd/system/docker.service.d

3、重启Docker

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

四、安装Kubeadm(主从配置)

1、配置镜像源、启动kubelet

  地址:https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.53322f70MCb4ok

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1

systemctl enable kubelet.service

可能会先出现无socat依赖:可参考我这篇文章:Linux下RabbitMQ的安装及使用里面有安装socat依赖的过程

2、导入镜像

2.1、kubeadm初始化k8s集群时会从谷歌云中拉取镜像,国内是无法访问的。

  所以这里需要导入镜像,这里从别人通过kexue上网拉取的镜像:https://pan.baidu.com/share/init?surl=yrbtLGXqXaXmauScaif-3A,提取码:r6m5

2.2、解压压缩包

tar -xvf kubeadm-basic.images.tar.gz 

2.3、编写导入镜像脚本

#!/bin/bash

ls /root/kubeadm-basic.images > /tmp/image-list.txt

cd /root/kubeadm-basic.images

for i in $(cat /tmp/image-list.txt)
do
        docker load -i $i
done

rm -rf /tmp/image-list.txt

2.4、赋予执行权限

chmod a+x load-images.sh

2.5、执行导入镜像脚本:./load-images.sh

2.6、将镜像目录、导入镜像脚本远程拷贝至2个从节点、并执行对应导入镜像脚本

scp -r kubeadm-basic.images load-images.sh [email protected]:/root/
scp -r kubeadm-basic.images load-images.sh [email protected]:/root/./load-images.sh   #root家目录执行该脚本

3、主节点初始化

3.1、获取初始化配置模板

kubeadm config print init-defaults > kubeadm-config.yaml  #将初始化文件打印至目标文件

3.2、编辑初始配置模板:vim  kubeadm-config.yaml

3.3、主节点初始化安装

kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log

依次执行3条命令

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

4、网络部署

  由上一步可以看出,node状态处于notready,这是我们没有实现扁平化网络,现在部署一下

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl create -f kube-flannel.yml
kubectl get pod -n kube-system
kubectl get node  #再次查看状态

ifconfig也可查看到flannel

5、其他节点加入

命令已经在在主节点初始化时日志里如下:

kubeadm join 192.168.66.10:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:5be585a83158dedce452998083eda3ba40a578b9e7361b366670a4dd80e47edb

在master主节点查看:kubectl get node

五、配置私有仓库Harbor(3个节点)

参考这里搭建私有仓库Harbor:简单记录搭建Harbor私服仓库

1、配置docker的daemon.json文件

{
    "exec-opts":["native.cgroupdriver=systemd"],
    "insecure-registries": ["hub.rmitec.com"],
    "log-driver":"json-file",
    "log-opts":
        {
        "max-size":"100m"
        }
}

2、配置本机hosts文件映射

192.168.66.10 k8s-master01  
192.168.66.20 k8s-node01
192.168.66.21 k8s-node02
192.168.66.15 hub.rmitec.com

3、重启docker

systemctl restart docker

4、k8s节点操作(node节点),登录harbor私服仓库,用户民:admin,密码:Harbor12345

5、查看私有仓库镜像(可以看出该镜像下载次数为0)

六、集群测试

1、master主节点运行pod

kubectl run nginx-deployment --image=hub.rmitec.com/library/mynginx:v1.0  --replicas=1    #运行nginx,指定副本数为1,从私有仓库Harbor
kubectl get deployment

kubectl get rs

kubectl get pod

kubectl get pod -o wide

 注:可以看出该nginx运行在node02节点,可以在node02节点查看

2、master节点访问测试:curl 10.244.2.2(/hostname)

3、查看私有仓库镜像状态

4、pod弹性伸缩

:可以看到node02运行2个nginx,node01运行1个nginx

5、SVC做负载均衡

kubectl get svc

kubectl expose deployment nginx-deployment --port=30000 --target-port=80

6、curl访问:curl 10.97.248.212:30000

7、ipvadm -Ln查看

8、对外暴露访问

8.1修改type类型为NodePort

kubectl edit svc nginx-deployment

8.2再次查看type类型

8.3外网测试

8.3.1浏览器访问:http://192.168.66.10:30525/,测试成功

8.3.2 浏览器访问:http://192.168.66.20:30525/(node01节点)

8.3.3浏览器访问:http://192.168.66.21:30525/(node02节点)

  

原文地址:https://www.cnblogs.com/rmxd/p/12026660.html

时间: 2024-08-01 08:18:49

从centos7镜像到搭建kubernetes集群(kubeadm方式安装)的相关文章

rancher搭建kubernetes集群

实验环境: 利用rancher搭建kubernetes集群,及搭建和关联harbor私有镜像库. rancher:http://10.10.10.10:8888 kubernetes:10.10.10.10 harbor:10.10.10.100 images:10.10.10.100/test_nginx:latest app:nginx 实验目的: 一.实践docker:search pull.run.tag.build.push功能.了解参数含义 #docker search *image

阿里云ECS搭建Kubernetes集群踩坑记

阿里云ECS搭建Kubernetes集群踩坑记 [TOC] 1. 现有环境.资源 资源 数量 规格 EIP 1 5M带宽 ECS 3 2 vCPU 16 GB内存 100G硬盘 ECS 3 2 vCPU 16 GB内存 150G硬盘 SLB 2 私网slb.s1.small 2. 规划 坑: 上网问题,因为只有一个EIP,所有其它节点只能通过代理上网; 负载均衡问题,因为阿里不支持LVS,负载均衡TCP方式后端又不支持访问负载均衡,HTTP和HTTPS方式,只支持后端协议为HTTP; 为了避免上

基于 CentOS 7 搭建kubernetes集群

基于Centos7构建Kubernetes平台 一.实验环境 3台centos7的主机: master  192.168.111.131部署etcd,kube-apiserver,kube-controller-manager,kube-scheduler 4个应用. node01  192.168.111.130  部署docker,kubelet, kube-proxy  3个应用 node02  192.168.111.129  部署docker,kubelet, kube-proxy  

kubeadm搭建kubernetes集群

一.环境准备首先我的三个ubuntu云主机的配置如下 cpu数量 内存 磁盘 Ubuntu 2 8G 20G 18.04LTS 而且能保证三台机器都能连接外网这里的所有命令都是在root用户下操作的二.安装 1.在所有的节点上安装Docker和kubeadm [email protected]:~# apt-get install curl -y [email protected]:~# curl -s https://packages.cloud.google.com/apt/doc/apt-

Ubuntu 16.04下搭建kubernetes集群环境

简介 目前Kubernetes为Ubuntu提供的kube-up脚本,不支持15.10以及16.04这两个使用systemd作为init系统的版本. 这里详细介绍一下如何以非Docker方式在Ubuntu16.04集群上手动安装部署Kubernetes的过程. 手动的部署过程,可以很容易写成自动部署的脚本.同时了解整个部署过程,对深入理解Kubernetes的架构及各功能模块也会很有帮助. 环境信息 版本信息 组件 版本 etcd 2.3.1 Flannel 0.5.5 Kubernetes 1

使用Kubeadm(1.13)快速搭建Kubernetes集群

Kubeadm是管理集群生命周期的重要工具,从创建到配置再到升级,Kubeadm处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心Kubernetes组件,以便为新节点提供安全而简单的连接流程并支持轻松升级.随着Kubernetes 1.13 的发布,现在Kubeadm正式成为GA. 准备 首先准备2台虚拟机(CPU最少2核),我是使用Hyper-V创建的2台Ubuntu18.04虚拟机,IP和机器名如下: 172.17.20.210 master 172.17.20.211 node1

本地kubeadm搭建kubernetes集群

一.环境准备 (每个机器都是centos7.6)每个机器执行: yum install chronyd -y systemctl start chronydvim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.8.13

Ubuntu下搭建Kubernetes集群(3)--k8s部署

1. 关闭swap并关闭防火墙 首先,我们需要先关闭swap和防火墙,否则在安装Kubernetes时会导致不成功: # 临时关闭 swapoff -a # 编辑/etc/fstab,注释掉包含swap的那一行即可,重启后可永久关闭 ufw disable 2.配置阿里源 sudo echo "deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" > /etc/apt/sources.list.

ubuntu物理机上搭建Kubernetes集群 -- 准备

准备工作 1.三台ubuntu主机: 操作系统:ubuntu-16.04.1-server-amd64 docker: 1.安装 使用命令 sudo apt-get install docker sudo apt-get install docker #运行docker服务端 dockerd 2.将当前用户加入docker组,否则每次运行docker都要加上sudo超级权限,比较麻烦 sudo groupadd docker sudo gpasswd -a nwlab docker 查看 用户组