kubernetes基于flanel开发的静态pod模型

本文介绍了如何在Ubuntu 20.04.1上基于Kubernetes v1.24和Docker CE 20.10.17搭建使用Flannel的静态Pod模型。内容涵盖环境配置、网络设置、包括系统初始化、Docker安装、镜像代理配置、cri-dockerd安装、kubelet与cri-dockerd协作配置、以及Master和Node节点初始化等步骤。
摘要由CSDN通过智能技术生成

kubernetes基于flanel开发的静态pod模型

环境配置:

  • OS: Ubuntu 20.04.1
  • Kubernetes:v1.24
  • Container Runtime: Docker CE 20.10.17
  • CRI:cri-dockerd v0.2.2

网络配置

node:172.29.1.0/24

pod:

services:

1.系统初始化

1.借助于chronyd服务(程序包名称chrony)设定各节点时间精确同步;

tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apt install chrony
systemctl start chrony.service

2.通过DNS完成各节点的主机名称解析;

vim /etc/hosts
172.29.1.1 master01.magedu.com master01 kubeapi.magedu.com kubeapi
172.29.1.11 node01.magedu.com node01
172.29.1.12 node02.magedu.com node02
172.29.1.13 node03.magedu.com node03

3.各节点禁用所有的Swap设备;

swapoff -a && systemctl --type swap && systemctl mask SWAP_DEV
vim /etc/fstab
#swap      #(禁用swap分区)

4.各节点禁用默认配置的iptables防火墙服务

systemctl mask firewalld
ufw disable && ufw status

#以上四步在master,和node节点上均要执行

2.安装docker环境

apt -y install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

apt update

apt install docker-ce

vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}

systemctl daemon-reload && systemctl start docker.service && systemctl enable docker.service

以上四步在master和nodeh上均操作或者复制一次

3.配置镜像代理服务 (master操作)

vim set-proxy.sh
#!/bin/bash
export HTTPS_PROXY="http://172.29.1.10:51854"
export HTTP_PROXY="http://172.29.1.10:51854"
export NO_PROXY="172.29.1.0/24,172.17.0.0/16,127.0.0.0/8,magedu.com"
exec bash

bash set-proxy.sh   #以上过程在所有节点执行
vim  /lib/systemd/system/docker.service

Environment="HTTP_PROXY=http://虚拟物理机网卡地址:代理端口"
Environment="HTTPS_PROXY=https://虚拟物理机网卡地址:代理端口"
Environment="NO PROXY=https://127.0.0.0/8,172.29.0.0/16:代理端口"

systemctl daemon-reload && systemctl restart docker.service #master执行

4.安装cri-dockerd

curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.2/cri-dockerd_0.2.2.3-0.ubuntu-focal_amd64.deb

apt install ./cri-dockerd_0.2.2.3-0.ubuntu-focal_amd64.deb

apt update && apt install -y apt-transport-https curl

curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt update

apt install -y kubelet kubeadm kubectl

systemctl enable kubelet && systemctl status kubelet
#以上操作均在其他三台机器上执行

4.调配kubelet和cri-dockerd协作

vim /usr/lib/systemd/system/cri-dockerd.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d
systemctl daemon-reload && systemctl restart cri-docker.service && systemctl status cri-docker.service


mkdir /etc/sysconfig/ -p
vim kubelet
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"

#scp到其他三台机器将修改的文件并加载重启

systemctl daemon-reload && systemctl restart docker.service 

5.初始化master,node节点

#初始化master
kubeadm init --control-plane-endpoint kubeapi.magedu.com --kubernetes-version=v1.24.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket unix:///run/cri-dockerd.sock

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
cp /etc/kubernetes/admin.conf  ~/.kube/config
kubectl apply -f kube-flannel.yaml 

#node初始化
kubeadm join kubeapi.magedu.com:6443 --token o4p3b1.xdw7t4ztbibljuxo --discovery-token-ca-cert-hash sha256:06fd7243d057c27e2a1f865ea541f1bd0f417e28204e8d57fc1deab5ee5f51bf --cri-socket unix:///run/cri-dockerd.sock

在这里插入图片描述

6.测试编排工具

kubectl get pods -n kube-system
kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0 --replicas=3
kubectl create service nodeport demoapp --tcp=80:80
kubectl get svc -l app=demoapp
kubectl get pods

在这里插入图片描述

1. 数据来源依据可以是系统监控工具、性能测试工具等。 2. 数据库索引类型包括B-Tree索引、哈希索引、全文索引等。 3. group by在sql语句中的作用是将查询结果按照指定的列进行分组统计。 4. MHA是一个MySQL高可用性解决方案,实现了MySQL的自动故障转移、主从切换等功能。 5. Redis的版本选择应根据需求而定,一般生产环境使用较为稳定的LTS版本。 6. Rediscluster集群一般采用6个节点的三主三从架构,每个节点存储一份数据。 7. 磁盘IO是指磁盘进行读写操作的速率。 8. K8S生产中应选择稳定、兼容性好的版本进行部署。 9. Deployment用于管理Pod的副本数和更新策略,DaemonSet用于保证每个节点都有一个Pod在运行。 10. Service用于将一组Pod暴露为一个网络服务,提供负载均衡、服务发现等功能。 11. NodePort将Service暴露在每个节点上的指定端口,ClusterIP将Service暴露在集群内部的虚拟IP上。 12. Service通过标签选择器匹配对应的Pod,并将请求转发到对应的Pod上。 13. kube_proxy有iptables模式和IPVS模式,iptables模式使用iptables实现请求转发,IPVS模式使用Linux内核的IPVS实现请求转发。 14. calico和flannel都是Kubernetes网络插件,calico支持多种网络协议,flannel使用VXLAN封装网络包。 15. iptables是Linux内核的防火墙,IPVS是一种高性能的负载均衡技术。 16. Zabbix可以通过Zabbix agent监控容器状态,也可以通过API接口获取容器状态信息。 17. Ansible可以维护数千台服务器,具体数量取决于硬件配置和网络环境。 18. Ansible模块自带的事实功能可以获取主机名、IP地址、操作系统信息等。 19. 举例一个playbook可以是用于部署web应用的playbook,通过安装依赖、下载代码、编译打包等步骤实现部署,功能是将应用发布到生产环境。 20. 调研某个应用可以通过查阅官方文档、参考开源社区的资料、进行实际测试等方式开展工作。 21. 如果客户应用系统打不开,但是在后台能打开,可以检查网络连接、端口占用情况、防火墙设置等。 22. 如果客户应用打开比较慢,可以检查网络延迟、系统负载、应用配置等。 23. 数据库缓存优化可以使用Redis等缓存技术。 24. 提高数据库读写效率可以使用索引、分区、缓存等技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值