k8s功能

自动装箱

在这里插入图片描述

自我修复

在这里插入图片描述

水平扩展

在这里插入图片描述

服务发现

在这里插入图片描述

滚动更新

在这里插入图片描述

版本回退

在这里插入图片描述

密钥和配置管理

在这里插入图片描述

存储编排

在这里插入图片描述

集群架构

在这里插入图片描述

集群架构节点角色功能

Master Node

在这里插入图片描述

Worker Node

在这里插入图片描述

在这里插入图片描述

使用kubeadm部署

在这里插入图片描述

环境准备

关闭SELINUX

执行命令 sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

时间同步

1. yum -y install ntpdate
2. crontab -e
3. 输入 0 */1 * * * ntpdate time1.aliyun.com 然后保存
4. 执行 ntpdate time1.aliyun.com 手动进行时间同步

永久关闭swap分区

1. vi /etc/fstab   注释掉swap分区行

网络配置

 1. vi /etc/systcl.d/k8s.conf
 2. net.bridge.bridge-nf-call-ip6tables = 1
3. net.bridge.bridge-nf-call-iptables = 1
4. net.ipv4.ip_forward = 1
 5. vm.swappiness = 0 
6. modprobe br_netfilter    增加网桥过滤
7. sysctl -p /etc/systcl.d/k8s.conf   使配置文件生效

开启ipvs

1. yum -y install ipset ipvsadm
2. 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
3. chmod 755  /etc/sysconfig/modules/ipvs.modules
4. sh /etc/sysconfig/modules/ipvs.modules

安装docker

1. yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2. yum install -y yum-utils
3. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
4. yum-config-manager --enable docker-ce-nightly
5. yum-config-manager --enable docker-ce-test
6. yum install docker-ce docker-ce-cli containerd.io

配置k8s 镜像源

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 kubeadm kubectl 

执行命令:vi /etc/sysconfig/kubelet 
			KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置 kubelet开启启动:systemctl enable kubelet

下载镜像

1. kubeadm config images list >> image.list

修改image.list 文件在这里插入图片描述
2. 执行 sh image.list
3. 一般情况下载会报错,建议使用国内的镜像源 修改如下

#!/bin/bash
img_list='registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.1
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.1
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.0
'
for img in ${img_list}
do
    docker pull $img
done
  1. 将镜像重新打标签
    在这里插入图片描述
  2. 删除没用的标签

集群初始化

master节点的操作

1. 执行命令 
kubeadm init \
--apiserver-advertise-address=192.168.137.10 \
--kubernetes-version v1.21.1 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
2. mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

work 节点操作

1.先在master生成token等数据

[root@kmaster ~]# kubeadm token create
m3nr37.81bu8er3ibyoyvw7
[root@kmaster ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
7459fa01464531734d3eee182461b77b043d31eff7df2233635654d7c199c947
2. 使用master生成的数据在需要添加的work节点上执行:
kubeadm join 192.168.137.10:6443 --token m3nr37.81bu8er3ibyoyvw7 --discovery-token-ca-cert-hash sha256:7459fa01464531734d3eee182461b77b043d31eff7df2233635654d7c199c947

Horizontal Pod Autoscalar (HPA)

 HPA可以获取每个pod的利用率,然后和HPA定义的指标进行对比,同时计算出需要伸缩的具体值,
 最后实现pod的数量的调整

安装metrics-server

[root@master ~]# yum install git -y
[root@master ~]# git clone -b v0.3.6 https://github.com/kubernetes-incubator/metrics-server

在这里插入图片描述

DaemonSet(DS)

每当向集群中添加一个节点时,指定的pod副本也将添加到该节点上
每当节点从集群中移除时,pod也会被垃圾回收掉

Job

主要用于负责批量处理短暂的一次性的任务,job的特点如下:

  • 当job创建的pod执行成功结束时,job将记录成功结束的pod数量
  • 当成功的结束的pod达到指定的数量时,job将完成执行

emptyDir

  • 临时空间,例如用于某些应用程序运行时所需的临时目录,且无需永久保留
  • 一个容器需要从另一个容器获取数据的目录 (多容器共享目录)

HostPath

  • hostPath就是将node主机的一个实际目录挂载到Pod中,这样的设计就保证了Pod销毁了,但数据依旧可以保存在node主机上(pod 在哪个node上创建,目录就会在哪个节点挂载)

NFS

yum install nfs-utils -y  # 安装nfs
mkdir /root/data/nfs -pv # 准备目录
vi /etc/exports   #  将 /root/data/nfs *(ro) 192.168.137.0/24(rw,no_root_squash)写入文件中
systemctl restart nfs # 重启nfs
# 在所有的node节点上安装nfs
yum install nfs-utils -y
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐