中小企业网站建设好么淮北叶红军
- 作者: 五速梦信息网
- 时间: 2026年03月21日 03:48
当前位置: 首页 > news >正文
中小企业网站建设好么,淮北叶红军,十大没必要装修,制作一个公司网页要多少钱上周内容回顾: - 基于kubeadm部署k8s集群 ***** - Pod的基础管理 ***** 是K8S集群中最小的部署单元。 — 网络基础容器(pause:v3.1)#xff0c;提供网络 — 初始化容器(initContainer)#xff0c;做初始化的准备工作…上周内容回顾: - 基于kubeadm部署k8s集群 ***** - Pod的基础管理 ** 是K8S集群中最小的部署单元。 — 网络基础容器(pause:v3.1)提供网络 — 初始化容器(initContainer)做初始化的准备工作 — 业务容器(containers)实际的业务容器 apiVersion: v1 kind: Pod metadata: name: oldboyedu-linux82 labels: school: oldboyedu class: linux82 nameSpace: oldboyedu-linux spec: imagePullSecret: oldboyedu-harbor volume: - name: data01 emptyDir: {} - name: data02 hostPath: path: /oldboyedu-linux82/data - name: data03 nfs: server: 10.0.0.151 path: /oldboyedu/data/k8s - name: data03 configMap: name: nginx.conf imagePullPolicy: Always hostNetwork: true nodeName: k8s151.oldboyedu.com initContainer: containers: - name: linux image: harbor250.oldboyedu.com/oldboyedu-games/huangjinkuanggong:v0.1 # stdin: true volumeMount: - name: data01 mountPath: /oldboyedu-linux82 - name: data03 mountPath: /etc/nginx/nginx.conf subPath: nginx.conf restartPolicy: Always livenessProbe: exec: httpGet: tcpSocket: … readinessProbe: exec: httpGet: tcpSocket: … command: — docker — ENTRYPOINT args: — docker — CMD resources: limit: request: env: - name: SCHOOL value: oldboyedu - name: pod_name valueFrom: configMapKeyRef: fieldRef: secretKeyRef: resourceFieldRef - nameSpace ** — 用来隔离k8S集群的资源通过kubectl api-resources的NAMESPACED(true表示支持名称空间哟。) - configMap ***** — 用于持久化配置文件。 - secret ***** — 存储铭感数据因为其使用了base64编码格式数据并不是加密的哟 - rc控制器基础使用 ** — 控制Pod的副本数量。 - rs控制器基础使用 ** — 控制Pod的副本数量。相比于rc资源rs资源实现更加轻量级功能更丰富。 - deploy控制器基础使用 ***** — 生产环境中用于部署服务微服务无状态服务。 - svc服务发现基础使用 ***** — 负载均衡和服务发现。 Q1: 请问deploy和rc资源对比在升级过程中有什么区别 相同点: (1)都支持副本的控制; (2)都支持升级 不同点: (1)rc资源不支持声明式升级方式,deploy资源支持声明式升级 (2)rc升级过程中需要手动修改svc的标签选择器字段selectordeploy资源不需要; Q2: 请问deploy资源在升级过程中能否访问到旧的Pod业务呢为什么请说明原因? deploy — rs, — old — rs, — new svc — endPoint — selector — [old,new] Q3: svc的类型有哪些其应用场景在哪? ClusterIP: 集群的IP仅对K8S集群内部资源提供访问。ingress — ing NodePort: 绑定K8S集群的所有worker节点的端口优点就是可以让K8S外部用户进行访问缺点就是费端口 ExternalName,LoadBalancer: 云环境中使用的一种负载均衡器。 Q4: 请问访问一个Pod服务有哪些方法请举例说明 1.pods.spec.hostNetwork 2.pods.spec.containers.ports.hostPort 3.service.spec.type.NodePort … Q5: 如何实现svc的后端服务的流量控制呢? isito实现流量控制。 Endpoints资源案例: 1.创建MySQL服务 docker run -p 3306:3306 -de MYSQL_ROOT_PASSWORD123 –name mysql57 k8s151.oldboyedu.com:5000/oldboyedu-db/mysql:5.7 2.添加授权用户 CREATE USER linux82 IDENTIFIED BY oldboyedu; CREATE DATABASE wordpress CHARACTER SET utf8mb4; GRANT ALL ON wordpress.* TO linux82; SHOW GRANTS FOR linux82; 3.测试连接 mysql -u linux82 -poldboyedu wordpress SHOW TABLES FROM wordpress; 4.创建ep资源映射K8S集群外部的MySQL服务 [rootk8s151.oldboyedu.com v4]# cat 01-ep-mysql.yaml apiVersion: v1 kind: Endpoints metadata: name: mysql-ep-v4 # 指定ep资源的后端服务 subsets: # IP地址 - addresses: - ip: 10.0.0.151 # 端口号 ports: - port: 3306 [rootk8s151.oldboyedu.com v4]# 5.创建和ep资源名称相同的svc注意当删除svc时对应的ep名称也被删除 [rootk8s151.oldboyedu.com v4]# cat 02-svc-mysql.yaml apiVersion: v1 kind: Service metadata: name: mysql-ep-v4 spec: ports: - port: 3306 targetPort: 3306 [rootk8s151.oldboyedu.com v4]# 6.WordPress指定数据库的主机地址为svc的名称 [rootk8s151.oldboyedu.com v4]# cat 03-deploy-wordpress.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: oldboyedu-linux82-wordpress-v2 spec: replicas: 3 selector: matchLabels: apps: wordpress template: metadata: name: oldboyedu-linux82-wordpress labels: apps: wordpress spec: volumes: - name: wp nfs: server: k8s151.oldboyedu.com path: /oldboyedu/data/kubernetes/wordpress/ containers: - name: wordpress image: k8s151.oldboyedu.com:5000/oldboyedu-wordpress/wordpress env: - name: WORDPRESS_DB_HOST # value: 10.254.100.100 # value: mysq57-v3 value: mysql-ep-v4 - name: WORDPRESS_DB_USER value: linux82 - name: WORDPRESS_DB_PASSWORD value: oldboyedu volumeMounts: - name: wp mountPath: /var/www/html [rootk8s151.oldboyedu.com v4]# 7.暴露wordpress服务 [rootk8s151.oldboyedu.com v4]# cat 04-svc-wordpress.yaml apiVersion: v1 kind: Service metadata: name: wordpress-v3 spec: type: NodePort ports: - port: 9999 targetPort: 80 nodePort: 30080 selector: apps: wordpress [rootk8s151.oldboyedu.com v4]# 8.访问WebUI进行测试并验证数据库的数据 # docker exec mysql57 mysql -u linux82 -poldboyedu -e SHOW TABLES FROM wordpress\G 验证Kube-proxy底层默认采用了iptables实现负载均衡 1.查看日志 kubectl get pods -A -o wide| grep kube-system kubectl -n kube-system logs -f kube-proxy-4tfrj … W0913 00:44:22.201735 1 proxier.go:513] Failed to load kernel module ip_vs with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0913 00:44:22.202823 1 proxier.go:513] Failed to load kernel module ip_vs_rr with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0913 00:44:22.203683 1 proxier.go:513] Failed to load kernel module ip_vs_wrr with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0913 00:44:22.204579 1 proxier.go:513] Failed to load kernel module ip_vs_sh with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0913 00:44:22.210022 1 server_others.go:249] Flag proxy-mode unknown, assuming iptables proxy I0913 00:44:22.217923 1 server_others.go:143] Using iptables Proxier. 2.验证iptables实现负载均衡 iptables-save | grep 10.254.230.102 iptables-save | grep KUBE-SVC-UCRS5B77IKZZYESP iptables-save | grep KUBE-SEP-3E7IGDJUY2SRNIHO iptables-save | grep KUBE-SEP-EO465CXBF2CDSL4W iptables-save | grep KUBE-SEP-BFMP3WUEAK3XBKUH 使用ipvs替代iptables规则生产环境中推荐使用ipvs代理模式: 1.所有worker节点安装ipvs的工具包 yum -y install conntrack-tools ipvsadm.x86_64 2.所有worker节点编写加载ipvs的配置文件 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.加载ipvs相关模块并查看 chmod 755 /etc/sysconfig/modules/ipvs.modules bash /etc/sysconfig/modules/ipvs.modules lsmod | grep -e ip_vs -e nf_conntrack_ipv4 4.修改kube-proxy的工作模式为ipvs kubectl -n kube-system edit cm kube-proxy … mode: ipvs 5.删除所有的Pod(生产环境中建议一个一个的手动删除删除后需要确保kube-proxy服务是正常启动滚动再去删除下一个) kubectl -n kube-system get pods | grep kube-proxy | awk {print $1} | xargs kubectl -n kube-system delete pods 6.验证IPVS是否成功 ipvsadm -ln | grep 10.254.230.102 -A 10 # 注意此处的IP是svc的VIP地址哟 修改svc的端口映射范围: 1.修改配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml … spec: containers: - command: - kube-apiserver - –service-node-port-range80-60000 # 进行添加这一行即可 … 2.测试svc 建议使用nginx镜像测试可以明显看出效果哟。 使用deploy资源部署redis实战 [rootk8s151.oldboyedu.com redis]# cat 01-deploy-redis.yaml apiVersion: apps/v1 kind: Deployment metadata: name: redis-leader labels: app: redis role: leader tier: backend spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis role: leader tier: backend spec: containers: - name: leader image: docker.io/redis:6.0.5 resources: requests: cpu: 100m memory: 100Mi ports: - containerPort: 6379 — apiVersion: v1 kind: Service metadata: name: redis-leader labels: app: redis role: leader tier: backend spec: type: NodePort ports: - port: 6379 targetPort: 6379 nodePort: 6379 selector: app: redis role: leader tier: backend [rootk8s151.oldboyedu.com redis]# 测试: kubectl exec -it redis-leader-7df78664-ccqx8 – bash # redis-cli KEYS * # 查看所有的KEY set school oldboyedu # 设置字符串 GET school # 查看KEY的值 etcd API V3管理实战: (1)设置别名便于后续操作。 alias etcdctlETCDCTL_API3 etcdctl –endpointshttps://[127.0.0.1]:2379 –cacert/etc/kubernetes/pki/etcd/ca.crt –cert/etc/kubernetes/pki/etcd/healthcheck-client.crt –key/etc/kubernetes/pki/etcd/healthcheck-client.key (2)查看集群的成员 etcdctl member list (3)查看前缀为/registry/pods/的所有KEY对应的是po资源的存储。 etcdctl get –keys-only –prefix /registry/pods/ (4)查看前缀为/registry/configmaps/的所有KEY对应的cm资源的存储。 etcdctl get –keys-only –prefix /registry/configmaps/ (5)查看default名称空间下的某个key的信息查询的数据可能是乱码无需关心生产环境中直接使用kubectl查看即可 etcdctl get /registry/pods/default/oldboyedu-linux82-wordpress-v2-5b74b87dd7-4t5r9 (6)删除指定的KEY此处我删除的是一个名为redis-leader的deploy控制器意味着从etcd数据库删除了数据。[生产环境慎用!] etcdctl del /registry/deployments/default/redis-leader coreDNS概述 coreDNS的作用就是将svc的名称解析为ClusterIP。 早期使用的skyDNS组件需要单独部署在k8s 1.9版本中我们就可以直接使用kubeadm方式安装CoreDNS组件。 从k8s 1.12开始CoreDNS就成为kubernetes默认的DNS服务器但是kubeadm支持coreDNS的时间会更早。 推荐阅读: https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/coredns coreDNS的IP地址 vim /var/lib/kubelet/config.yaml … clusterDNS: - 10.254.0.10 # 会将该DNS的IP地址写入到容器的/etc/resolv.conf文件中哟~ clusterDomain: cluster.local coreDNS的A记录: k8s的A记录格式: service name.namespace name.svc.cluster.local 参考案例: kube-dns.kube-system.svc.cluster.local oldboyedu-mysql.default.svc.cluster.local 温馨提示: (1)如果部署时直接写svc的名称不写名称空间则默认的名称空间为其引用资源的名称空间; (2)kubeadm部署时无需手动配置CoreDNS组件默认在kube-system已创建二进制部署时需要手动安装该组件; 测试案例: 1)基于POD测试 # kubectl run test01 –imagealpine -it –rm – sh # ping mysql-ep-v4.default.svc.cluster.local # ping kube-dns.kube-system.svc.cluster.local 2)使用dig测试 yum -y install bind-utils dig 10.254.0.10 mysql-ep-v4.default.svc.cluster.local short dig 10.254.0.10 kube-dns.kube-system.svc.cluster.local short 今日内容回顾: - Endpoints — ep ***** 一般用于将K8S外部的服务映射为K8S集群内部的服务要求创建和其同名的svc。 当删除svc时会自动删除其对应的ep资源。 - 部署PHP项目案例WordPress为例。 架构拆分 deploy,nfs,svc,coreDNS,… - kube-proxy的调度模式切换为ipvs默认使用iptables. - 修改nodePort的端口范围 - etcd的基础使用了解即可 - coreDNS组件 将svc的名称解析为ClusterIP。 Q1: master组件全部挂掉svc的类型为NodePort请问已经部署的服务能否正常访问为什么请说明原因。 Q2: 当kube-proxy组件挂掉svc的类型为NodePort请问已经部署的服务能够正常访问为什么请说明原因。 今日作业: (1)完成课堂的所有练习; (2)将phpadmin项目部署到K8S集群; 扩展作业: (1)调研isito服务的基础使用;
相关文章
-
中小企业网络营销的发展现状百度seo推广是什么
中小企业网络营销的发展现状百度seo推广是什么
- 技术栈
- 2026年03月21日
-
中小企业网络解决方案如何做好网站搜索引擎优化
中小企业网络解决方案如何做好网站搜索引擎优化
- 技术栈
- 2026年03月21日
-
中小企业是用什么来做网站的开发的简单搜索主页网址
中小企业是用什么来做网站的开发的简单搜索主页网址
- 技术栈
- 2026年03月21日
-
中小企业网站建设济南兴田德润电话前端和做网站
中小企业网站建设济南兴田德润电话前端和做网站
- 技术栈
- 2026年03月21日
-
中小企业网站开发韵茵求一个dw做的网站
中小企业网站开发韵茵求一个dw做的网站
- 技术栈
- 2026年03月21日
-
中小企业网站开发韵茵全球速卖通官网
中小企业网站开发韵茵全球速卖通官网
- 技术栈
- 2026年03月21日
