当前位置: 首页 > news >正文

自适应好还是响应式网站好做详情页到那个网站找模特素材

自适应好还是响应式网站好,做详情页到那个网站找模特素材,建个网站 网页空间多少,镇江地区做网站的公司有哪些文章目录 Kubernetes 部署方式常见的K8S安装部署方式Kubeadm与二进制部署的区别 Kubernetes部署安装环境配置Kubernetes集群初始化配置#xff08;实验环境#xff09;一、操作系统初始化配置二、部署Docker引擎 etcd 集群搭建配置 etcd 集群 Kubernetes Master 组件部署准备… 文章目录 Kubernetes 部署方式常见的K8S安装部署方式Kubeadm与二进制部署的区别 Kubernetes部署安装环境配置Kubernetes集群初始化配置实验环境一、操作系统初始化配置二、部署Docker引擎 etcd 集群搭建配置 etcd 集群 Kubernetes Master 组件部署准备工作创建目录复制证书解压 Kubernetes 二进制文件创建 Bootstrap Token启动 Master 组件生成 Kubeconfig 文件验证集群状态 Kubernetes Worker Node 部署在所有 Node 节点上执行的操作在 Master 节点master01上执行的操作在 node01 节点上操作启动 kubelet 服务 在 master01 节点上操作通过 CSR 请求在 node01 节点上操作加载 ip_vs 模块启动proxy服务 部署 CNI 网络组件在 node01 节点上操作上传 cni-plugins-linux-amd64-v1.3.0.tgz 和 flannel镜像文件 到 /opt 目录中 在 master01 节点上操作上传 kube-flannel.yml 文件到 /opt/k8s 目录中部署 CNI 网络 部署 Calico在 master01 节点操作部署 Calico查看node状态修改calico的网络模式 node02 节点部署在 node01 节点上操作在 node02 节点上操作在 master01 节点上操作通过 CSR 请求 在 node02 节点上操作加载 ipvs 模块使用proxy.sh脚本启动proxy服务查看群集中的节点状态 部署 CoreDNSCoreDNS部署CoreDNS在所有 node 节点上操作在 master01 节点上操作DNS 解析测试故障排除 Kubernetes 部署方式 常见的K8S安装部署方式 Minikube 用途用于本地快速运行一个单节点微型K8S适合学习、预览K8S特性。部署地址https://kubernetes.io/docs/setup/minikube Kubeadm 用途提供kubeadm init和kubeadm join命令用于快速部署K8S集群相对简单。文档地址https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ 二进制安装部署 用途生产首选从官方下载发行版的二进制包手动部署每个组件和自签TLS证书组成K8S集群。下载地址https://github.com/kubernetes/kubernetes/releases备注虽然手动部署较麻烦但期间可以学习很多工作原理也利于后期维护。 总结 Minikube适合本地学习和预览K8S特性。Kubeadm部署简单适合快速搭建K8S集群但管理难度较大故障恢复速度较慢。二进制部署部署复杂但管理方便集群伸展性能好稳定性高适合生产环境。 Kubeadm与二进制部署的区别 二进制部署 部署难度难管理方便性方便集群伸展性能好稳定性集群规模到达一定规模几百个节点、上万个Pod时二进制部署的稳定性高于kubeadm。故障恢复宿主机起来后进程也会自动起来恢复速度快。 Kubeadm部署 部署难度简单管理方便性难部署方式以容器管理容器的方式部署组件及服务。故障恢复恢复速度比二进制慢因为需要先启动宿主机再启动进程最后启动容器集群才能恢复。 Kubernetes部署安装 环境配置 节点名称IP地址托管服务/组件k8s集群master0120.0.0.10kube-apiserver, kube-controller-manager, kube-scheduler, etcdk8s集群master0220.0.0.66备用masterk8s集群node0120.0.0.58kubelet, kube-proxy, docker, etcdk8s集群node0220.0.0.59kubelet, kube-proxy, docker, etcdetcd集群节点120.0.0.10etcdetcd集群节点220.0.0.58etcdetcd集群节点320.0.0.59etcd Kubernetes集群初始化配置实验环境 一、操作系统初始化配置 关闭防火墙 停止并禁用firewalld服务。清除所有iptables规则。 systemctl stop firewalld systemctl disable firewalld iptables -F iptables -t nat -F iptables -t mangle -F iptables -X关闭SELinux 临时关闭SELinux。永久修改/etc/selinux/config文件将SELinux设置为disabled。 setenforce 0 sed -i s/enforcing/disabled/ /etc/selinux/config关闭Swap 临时关闭Swap。永久禁用Swap修改/etc/fstab文件注释掉Swap相关行。 swapoff -a sed -ri s/.*swap.*/#/ /etc/fstab设置主机名 根据规划使用hostnamectl命令设置各节点的主机名。 hostnamectl set-hostname [主机名]添加Hosts 在master节点上编辑/etc/hosts文件添加集群内其他节点的IP和主机名映射。 cat /etc/hosts EOF 20.0.0.10 master01 20.0.0.58 node01 20.0.0.59 node02 EOF调整内核参数 创建/etc/sysctl.d/k8s.conf文件添加必要的内核参数配置。应用配置。 cat /etc/sysctl.d/k8s.conf EOF net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv6.conf.all.disable_ipv61 net.ipv4.ip_forward1 EOF sysctl --system时间同步 安装ntpdate工具。使用ntpdate同步时间。 yum install ntpdate -y ntpdate time.windows.com二、部署Docker引擎 安装依赖 在所有node节点上安装yum-utils、device-mapper-persistent-data和lvm2。 yum install -y yum-utils device-mapper-persistent-data lvm2添加Docker仓库 使用yum-config-manager添加Docker的官方仓库。 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Docker 安装Docker CE、Docker CE CLI和containerd.io。 yum install -y docker-ce docker-ce-cli containerd.io配置Docker 创建/etc/docker目录。在/etc/docker/daemon.json文件中添加Docker的配置包括镜像加速器、Cgroup Driver等。 mkdir /etc/docker cat /etc/docker/daemon.json EOF {registry-mirrors: [https://6ijb8ubo.mirror.aliyuncs.com, https://docker.m.daocloud.io, https://docker.1panel.live],exec-opts: [native.cgroupdriversystemd],log-driver: json-file,log-opts: {max-size: 1g, max-file: 3} } EOF启动并启用Docker服务 启动Docker服务。设置Docker服务开机自启。 systemctl start docker.service systemctl enable docker.service验证Docker配置 使用docker info命令检查Cgroup Driver是否配置正确。 docker info | grep Cgroup Driver Cgroup Driver: systemd------------------------------ 部署 etcd 集群 ------------------------------ etcd是一个分布式键值存储系统用于在分布式系统中保存配置信息、元数据以及关键的共享状态。它是一个开源项目最初由CoreOS开发并维护现在由CNCF托管。etcd的设计目标是提供可靠的分布式存储以支持分布式系统的一致性和高可用性。 关键特性 分布式存储etcd的数据存储是分布式的可以跨多个节点进行分布确保高可用性和可扩展性。强致性etcd提供强一致性的保证确保在集群中的所有节点都能看到相同的数据视图。轻量级etcd采用轻量级的Raft一致性算法以确保集群中的节点之间达成一致同时保持相对较低的性能开销。API支持etcd提供简单而强大的HTTPJSON API使得开发人员可以轻松地与其进行交互并集成到各种应用和工具中。Watch机制etcd支持Watch机制允许客户端监视特定键的变化并在数据发生变更时得到通知。安全性etcd支持SSL/TLS加密以保障数据在传输过程中的安全性并提供基于角色的访问控制。 应用场景 配置管理 etcd常用于存储应用程序和系统的配置信息允许动态地更新配置而无需重启应用。服务发现 etcd可以用作服务发现的后端存储帮助服务在动态环境中找到彼此。分布式锁 通过etcd的分布式锁机制可以实现分布式系统中的协同工作和资源同步。集群协调 etcd在构建分布式系统中作为集群协调的关键组件确保系统的一致性和稳定性。 总体而言etcd在云原生应用和分布式系统中发挥着重要作用提供了可靠的分布式存储和协调服务为应用程序提供一致性、可靠性和高可用性的基础设施支持。 etcd 目前默认使用2379端口提供HTTP API服务 2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。 即etcd默认使用2379端口对外为客户端提供通讯使用端口2380来进行服务器间内部通讯。 etcd 在生产环境中一般推荐集群方式部署。由于etcd 的leader选举机制要求至少为3台或以上的奇数台。 ---------- 准备签发证书环境 ---------- CFSSL 是 CloudFlare 公司开源的一款 PKI/TLS 工具。 CFSSL 包含一个命令行工具和一个用于签名、验证和捆绑 TLS 证书的 HTTP API 服务。使用Go语言编写。 CFSSL 使用配置文件生成证书因此自签之前需要生成它识别的 json 格式的配置文件CFSSL 提供了方便的命令行生成配置文件。 CFSSL 用来为 etcd 提供 TLS 证书它支持签三种类型的证书 client 证书服务端连接客户端时携带的证书用于客户端验证服务端身份如 kube-apiserver 访问 etcdserver 证书客户端连接服务端时携带的证书用于服务端验证客户端身份如 etcd 对外提供服务peer 证书相互之间连接时使用的证书如 etcd 节点之间进行验证和通信。 这里全部都使用同一套证书认证。 etcd 集群搭建 安装 cfssl 工具 下载并安装 cfssl、cfssljson 和 cfssl-certinfo 工具。 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo chmod x /usr/local/bin/cfssl*链接可能失效此处自己上传的文件进行实验生成 etcd 证书 创建目录并上传脚本。 mkdir /opt/k8s cd /opt/k8s/ chmod x etcd-cert.sh etcd.sh vim /opt/k8s/etcd-cert.sh # 修改 etcd 中集群的 IP 地址 mkdir /opt/k8s/etcd-cert mv etcd-cert.sh etcd-cert/ cd /opt/k8s/etcd-cert/ ./etcd-cert.sh # 生成 CA 证书、etcd 服务器证书及私钥 ls#看到以下内容 ca-config.json ca-csr.json ca.pem server.csr server-key.pem ca.csr ca-key.pem etcd-cert.sh server-csr.json server.pem下载并解压 etcdcd /opt/k8s/ wget https://github.com/etcd-io/etcd/releases/download/v3.4.26/etcd-v3.4.26-linux-amd64.tar.gz tar zxvf etcd-v3.4.26-linux-amd64.tar.gz配置 etcd 集群 创建必要目录mkdir -p /opt/etcd/{cfg,bin,ssl} cd /opt/k8s/etcd-v3.4.26-linux-amd64/ mv etcd etcdctl /opt/etcd/bin/ cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/启动 etcd 服务 在 master01 节点上启动 etcd 并等待其他节点加入。 cd /opt/k8s/ ./etcd.sh etcd01 20.0.0.10 etcd02https://20.0.0.58:2380,etcd03https://20.0.0.59:2380进入卡住状态等待其他节点加入这里需要三台etcd服务同时启动如果只启动其中一台后服务会卡在那里直到集群中所有etcd节点都已启动可忽略这个情况 可另外打开一个窗口查看etcd进程是否正常 ps -ef | grep etcd 拷贝配置文件到集群节点中 把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点 scp -r /opt/etcd/ root20.0.0.58:/opt/ scp -r /opt/etcd/ root20.0.0.59:/opt/ scp /usr/lib/systemd/system/etcd.service root20.0.0.58:/usr/lib/systemd/system/ scp /usr/lib/systemd/system/etcd.service root20.0.0.59:/usr/lib/systemd/system/配置其他节点 在 node01 和 node02 节点上修改 /opt/etcd/cfg/etcd 配置文件。 vim /opt/etcd/cfg/etcd #[Member] ETCD_NAMEetcd02 #修改 ETCD_DATA_DIR/var/lib/etcd ETCD_LISTEN_PEER_URLShttps://20.0.0.58:2380 #修改 ETCD_LISTEN_CLIENT_URLShttps://20.0.0.58:2379 #修改#[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLShttps://20.0.0.58:2380 #修改 ETCD_ADVERTISE_CLIENT_URLShttps://20.0.0.58:2379 #修改 ETCD_INITIAL_CLUSTERetcd01https://20.0.0.10:2380,etcd02https://20.0.0.58:2380,etcd03https://20.0.0.59:2380 ETCD_INITIAL_CLUSTER_TOKENetcd-cluster ETCD_INITIAL_CLUSTER_STATEnew启动 etcd 服务并检查状态systemctl start etcd systemctl enable etcd systemctl status etcd检查 etcd 集群状态ETCDCTL_API3 /opt/etcd/bin/etcdctl --endpointshttps://20.0.0.10:2379,https://20.0.0.58:2379,https://20.0.0.59:2379 --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem endpoint health --write-outtable查看当前的 leaderETCDCTL_API3 /opt/etcd/bin/etcdctl --endpointshttps://20.0.0.10:2379,https://20.0.0.58:2379,https://20.0.0.59:2379 --cacert/opt/etcd/ssl/ca.pem --cert/opt/etcd/ssl/server.pem --key/opt/etcd/ssl/server-key.pem endpoint status --write-outtable–cacert 使用此CA证书验证启用https的服务器的证书–key 使用此TLS密钥文件标识HTTPS客户端–cert 使用此TLS证书文件标识HTTPS客户端–endpoints集群中以逗号分隔的机器地址列表cluster-health检查etcd集群的运行状况 Kubernetes Master 组件部署 准备工作 上传文件到 /opt/k8s 目录 上传 master.zip 和 k8s-cert.sh 到 /opt/k8s。上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s。 注此处用的是自己的master.zip压缩包里有事先准备好的脚本文件资源等并不适用所有情况适度参考。 2. 解压和权限设置 解压 master.zip 并赋予脚本执行权限。cd /opt/k8s/ unzip master.zip chmod x *.sh创建目录 创建 Kubernetes 工作目录mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}创建证书目录mkdir /opt/k8s/k8s-cert mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert cd /opt/k8s/k8s-cert/ ./k8s-cert.sh#生成ca证书、相关组件的证书和私钥查看生成的证书ls *pem大致得到如下结果 admin-key.pem apiserver-key.pem ca-key.pem kube-proxy-key.pem admin.pem apiserver.pem ca.pem kube-proxy.pem复制证书 将 CA 证书和 API Server 相关证书及私钥复制到 ssl 目录。cp ca*pem apiserver*pem /opt/kubernetes/ssl/#上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中解压 kubernetes 压缩包 #下载地址https://github.com/kubernetes/kubernetes/blob/release-1.20/CHANGELOG/CHANGELOG-1.20.md #注打开链接你会发现里面有很多包下载一个server包就够了包含了Master和Worker Node二进制文件。解压 Kubernetes 二进制文件 解压 Kubernetes 服务器包 cd /opt/k8s/ tar zxvf kubernetes-server-linux-amd64.tar.gz复制master组件的关键命令文件到 kubernetes工作目录的 bin子目录中 cd /opt/k8s/kubernetes/server/bin cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/ ln -s /opt/kubernetes/bin/* /usr/local/bin/创建 Bootstrap Token 创建并运行 token.sh 脚本cd /opt/k8s/ vim token.sh #!/bin/bash #获取随机数前16个字节内容以十六进制格式输出并删除其中空格 BOOTSTRAP_TOKEN$(head -c 16 /dev/urandom | od -An -t x | tr -d ) cat /opt/kubernetes/cfg/token.csv EOF ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,system:kubelet-bootstrap EOFchmod x token.sh ./token.sh cat /opt/kubernetes/cfg/token.csv启动 Master 组件 启动 API Server 需要先准备好 apiserver.sh 脚本传入参数如 etcd 集群地址。 cd /opt/k8s/ ./apiserver.sh 20.0.0.10 https://20.0.0.10:2379,https://20.0.0.58:2379,https://20.0.0.59:2379 # 检查 API Server 是否启动成功 ps aux | grep kube-apiserver netstat -natp | grep 6443启动 Schedulercd /opt/k8s/ ./scheduler.sh ps aux | grep kube-scheduler注意脚本中的IP地址是否正确 启动 Controller Manager./controller-manager.sh注意脚本中的IP地址是否正确 生成 Kubeconfig 文件 生成 kubectl 连接集群的 kubeconfig 文件并运行 admin.sh 脚本。./admin.sh注意脚本中的IP地址是否正确 验证集群状态 查看集群组件状态kubectl get cs输出大致如下 NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-2 Healthy {health:true} etcd-1 Healthy {health:true} etcd-0 Healthy {health:true} 查看版本信息 kubectl version查看当前 leader kubectl -n kube-system get leases kube-scheduler kubectl -n kube-system get leases kube-controller-managerKubernetes Worker Node 部署 在所有 Node 节点上执行的操作 创建 Kubernetes 工作目录 创建必要的目录结构用于存放 Kubernetes 组件的二进制文件、配置文件、证书和日志。mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}上传并解压 node.zip 将包含 kubelet.sh 和 proxy.sh 脚本的 node.zip 文件上传到 /opt 目录。解压 node.zip 并赋予脚本执行权限。cd /opt/ unzip node.zip chmod x kubelet.sh proxy.sh在 Master 节点master01上执行的操作 拷贝 kubelet 和 kube-proxy 到 Node 节点 将 kubelet 和 kube-proxy 二进制文件从 Master 节点的 /opt/k8s/kubernetes/server/bin 目录拷贝到各个 Node 节点的 /opt/kubernetes/bin/ 目录。cd /opt/k8s/kubernetes/server/bin scp kubelet kube-proxy root20.0.0.58:/opt/kubernetes/bin/ scp kubelet kube-proxy root20.0.0.59:/opt/kubernetes/bin/生成 kubeconfig 文件 创建 /opt/k8s/kubeconfig 目录上传 kubeconfig.sh 脚本并赋予执行权限。执行 kubeconfig.sh 脚本生成 bootstrap.kubeconfig 和 kube-proxy.kubeconfig 文件。这些文件包含连接到 API Server 所需的证书和配置信息。mkdir /opt/k8s/kubeconfigcd /opt/k8s/kubeconfig chmod x kubeconfig.sh ./kubeconfig.sh 20.0.0.10 /opt/k8s/k8s-cert/拷贝 kubeconfig 文件到 Node 节点 将生成的 bootstrap.kubeconfig 和 kube-proxy.kubeconfig 文件拷贝到各个 Node 节点的 /opt/kubernetes/cfg/ 目录。scp bootstrap.kubeconfig kube-proxy.kubeconfig root20.0.0.58:/opt/kubernetes/cfg/ scp bootstrap.kubeconfig kube-proxy.kubeconfig root20.0.0.59:/opt/kubernetes/cfg/RBAC 授权和自动批准 CSR 请求 创建 RBAC 绑定使用户 kubelet-bootstrap 能够发起 CSR 请求并自动批准这些请求。kubectl create clusterrolebinding kubelet-bootstrap --clusterrolesystem:node-bootstrapper --userkubelet-bootstrap kubectl create clusterrolebinding node-autoapprove-bootstrap --clusterrolesystem:certificates.k8s.io:certificatesigningrequests:nodeclient --userkubelet-bootstrap kubectl create clusterrolebinding node-autoapprove-certificate-rotation --clusterrolesystem:certificates.k8s.io:certificatesigningrequests:selfnodeclient --userkubelet-bootstrapkubelet 采用 TLS Bootstrapping 机制自动完成到 kube-apiserver 的注册在 node 节点量较大或者后期自动扩容时非常有用。 Master apiserver 启用 TLS 认证后node 节点 kubelet 组件想要加入集群必须使用CA签发的有效证书才能与 apiserver 通信当 node 节点很多时签署证书是一件很繁琐的事情。因此 Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书kubelet 会以一个低权限用户自动向 apiserver 申请证书kubelet 的证书由 apiserver 动态签署。 kubelet 首次启动通过加载 bootstrap.kubeconfig 中的用户 Token 和 apiserver CA 证书发起首次 CSR 请求这个 Token 被预先内置在 apiserver 节点的 token.csv 中其身份为 kubelet-bootstrap 用户和 system:kubelet-bootstrap 用户组想要首次 CSR 请求能成功即不会被 apiserver 401 拒绝则需要先创建一个 ClusterRoleBinding将 kubelet-bootstrap 用户和 system:node-bootstrapper 内置 ClusterRole 绑定通过 kubectl get clusterroles 可查询使其能够发起 CSR 认证请求。 TLS bootstrapping 时的证书实际是由 kube-controller-manager 组件来签署的也就是说证书有效期是 kube-controller-manager 组件控制的kube-controller-manager 组件提供了一个 --experimental-cluster-signing-duration 参数来设置签署的证书有效时间默认为 8760h0m0s将其改为 87600h0m0s即 10 年后再进行 TLS bootstrapping 签署证书即可。 也就是说 kubelet 首次访问 API Server 时是使用 token 做认证通过后Controller Manager 会为 kubelet 生成一个证书以后的访问都是用证书做认证了。 在 node01 节点上操作 启动 kubelet 服务 cd /opt/ ./kubelet.sh 20.0.0.58 ps aux | grep kubelet在 master01 节点上操作通过 CSR 请求 检查到 node01 节点的 kubelet 发起的 CSR 请求Pending 表示等待集群给该节点签发证书 kubectl get csr #输出大致如下 NAME AGE SIGNERNAME REQUESTOR CONDITION node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE 12s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending通过 CSR 请求 kubectl certificate approve node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFEApproved,Issued 表示已授权 CSR 请求并签发证书 kubectl get csr NAME AGE SIGNERNAME REQUESTOR CONDITION node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE 2m5s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued查看节点由于网络插件还没有部署节点会没有准备就绪 NotReady kubectl get node NAME STATUS ROLES AGE VERSION 20.0.0.58 NotReady none 108s v1.20.15在 node01 节点上操作 加载 ip_vs 模块 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o ^[^.]*);do echo $i; /sbin/modinfo -F filename $i /dev/null 21 /sbin/modprobe $i;done启动proxy服务 cd /opt/ ./proxy.sh 20.0.0.58 ps aux | grep kube-proxy部署 CNI 网络组件 在 node01 节点上操作 上传 cni-plugins-linux-amd64-v1.3.0.tgz 和 flannel镜像文件 到 /opt 目录中 cd /opt/ docker load -i flannel.tar docker load -i flannel-cni-plugin.tarmkdir -p /opt/cni/bin tar zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin在 master01 节点上操作 上传 kube-flannel.yml 文件到 /opt/k8s 目录中部署 CNI 网络 cd /opt/k8s kubectl apply -f kube-flannel.yml kubectl get pods -n kube-flannel NAME READY STATUS RESTARTS AGE kube-flannel-ds-hjtc7 1/1 Running 0 7skubectl get nodes NAME STATUS ROLES AGE VERSION 20.0.0.58 Ready none 81m v1.20.15ip -d a show flannel.1 #在node上查看flannel.1的端口 route -n #通过路由信息看到发送到对端网段的数据包都会经过 flannel.1发出网关ip也是对端vtep设备的ip地址 ip neigh show dev flannel.1 #由于flannel.1 通过路由信息已经知道对端vtep的ip地址通过查询本地arp缓存表得到目的vtep的mac地址 bridge fdb show flannel.1 #flannel.1可以通过查询本机的FDB表获取目的节点主机的ip部署 Calico在 master01 节点操作 curl:https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml 部署 Calico 上传 calico.yaml 文件到 /opt/k8s 目录中 vim冒号模式下/CALICO_IPV4POOL_CIDR找 cd /opt/k8s vim calico.yaml#修改里面定义 Pod 的网络CALICO_IPV4POOL_CIDR需与前面 kube-controller-manager 配置文件指定的 cluster-cidr 网段一样- name: CALICO_IPV4POOL_CIDRvalue: 10.244.0.0/16 #Calico 默认使用的网段为 192.168.0.0/16kubectl apply -f calico.yamlkubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE calico-kube-controllers-659bd7879c-4h8vk 1/1 Running 0 58s calico-node-nsm6b 1/1 Running 0 58s calico-node-tdt8v 1/1 Running 0 58s查看node状态 等 Calico Pod 都 Running节点也会准备就绪 kubectl get nodes修改calico的网络模式 将IPIP变为BGP kubectl edit ds calico-node -n kube-system......- name: CALICO_IPV4POOL_IPIPvalue: Never #设置为Never时为BGP模式设置为Always时为IPIP模式设置为Cross-SubNet时为混合模式- name: IP_AUTODETECTION_METHOD #添加下面两行value: interfaceens33 #指定calico使用的网卡kubectl edit ippool ipipMode: Never #把ipipMode从Always修改成为Never使用BGP模式时查看IP会发现tunl0没有IP地址了查看route会发现不再使用tunl0了而是直接通过物理网卡转发。 ip addr ip routenode02 节点部署 在 node01 节点上操作 cd /opt/ scp kubelet.sh proxy.sh root20.0.0.59:/opt/ scp -r /opt/cni root20.0.0.59:/opt/在 node02 节点上操作 启动kubelet服务 cd /opt/ chmod x kubelet.sh ./kubelet.sh 20.0.0.59在 master01 节点上操作 kubectl get csr NAME AGE SIGNERNAME REQUESTOR CONDITION node-csr-BbqEh6LvhD4R6YdDUeEPthkb6T_CJDcpVsmdvnh81y0 10s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE 85m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued通过 CSR 请求 kubectl certificate approve node-csr-BbqEh6LvhD4R6YdDUeEPthkb6T_CJDcpVsmdvnh81y0kubectl get csr NAME AGE SIGNERNAME REQUESTOR CONDITION node-csr-BbqEh6LvhD4R6YdDUeEPthkb6T_CJDcpVsmdvnh81y0 23s kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE 85m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued在 node02 节点上操作 加载 ipvs 模块 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o ^[^.]*);do echo $i; /sbin/modinfo -F filename $i /dev/null 21 /sbin/modprobe $i;done使用proxy.sh脚本启动proxy服务 cd /opt/ chmod x proxy.sh ./proxy.sh 20.0.0.59查看群集中的节点状态 kubectl get nodes部署 CoreDNS CoreDNS CoreDNS 是 Kubernetes 的默认 DNS 实现。为 Kubernetes 集群内的 Pod 提供 DNS 服务。通过创建 service 资源名称与 ClusterIP 的对应关系解析避免将 service 的 ClusterIP 地址硬编码到应用程序代码中。 部署CoreDNS 在所有 node 节点上操作 上传 coredns.tar 到 /opt 目录中。使用 Docker 加载 CoreDNS 镜像cd /opt docker load -i coredns.tar在 master01 节点上操作 上传 coredns.yaml 文件到 /opt/k8s 目录中。使用 kubectl 部署 CoreDNScd /opt/k8s kubectl apply -f coredns.yaml检查 CoreDNS Pod 的状态kubectl get pods -n kube-system示例输出NAME READY STATUS RESTARTS AGE coredns-5ffbfd976d-j6shb 1/1 Running 0 32sDNS 解析测试 使用 busybox 镜像运行一个临时 Pod 进行 DNS 解析测试kubectl run -it --rm dns-test --imagebusybox:1.28.4 sh在 busybox Pod 中执行 nslookup 命令/ # nslookup kubernetes.default.svc.cluster.local. Server: 10.0.0.2 Address: 10.0.0.2:53Name: kubernetes.default.svc.cluster.local Address: 10.0.0.1故障排除 如果 DNS 解析测试失败可以尝试给 kubectl 绑定默认 cluster-admin 管理员集群角色授权集群操作权限 kubectl create clusterrolebinding cluster-system-anonymous --clusterrolecluster-admin --usersystem:anonymous确保所有 node 节点上已经加载了 CoreDNS 的 Docker 镜像。 部署 CoreDNS 的配置文件 coredns.yaml 需要正确配置确保 CoreDNS 能够正确解析 Kubernetes 集群内的服务。 在进行 DNS 解析测试时确保 CoreDNS Pod 已经处于 Running 状态。
http://www.hkea.cn/news/14434284/

相关文章:

  • 网站建设多少钱专业程序开发过程的四个步骤
  • 做新闻门户网站需要什么赣州找工作的网站
  • 淘宝建站服务热点新闻头条
  • 爱站网关键字查询上海做网站服务商
  • 网站建设php培训权威解读当前经济热点问题
  • 太原php网站开发如何查看网站的更新频率
  • 网站备案是什么网站开发面试自我介绍
  • 体育网站建设方案小程序链接wordpress
  • php做购物网站的弊端馆陶网站推广
  • 哪些行业需要网站有哪些内容thinkphp可以做网站吗
  • 门户网站首页设计兖州市做网站
  • 满山红厦门网站建设企业网站建设教程 pdf
  • 360免费建站连接百度 营销推广怎么收费
  • 移动网站建设是什么优酷视频网站源码
  • 违反建设投诉网站举报物流网站开发策划
  • 地图网站模板网站主页和子页风格如何统一
  • 美食网站建设的重要性怎么做网站外链
  • 孝感织云网站建设实搜石家庄网站建设小程序
  • 云南城市建设职业学院成绩查询网站网页设计代码是怎么加链接
  • 黑龙江做网站公司广州网站建设设计哪家好
  • 国外创意海报设计网站大连网站建设方案案例
  • 红酒公司网站建设模板6841wordpress 当前用户所有评论
  • flash开发网站注册一个公司需要花多少钱
  • 网站站欣赏程序员培训机构出来找工作好找吗
  • 建设淘宝网站的人员组织网站建设怎么办
  • 湖南营销型网站备案审核网站显示500
  • 南京网站seo优设网app安卓下载
  • 合肥网站建设高端外国网页设计免费模板
  • 上海定制网站开发wordpress信息
  • 移动网站开发 公众号技术支持 盈岚网站建设