4.1搭建k8s环境

 

  • 项目摘要:

本内容是一个主节点,两个从节点的k8s环境。非高可用环境。是一个简易的入门案例。

前期准备:需要三台centos服务器,本文是基于centos7。如果安装Harbor,需要四台centos服务器。

本文档内容庞杂,可能会有少部分不全或者不正确,但是都是可以通过百度修正的。同时,后期也会不断的修正。

  • 项目具体实施:
  1. 前期准备(每台机器都需要执行)
  1. 配置host文件

192.168.1.1 k8s-master

192.168.1.2 k8s-node01

192.168.1.3 k8s-node02

  1. 安装环境

安装依赖包

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

设置防火墙为IPtables并设置空规则

#systemctl stop firewalld && systemctl disable firewalld

# yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

关闭selinux

# swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/ ' /etc/selinux/config

# 调整内核参数,对于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 #禁止使用 swap空间,只有当系统00M时才允许使用它

vm.overcommit_memory=1  #不检查物理内存是否够用

vm.panic_on_oom=0 #开启00M

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.nf_conntrack_max= 2310720

EOF

# cp kubernetes.conf /etc/sysctl.d/kubernetes.conf

# sysctl -p /etc/sysctl.d/kubernetes.conf

同步时间

# ntpdate -u cn.pool.ntp.org

关闭不需要的服务

# systemctl stop postfix && systemctl disable postfix

设置rsyslogd和systemd journald

# mkdir /var/log/journal  #持久化保存日志的目录

# mkdir /etc/systemd/journald.conf.d

# cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF

[Journa1l]

#持久化保存到磁盘

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

升级系统内核为4.44

# 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

# uname -r

  1. 搭建k8s(每台机器都需要执行,除3部分内容)
  1. kube-proxy 开启ipvs的前置条件。

modprobe br_netfilter

#cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

  1. 安装Docker软件,每台机器都执行。

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

# yum-config-manager \

  --add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum update -y && yum install -y docker-ce

创建/etc/docker 目录

#mkdir /etc/docker

配置daemon

# cat > /etc/docker/daemon.json <<EOF

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "log-driver":"json-file",

  "log-opts":{

    "max-size": "100m"

  }

}

EOF

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

重启docker服务

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

(或者按如下教程:  安装docker教程

  1. 安装Kubeadm(主从配置)

#cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yumdoc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

# yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1

# systemctl enable kubelet.service

初始化主节点(在主节点机器操作)

#kubeadm config print init-defaults > kubeadm-config.yaml

对照修改如下内容

localAPIEndpoint:

advertiseAddress: 【主节点ip地址】

kubernetesVersion: v1.15.1

networking:

podSubnet: "10.244.0.0/16"

serviceSubnet: 10.96.0.0/12

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

featureGates :

SupportIPVSProxyMode: true

mode : ipvs

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

随后执行日志中要求的命令,并且加入主节点以及其余工作节点

部署网络:

# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# kubectl create -f kube-flannel.yml 

或者

#kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# kubectl get pod -n kube-system

  1. 至此,环境搭建完成。
  1. 附:安装Harbor私有仓库 (之后springboot将直接制作镜像到该服务器)

机器: 192.168.1.4

  1. 安装docker(略)
  2. 安装docker-componse

# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# chmod +x /usr/local/bin/docker-compose

# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# docker-compose --version

docker-compose version 1.24.1, build 1110ad01

  1. 制作证书(以下示例ip全改成自己的)

在尝试http的时候,会遇到让配置--insecure-registry serverIP,但是总是报错,所以这里直接采用证书的方式,通过https访问。

创建目录存放位置

# mkdir /root/ca -p

# cd /root/ca

以下命令创建CA证书

# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

其中:(req:申请证书签署请求;-newkey 新密钥 ;-x509:可以用来显示证书的内容,转换其格式,给CSR签名等X.509证书的管理工作,这里用来自签名。)
一路回车出现Common Name 输入IP或域名,示例:
Common Name (eg, your name or your server's hostname) []:192.168.1.4

生成证书签名请求

# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout 192.168.1.4.key -out 192.168.1.4.csr

一路回车出现Common Name 输入IP或域名,示例:

Common Name (eg, your name or your server's hostname) []:192.168.1.4

生成证书

备注:若需要添加多个地址(允许链接的ip等)

# echo subjectAltName = IP:192.168.1.4 > extfile.cnf

# openssl x509 -req -days 365 -in 192.168.1.4.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.1.4.crt

  1. 安装Harbor

# cd /usr/local

下载离线安装包

# wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz

 解压文件

# tar xvf harbor-offline-installer-v1.8.0.tgz

进入Harbor目录

# cd harbor

配置harbor.yml

# vim harbor.yml

 配置如下

hostname: 192.168.1.4

https:

   port: 443

 certificate: /root/ca/192.168.1.4.crt

 private_key: /root/ca/192.168.1.4.key

harbor_admin_password: 123456

data_volume: /usr/local/harbor/data

location: /var/log/harbor

  1. 运行脚本进行安装

# ./install.sh 

  1. 访问测试

浏览器输入:https://192.168.1.4,用户名: admin 密码:123456

  1. 配置当前主机docker的daemon.json文件

指定镜像仓库地址

# vim /etc/docker/daemon.json

添加如下内容:

#vim /etc/docker/daemon.json

 { 

 "insecure-registries": ["https://192.168.1.4"] 

} 

  1. 在当前主机尝试docker登录

docker login 192.168.1.4

用户名: admin 密码:123456

  1. 上传镜像进行上传测试 

 a、下载测试镜像

#docker pull hello-world 

 b、给镜像重新打标签(它需要去前端查看生成规则,否则会push失败)

#docker tag hello-world:latest 192.168.1.4/library/hello-world:v1 

 d、登录docker服务器

#docker login 192.168.1.4 

     f、上传镜像

         docker push 192.168.1.4/library/hello-world:v1

  1. 其它 Docker客户端下载测试

  a、指定镜像仓库地址 

  # vim /etc/docker/daemon.json

 { 

   "insecure-registries": ["https://192.168.1.4"]

} 

 b、下载测试镜像

# docker pull 192.168.1.4/library/hello-world:v1

  1. 添加CA证书实现免密登录(在客户机或者当前主机都可以)

# mkdir -p /etc/docker/certs.d/192.168.1.4

# cp ca.crt /etc/docker/certs.d/192.168.1.4/ca.crt

# systemc restart docker.service

相关材料下载(本材料包含和本页内容一致的文档、三份k8s讲义,一套kubernetes培训文档,共大约20个文档):
https://download.csdn.net/download/qq_25337221/12499378

  • 参考链接:
  1. 参阅培训教程
  2. 安装harbor: https://learnku.com/articles/29884  
  3. 配置CA证书: https://www.cnblogs.com/Dev0ps/p/10566398.html

本内容由安康学院“雨季”原创。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值