1、应用部署方式演变
2、kubernetes介绍
3、kubernetes组件
4、kubernetes概念
5、环境搭建-环境规划
集群类型:
安装方式:
主机规划:
6、环境搭建-主机安装
使用虚拟机安装三台centos7(一主二从),然后在每台服务器中分别安装docker、kubeadm、kubelet、kubectl程序。笔者的3台服务器ip分别为,192.168.153.101、192.168.153.102、192.168.153.103。
DNS:223.5.5.5
7、环境搭建-环境初始化
1、检查操作系统版本
# 此方式下安装kubernetes集群要求Centos版本要在7.5以上。
[root@MiWiFi-RA72-srv ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
版本过低node节点可能会加入不到集群中来。
2、主机名解析
为了方便后面集群节点间的直接调用,在这里配置一下主机名解析。企业中推荐使用内部DNS服务器。如何做?遗留。
# 主机名解析 编辑三台服务器的 /etc/hosts文件,添加下面内容
192.168.153.101 master
192.168.153.102 node1
192.168.153.103 node2
3、时间同步
kubernetes要求集群中的节点时间必须精确一致,这里直接使用chronyd服务从网络同步时间。企业中建议配置内部的时间同步服务器。如何做?遗留。
# 启动chronyd服务
systemctl start chronyd
# 设置chronyd服务开机自启
systemctl enable chronyd
# chronyd服务启动稍等几秒钟,就可以使用date命令验证事件了。
date
4、禁用iptables和firewalld服务
kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关系统的规则。
# 1、关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 2、关闭iptables服务(如果提示没有这个服务、目录不用管)
systemctl stop iptables
systemctl disable iptables
重启后通过:systemctl status firewalld 看下是否已经禁用。
5、禁用selinux
selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题
# 编辑/etc/selinux/config文件,修改SELINUX的值为disabled
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled
重启后,通过getenforce验证状态。
6、禁用swap分区
swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后避免,将磁盘空间虚拟成内存来使用。启用swap设备会对系统的性能产品负面影响,因此kubernetes要求每个节点都要禁用swap设置。但是如果因为某些原因确实不能关闭swap分区,就需要再集群安装过程中通过明确的参数配置说明。
# 编辑分区配置文件 /etc/fstab, 注释掉swap分区一行
# 注意修改完毕后需要重启linux服务
# /dev/mapper/centos-swap swap
free -m 查看内存分区,swap是0代表已禁用。
7、修改linux的内核参数
# 修改linux的内核参数,添加网桥过滤和地址转发功能
# 编辑 /etc/sysctl.d/kubernetes.conf文件,添加如下配置
vim /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
sysctl -p
# 加载网桥过滤模块
modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter
8、配置ipvs功能
在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的。两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块。
# 1、安装ipset和ipvsadm
yum install ipset ipvsadm -y
# 2、添加需要加载的模块写入脚本文件
cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
# 3、为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
# 4、执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
# 5、查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
9、重启服务器
reboot
getenforce 验证是否已禁用selinux
free -m 查看内存分区,swap是0代表已禁用。
8、环境搭建-集群所需组件安装
1、安装docker
# 1、切换镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 2、查看当前镜像源中支持的docker版本
yum list docker-ce --showduplicates
# 3、安装特定版本的docker-ce
# 必须指定 --setopt=obsoletes=0,否则yum会自动安装更高版本。
yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
# 4、添加一个配置文件
# Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用sysetemd来代替cgroupfs
mkdir /etc/docker
cd /etc/docker
touch daemon.json
通过vi编辑器输入一下内容
{
"registry-mirrors":["https://nh2pqkbt.mirror.aliyuncs.com"],
"insecure-registries":["192.168.31.101:5000"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
#5、启动docker
systemctl enable docker
systemctl restart docker
2、安装kubernetes组建
# 由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
# 编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# 安装kubeadm、kubelet和kubectl
yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
# 配置kubelet的cgroup
# 编辑/etc/sysconfig/kubelet,添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
# 设置kubelet开机自动
systemctl enable kubelet
9、环境搭建-集群安装
1、在安装kubernetes集群之前,必须提前准备好集群需要的镜像,所需镜像可以通过下面的命令查看
kubeadm config images list
# 下载镜像:此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案。
images=(
kube-apiserver:v1.17.4
kube-controller-manager:v1.17.4
kube-scheduler:v1.17.4
kube-proxy:v1.17.4
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
2、集群初始化
这里只在master上操作!
# 创建集群,如果失败可以使用kubeadm reset重置后再次初始化
kubeadm init \
--kubernetes-version=v1.17.4 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.153.101 \
--v=5
成功后,根据提示,以此执行下面的命令。
# To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
以下命令只在node节点执行,意思将他们加入集群。
# Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.153.101:6443 --token c5eikx.zs5p3ccqy22squo8 \
--discovery-token-ca-cert-hash sha256:906af5c408f9f9a1bd4b8b3aa552ff9d34595ca675990fc922d691559d8b7153
10、环境搭建-网络插件安装
11、环境搭建-环境测试
12、资源管理介绍
13、yaml语言介绍
14、资源管理方式-介绍
15、资源管理方式-1
16、资源管理方式-2
17、资源管理方式-3
18、资源管理方式-小结
19、实战入门-Namespace
20、实战入门-Pod
21、实战入门-Label
22、实战入门-Deployment
23、实战入门-Service
24、Pod详解-结构和定义
25、Pod详解-基本配置
26、Pod详解-镜像拉取策略
27、Pod详解-启动命令
28、Pod详解-环境变量
29、Pod详解-端口设置
30、Pod详解-资源配额
31、Pod详解-生命周期-概述
32、Pod详解-生命周期-创建和终止
33、Pod详解-生命周期-初始化容器
34、Pod详解-生命周期--钩子函数
35、Pod详解-生命周期-容器探测
36、Pod详解-生命周期-容器探测补充
37、Pod详解-生命周期-重启策略
38、Pod详解-调度-概述
39、Pod详解-定向调度
40、Pod详解-亲和性调度-概述
41、Pod详解-亲和性调度-nodeAffinity
42、Pod详解-亲和性调度-podAffinity
43、Pod详解-亲和性调度-podAntiAffinity
44、Pod详解-调度-污点
45、Pod详解-调度-容忍
46、Pod控制器-概述
47、Pod控制器-ReplicaSet
48、Pod控制器-Deployment-基础
49、Pod控制器-Deployment-扩缩容
50、Pod控制器-Deployment-升级策略
51、Pod控制器-Deployment-版本回退
52、Pod控制器-Deployment-金丝雀发布
53、Pod控制器-HPA-上
54、Pod控制器-HPA-下
55、Pod控制器-DaemonSet
56、Pod控制器-Job
57、Pod控制器-CronJob
58、Service-概述
59、Service-资源清单文件介绍
60、Service-实验-环境准备
61、Service-实验-ClusterIP类型
62、Service-实验-HeadLiness类型
63、Service-实验-NodePort类型
64、Service-实验-LoadBalancer类型
65、Service-实验-ExternalName类型
66、Ingress介绍
67、Ingress案例-环境准备
68、Ingress案例-http代理
69、Ingress案例-https代理
70、数据存储介绍
71、基本存储-EmptyDir
72、基本存储-HostPath
73、基本存储-NFS
74、高级存储-pv和pvc的介绍
75、高级存储-pv
76、高级存储-pvc
77、高级存储-pv和pvc的生命周期
78、配置存储-configmap
79、配置存储-secret
80、安全认证-概述
81、安全认证-认证方式
82、安全认证-授权管理
83、安全认证-准入控制
84、DashBoard-部署
85、DashBoard-使用演示。
参考:Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级)_哔哩哔哩_bilibili