kubernetes学习

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

Docker学习-CSDN博客

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

济南大飞哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值