K8S
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
-
将镜像重新打标签
- 删除没用的标签
集群初始化
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
版权声明:本文为qq_29769689原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。