IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 乱七八糟小问题 -> 正文阅读

[系统运维]乱七八糟小问题

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
        - name: tomcat
          image: tomcat

监控启动容器
[root@k8s-master-01 ~]# kubectl get pods -o wide -w

查看容器启动的详情
[root@k8s-master-01 ~]# kubectl describe pod test-7566b76cfc-vmtf9

进入容器
kubectl exec -it test-7566b76cfc-vmtf9 -- bash



指定进入容器
kubectl exec -it test-7566b76cfc-vmtf9  -c tomcat-- bash


查看pod的版本号
kubectl explain pod

查看pod后面跟的spec字段
kubectl explain pod.spec

1.master节点的组件?

scheduler
apiversion
controller-manager
集群DNS

2.测试集群的连接

1.ip a  查看flannel的地址  ping一下

2.kubectl run test -it --rm --image=busybox:1.28.3

3.kubectl get pods -n kube-system

4.kubectl get nodes -o wide

3.pod的生命周期?

在这里插入图片描述

4.控制器有哪些?

Deployment:部署无状态的应用,随机调度到各个节点(启动没有先后顺序的,web端)

DaemonSet:在每台节点上只部署一个

StatufluSet:部署有状态的应用

5.什么是service?

用来做负载均衡同时向集群暴露服务,一个service就是一个微服务

6.deployment与pod怎么关联?

通过标签关联。

7.控制器

1、Deployment
部署无状态应用

	创建一个deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  selector:    #有控制器通过标签管理pod的
    matchLabels:
      app: test
  template:    #调用模板
    metadata:
      labels:
        app: test
    spec:     #有pod的模板用来管理容器
      containers:
        - name: nginx
          image: nginx



可以通过以下命令慢慢寻找
kubectl explain [资源类型]

命名规范:
	1、必须以字母开头
	2、只能够包含字母、数字和中划线
	3、字母必须小写

2、DaemonSet
在每一台节点上部署一个Pod,一般用来监控、收集日志。

8.service

k8s集群中智能负载均衡器

1、ClusterIP: 向集群内部暴露服务

2、NodePort:通过宿主主机的NodeIP:NodePort来暴露集群内部服务

3、LoadBalancer : 依赖于弹性IP的向集群外部暴露服务的负载均衡器
4、

9.HeadLess Service

HeadLessService实际上是属于ClusterIP

[root@k8s-master-01 ~]# kubectl describe svc headless-svc 
Name:              headless-svc
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=wordpress
Type:              ClusterIP
IP Families:       <none>
IP:                None
IPs:               None
Port:              https  80/TCP
TargetPort:        80/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

10.Service在创建之前是可以自定义IP的

apiVersion: v1
kind: Service
metadata:
  name: service
spec:
  selector:
    release: stable
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: "TCP"
  clusterIP: 10.100.76.88

11.Service跟Pod之间关系

service ---> endpoints  ---> pod
[root@k8s-master-01 ~]# kubectl get endpoints
NAME           ENDPOINTS                                                  AGE
headless-svc   <none>                                                     16h
kubernetes     192.168.15.31:6443                                         6d20h
service        10.244.1.28:80,10.244.1.30:80,10.244.1.31:80 + 2 more...   8m51s
test-svc       10.244.1.27:80                                             10h
[root@k8s-master-01 ~]# kubectl describe endpoints service 
Name:         service
Namespace:    default
Labels:       <none>
Annotations:  endpoints.kubernetes.io/last-change-trigger-time: 2021-08-25T01:36:59Z
Subsets:
  Addresses:          10.244.1.28,10.244.1.30,10.244.1.31,10.244.2.43,10.244.2.46
  NotReadyAddresses:  <none>
  Ports:
    Name  Port  Protocol
    ----  ----  --------
    http  80    TCP

Events:  <none>
[root@k8s-master-01 ~]# kubectl describe service service 
Name:              service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          release=stable
Type:              ClusterIP
IP Families:       <none>
IP:                10.100.76.88
IPs:               10.100.76.88
Port:              http  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.1.28:80,10.244.1.30:80,10.244.1.31:80 + 2 more...
Session Affinity:  None
Events:            <none>

12.Ingress的类型

nginx ingress  :  性能强
traefik :原生支持k8s
istio : 服务网格,服务流量的治理

13 Ingress Nginx创建wordpress

1、创建HTTPS证书
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=ShangHai/L=ShangHai/O=Ingress/CN=www.test.com

2、部署证书
kubectl -n wordpress create secret tls ingress-tls --cert=tls.crt --key=tls.key

3、创建Ingress
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: ingress-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
    - secretName: ingress-tls  # secret名字
  rules:
    - host: www.test.com
      http:
        paths:
          - path: /
            backend:
              serviceName: wordpress
              servicePort: 80

4、查看ingress暴露的443端口
[root@k8s-m-01 ~]# kubectl get svc -n ingress-nginx 
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.96.25.245   <none>        80:52109/TCP,443:45419/TCP   30m

5、浏览器访问
https://www.test.com:45419/

apiVersion: v1
kind: Namespace
metadata:
  name: mysql
---
kind: Service
apiVersion: v1
metadata:
  name: mysql
  namespace: mysql
spec:
  ports:
    - name: http
      port: 3306
      targetPort: 3306
  selector:
    app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: name-mysql
  namespace: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:5.7.33
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - name: php
          image: alvinos/php:wordpress-v2
        - name: nginx
          image: alvinos/nginx:wordpress-v2
                
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: wordpress
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: ingress-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
    - secretName: ingress-tls
  rules:
    - host: www.test.com
      http:
        paths:
          - path: /
            backend:
              serviceName: wordpress
              servicePort: 80

1、监控docker

docker inspect

2、k8s的组件有哪些

kube-apiserver
kube-controler-manager
调度器
kubelet
kube-proxy
DNS
ETCD
Flannel

3、控制器有哪些,以及特点

Deployment
部署无状态应用

DaemonSet
每个节点上都部署一个

StatufluSet
部署有状态应用

4、service的类型有哪些?

1、ClusterIP
	一般情况下,用来向集群内部暴露服务
	1.1、HeadLess Service(无头Service)
	
2、NodePort
	一般情况下,依赖于宿主主机的IP和端口向集群外部暴露服务

3、LoadBalancer
	依赖于弹性IP向集群外部暴露服务

4、ExtennelName
	将外部的一个服务定义一个集群内部的别名

Service别名

在mysql名称空间内创建一个WordPress service,请问在default名称空间内怎样访问这个Servier下的pod服务?
xxx.xxx.xxx.xxx

wordpress

wordpress.mysql

service名称.命名空间.svc.cluster.local

5、ingress nginx的工作原理

根据ingress配置清单,实时生成Nginx配置,并且使其生效,之后通过nginx反向代理转发流量到pod中。

6、从ingress到pod的流程

ingress ---> endpoints(HeadLess Service) ---> pod

7、控制器、service以及ingress管理pod的方式是什么?

控制器 ---> 通过标签(labels)
Service ---> endPoints
ingress ---> endpoints

1、ingress 设置重定向的方式有哪些,区别是什么?

1、注解 		当前ingress生效
2、configmap  全局生效

2、ingress nginx的原理是什么?

实时将ingress转换成nginx配置,并使其生效。从而使nginx代理pod

3、pod的生命周期是什么?

1、创建pod,并调度到合适的节点上
2、创建pause基础容器,提供共享名称空间
3、串行业务容器容器初始化
4、启动业务容器,启动那一刻会同时运行主容器上定义的Poststart钩子事件
6、持续存活状态监测、就绪状态监测
7、结束时,执行prestop钩子事件
8、终止容器

5、docker网络的四种模式

网桥
none
container
host

6、dockerfile中常用的命令

FROM 
RUN
CMD
ONBUILD [指令]
ADD
COPY
EXPOSE
ARG
存储卷
WORKDIR

7、k8s中的组件及其协同关系

apiserver
controller manager
scheduler
集群DNS
kubelet
kube-proxy
Flannel
数据库:ETCD

协同关系:都是通过apiserver进行调度的。每一个操作都要经过apiserver

8、service的四种类型

ClusterIP  ------分支(Headless  Service)------(Headless  Service)使用场景---当不使用集群内部的负载均衡,使用endpoints就可以。
NodePort
LoadBalancer
EnternelName


service怎么关联pod?
service ------endpoints-----pod

endpoints通过标签关联pod

9、k8s存储卷有哪些

emptyDir
hostPath
Pv/PVC
StrogerClass

configmap
secrets

习题

1、service类型

1、ClusterIP
	1.1、HeadLess Service
2、NodePort
3、LoadBanlaner
4、ExtenerName

2、健康检查

1、存活性检查
2、就绪性检查

3、两种健康检查的针对点

1、存活性检查 : 容器是否正常启动
2、就绪性检查 : 容器是否能够正常提供服务

4、两种健康检查处理错误的方式

1、存活性检查 : 删除容器
2、就绪性检查 :移出负载均衡

5、k8s组件及其之间的协同关系

调度器通过kubelet获取每一个node节点的信息(磁盘。cpu),然后返回给apiserver,存储到etcd中,调度器通过apiserver到etcd中取数据,经过算法分析应该到那个节点之上。

6、将pod调度到master节点上

1、删除污点
	删除master节点上打的污点标签,使用亲和性使pod调度到master(selectNode)

2、容忍污点
	设置pod容忍污点,使用selectNode调度到master

7、docker 网络类型

1、网桥
2、host
3、none
4、container

8、k8s存储卷类型

1、emptyDir
2、hostPath
3、pv/pvc
4、strongClass

5、configMap
6、Secrite

9、简单说明一下emptyDir和hostPath

1、emptyDir : 注意用来作为Pod中的临时目录

2、hostPath : 类似于docker -v参数,将存储卷挂载在本地(pod部署的节点上)

10、部署一个WordPress

1、构建镜像

2、构思架构,编写配置清单

3、部署调试

Jenkins(一切尽在k8s中)

作业

连接:https://gitee.com/3dming/DiscuzL/attach_files

要求:

ingress —> headless service —> pod

1、要有健康检查

2、要求有https

3、要求有存储卷(hostpath)

1、下载discuz安装包,并解压,同步到所有节点上
[root@k8s-m-01 /opt/discuz]# for i in m2 m3;do ssh root@$i "mkdir -pv /opt/discuz" && scp discuz.tar.gz root@$i:/opt/discuz/; ssh root@$i "cd /opt/discuz && tar -xf discuz.tar.gz -C /opt/discuz && chmod -R o+w /opt/discuz/upload"; done

2、构思架构,并且编写配置清单(见下文)

3、部署并调试
	1、创建HTTPS证书
    [root@k8s-m-01 /opt/discuz]#     openssl genrsa -out tls.key 2048
    Generating RSA private key, 2048 bit long modulus
    .+++
    .................................................................................+++
    e is 65537 (0x10001)
    [root@k8s-m-01 /opt/discuz]#     openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=ShangHai/L=ShangHai/O=Ingress/CN=www.discuz.cluster.local.com


    2、部署证书
    [root@k8s-m-01 /opt/discuz]# kubectl create namespace discuz
    namespace/discuz created
    [root@k8s-m-01 /opt/discuz]# kubectl -n discuz create secret tls discuz-secret --cert=tls.crt --key=tls.key
    secret/discuz-secret created


配置清单

#########################################################################################
#  1、部署MySQL集群
#     1、创建命名空间
#     2、创建service提供负载均衡
#     3、使用控制器部署MySQL实例
###
#  2、部署Discuz应用
#     1、创建命名空间
#     2、创建Service提供负载均衡(Headless Service)
#     3、创建服务并挂载代码
#     4、创建Ingress,用于域名转发(https)
###
#  3、服务之间的互连
#     1、Discuz连接MySQL  --->  mysql.mysql.svc.cluster.local
#########################################################################################
apiVersion: v1
kind: Namespace
metadata:
  name: mysql
---
kind: Service
apiVersion: v1
metadata:
  name: mysql-svc
  namespace: mysql
spec:
  ports:
    - port: 3306
      targetPort: 3306
      name: mysql
      protocol: TCP
  selector:
    app: mysql
    deploy: discuz
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
  namespace: mysql
spec:
  selector:
    matchLabels:
      app: mysql
      deploy: discuz
  template:
    metadata:
      labels:
        app: mysql
        deploy: discuz
    spec:
      nodeName: k8s-m-02
      containers:
        - name: mysql
          image: mysql:5.7
          livenessProbe:
            tcpSocket:
              port: 3306
          readinessProbe:
            tcpSocket:
              port: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"
            - name: MYSQL_DATABASE
              value: "discuz"
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-data
      volumes:
        - name: mysql-data
          hostPath:
            path: /opt/discuz/mysql
---
kind: Namespace
apiVersion: v1
metadata:
  name: discuz
---
kind: Service
apiVersion: v1
metadata:
  name: discuz-svc
  namespace: discuz
spec:
  clusterIP: None
  ports:
    - port: 80
      targetPort: 80
      name: http
  selector:
    app: discuz
    deploy: discuz
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: discuz-deployment
  namespace: discuz
spec:
  selector:
    matchLabels:
      app: discuz
      deploy: discuz
  template:
    metadata:
      labels:
        app: discuz
        deploy: discuz
    spec:
      containers:
        - name: php
          image: alvinos/php:wordpress-v2
          livenessProbe:
            tcpSocket:
              port: 9000
          readinessProbe:
            tcpSocket:
              port: 9000
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: discuz-data
        - name: nginx
          image: alvinos/nginx:wordpress-v2
          livenessProbe:
            httpGet:
              port: 80
              path: /
          readinessProbe:
            httpGet:
              port: 80
              path: /
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: discuz-data
      volumes:
        - name: discuz-data
          hostPath:
            path: /opt/discuz/upload
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: discuz-ingress
  namespace: discuz
spec:
  tls:
    - hosts:
        - www.discuz.cluster.local.com
      secretName: discuz-secret
  rules:
    - host: www.discuz.cluster.local.com
      http:
        paths:
          - backend:
              serviceName: discuz-svc
              servicePort: 80






习题

1、k8s存储卷类型有哪些

emptyDir
hostPath
pv/pvc
strogeClass

configMap
secrte

2、存储卷的特点
emptyDir:生成一个空的目录,pod删除随之删除。

 -  1.临时文件
 - 2.容器之间共享

hostPath:借助于宿主机挂载。类似于docker -v

pv/pvc:利用nfs网络存储

pv:相当于一块小的分区
PVC:定义存储卷的大小

3、service的类型有哪些

4、pod的生命周期

6、控制器的类型及特点

7、你认为k8s排错的方法可以有哪些

kubectl describe pod pod名称 查看错误
1、权限错误
2、内存不足
3、网络
 kubectl get pods -n kube-system 看一下集群DNS
 [root@k8s-master-01 discuz]# kubectl get pods -n kube-system 
NAME                                    READY   STATUS    RESTARTS   AGE
coredns-f68b4c98f-527gt                 1/1     Running   8          9d
coredns-f68b4c98f-hmm8j                 1/1     Running   8          9d
etcd-k8s-master-01                      1/1     Running   8          9d
kube-apiserver-k8s-master-01            1/1     Running   9          9d
kube-controller-manager-k8s-master-01   1/1     Running   9          9d
kube-flannel-ds-44r9l                   1/1     Running   9          9d
kube-flannel-ds-h755r                   1/1     Running   9          9d
kube-flannel-ds-ntdz5                   1/1     Running   8          9d
kube-proxy-8k9nt                        1/1     Running   9          9d
kube-proxy-jbm5l                        1/1     Running   8          9d
kube-proxy-xkpxj                        1/1     Running   8          9d
kube-scheduler-k8s-master-01            1/1     Running   9          9d
再看对应的日志
kubectl logs -f -n kube-system kube-apiserver-k8s-master-01 

8、k8s各个组件及其协同关系

9、k8s网络流量入栈到出栈的流程

ingress ---> endprints ---> pod

10、ingress nginx原理

一句话,实时将ingress配置清单的内容转化到nginx配置里面,使其生效。从而使nginx代理转发服务

5、存储卷类型及其作用

emptyDir
hostPath
pv/pvc
strangeClass

configMap
secret

6、说明一下pv/pvc

# pv : 相当于磁盘分区
# pvc: 相当于磁盘请求

7、部署一个discuz的流程

1、先构建镜像
	1、php(mysql  支持php-fpm)
	2、nginx

2、设计网络
	ingress ---> endprints ---> pod

3、编写配置文件
 	mysql.yaml
 	work.yaml

4、测试

8、dockerfile指令

FROM
RUN
ADD
COPY
ENV
EXPOSE
CMD
WORKDIR
ARG
ONBUILD    #docker中的触发器

9、docker网络类型

网桥
none
host
container

使用veth设备对

测试连接数据库

kubectl run test1 -it --rm --image=busybox:1.28.3


nslookup service的名字.命名空间.svc.cluster.local

5、控制器类型

job
cronjob

6、怎样使用动态pv持久化数据库

只要不删除pvc即可。

7、k8s中安全机制是什么?

 集群组件之间安全机制: 证书
集群内部的安全机制:准入控制

8、存储卷类型

# 时区
# 字符集

# 在docker中运行一个docker    hostPath

# 部署业务容器的时候,经常使用pv/pvc + 存储类

# configMap : 挂载配置
# secret : 

9、secret挂载到容器的环境变量中

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:52:22  更:2021-08-31 15:54:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:30:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码