找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1065|回复: 1

Kubernetes 1.20.x+平台配置实战

[复制链接]

22

主题

21

回帖

164

积分

管理员

积分
164
发表于 2024-8-20 17:05:32 | 显示全部楼层 |阅读模式
1.1.1  K8S 1.20.x节点Hosts及防火墙设置

K8S master1、node1、node2节点进行如下配置:

#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.101.128 master1
192.168.101.129 node1
192.168.1.147 node2
EOF

#临时关闭selinux和防火墙;
sed -i '/SELINUX/s/enforcing/disabled/g'  /etc/sysconfig/selinux
setenforce  0
systemctl   stop     firewalld.service
systemctl   disable   firewalld.service

#同步节点时间;
yum install ntpdate -y
ntpdate  pool.ntp.org

#修改对应节点主机名;
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su

#关闭swapoff;
swapoff -a


1.1.2  Linux内核参数设置&优化
cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF
systemctl enable --now systemd-modules-load.service

#确认内核模块加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

#安装ipset、ipvsadm

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

#配置内核参数;

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl --system


1.1.3  Docker虚拟化案例实战
# 安装依赖软件包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker repository,这里使用国内阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/docker-ce.repo

# 安装docker-ce,这里直接安装最新版本
yum install -y docker-ce

#修改docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF

# 注意,由于国内拉取镜像较慢,配置文件最后增加了registry-mirrors
mkdir -p /etc/systemd/system/docker.service.d

# 重启docker服务
systemctl daemon-reload
systemctl enable docker.service

systemctl start docker.service
ps -ef|grep -aiE docker


1.1.4  Kubernetes添加部署源
Kubernetes Master节点上安装Docker、Etcd和Kubernetes、Flannel网络,添加kubernetes源指令如下:

cat>>/etc/yum.repos.d/kubernetes.repo<<EOF
[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
EOF


1.1.5  K8S 1.20.x Kubeadm案例实战
Kubeadm 是一个K8S部署工具,它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。

Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群,而不是之前的节点准备工作。同样的诸如安装各种各样值得拥有的插件,例如Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。

相反我们期望由一个基于 kubeadm 从更高层设计的更加合适的工具来做这些事情;并且,理想情况下,使用 kubeadm 作为所有部署的基础将会使得创建一个符合期望的集群变得容易。

Kubeadm:用于初始化K8S Cluster的工具,Kubelet:运行在Cluster所有节点上,负责调用Docker指令,启动POD和容器。kubectl:kubectl是kubenetes命令行工具,通过Kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件。

在机器上手动安装 docker、kubeadm、kubelet、kubectl 几个二进制文件,然后才能再容器化部署其他 Kubernetes 组件。主要通过kubeadm init初始化,初始化K8S集群的流程如下:

  • 检查工作(Preflight Checks):检查Linux内核版本、Cgroups模块可用性、组件版本、端口占用情况、Docker等依赖情况;
  • 生成对外提供服务的CA证书及对应的目录;
  • 生成其他组件访问 kube-apiserver 所需的配置文件;
  • Master组件生成Pod配置文件,利用这些配置文件,通过Kubernetes 中特殊的容器启动方法:“Static Pod”(Kubelet 启动时自动加载固定目录的 Pod YAML 文件并启动)便可以 Pod 方式部署起 kube-apiserver、kube-controller-manager、kube-scheduler 三个 Master 组件。同时还会生成 Etcd 的 Pod YAML 文件;
  • 为集群生成一个Bootstrap token,其他节点加入集群的机器和 Apiserver打交道,需要获取相应的证书文件,所以Bootstrap token需要扮演安全验证的角色;
  • 安装默认插件,例如:Kube-proxy 和Core DNS,分别提供集群的服务发现和 DNS 功能。
1)安装Kubeadm工具;

#安装Kubeadm;
yum install -y kubeadm-1.20.4 kubelet-1.20.4 kubectl-1.20.4

#启动kubelet服务
systemctl enable kubelet.service

systemctl start kubelet.service


2)Kubeadm常见指令操作;

kubeadm init 启动一个 Kubernetes 主节点
kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群
kubeadm upgrade 更新一个 Kubernetes 集群到新版本

kubeadm config 如果使用 v1.7.x 或者更低版本的 kubeadm 初始化集群,您需要对集群做一些配置以便使用 kubeadm upgrade 命令
kubeadm token 管理 kubeadm join 使用的令牌

kubeadm reset 还原 kubeadm init 或者 kubeadm join 对主机所做的任何更改

kubeadm version 打印 kubeadm 版本

kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈

1.1.6  K8S 1.20.x Master节点实战
1)执行kubeadm init初始化安装Master相关软件;

kubeadm init   --control-plane-endpoint=192.168.101.128:6443 --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.20.4   --service-cidr=10.10.0.0/16   --pod-network-cidr=10.244.0.0/16   --upload-certs

#查看Master1节点上面调度Taints污点;
kubectl describe node |grep -aiE Taints
kubectl describe node master1|grep -aiE Taints

#去掉Master1节点上面不可调度Taints污点;
kubectl taint node master1 node-role.kubernetes.io/master:NoSchedule-
kubectl taint nodes --all node-role.kubernetes.io/control-plane:NoSchedule-
2)根据如上指令操作,执行成功,如图所示(此图上IP 1.145改成101.128):
file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml19760/wps2.jpg
file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml19760/wps3.jpg
3)根据如上图提示,接下来需手工执行如下指令,拷贝admin配置文件;

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u).$(id -g) $HOME/.kube/config

4)Minion节点加入集群中,同时作为node节点加入K8S集群时使用的参数和指令如下;

kubeadm join 192.168.101.128:6443 --token ze0zfe.9zhew67l6gxsq7du \
    --discovery-token-ca-cert-hash sha256:ee5a3f9accf98c76a3a3da1f3c4540c14c9e9ce49a4070de4b832aa8cb3a8f31

1.1.7  K8S 1.20.x集群节点和删除
#启动Node1节点上docker引擎服务;
systemctl start docker.service

#将Node1节点加入K8S集群;
kubeadm join 192.168.101.128:6443 --token ze0zfe.9zhew67l6gxsq7du \
--discovery-token-ca-cert-hash sha256:ee5a3f9accf98c76a3a3da1f3c4540c14c9e9ce49a4070de4b832aa8cb3a8f31

#执行kubeadm init时没有记录下加入集群的指令,可以通过以下命令重新创建即可;
kubeadm token create --print-join-command

#登录K8S Master节点验证节点信息;
kubectl get nodes

#删除一个节点前,先驱赶掉上面的pod容器;
kubectl drain node3 --delete-local-data --force --ignore-daemonsets

#在Master端执行如下指令;

kubectl delete node/node3




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

22

主题

21

回帖

164

积分

管理员

积分
164
 楼主| 发表于 2024-8-20 17:26:57 | 显示全部楼层

既然你诚信诚意的推荐了,那我就勉为其难的看看吧!京峰教育Linux论坛不走平凡路。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表