当前位置: 首页 > 编程日记 > 正文

Kubernetes集群部署(yum部署)

环境准备

Kubernetes-Master:192.168.37.134    #yum install kubernetes-master etcd flannel -y

Kubernetes-node1:192.168.37.135     #yum install kubernetes-node etcd docker flannel *rhsm* -y

Kubernetes-node2:192.168.37.146     #yum install kubernetes-node etcd docker flannel *rhsm* -y

系统版本:Centos7.5

关闭Firewalld防火墙,保证ntp时间正常同步同步

【K8s-master-etcd配置】

[root@Kubernetes-master ~]# egrep -v "#|^$" /etc/etcd/etcd.conf
ETCD_DATA_DIR="/data/etcd1"
ETCD_LISTEN_PEER_URLS="http://192.168.37.134:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.134:2379,http://127.0.0.1:2379"
ETCD_MAX_SNAPSHOTS="5"
ETCD_NAME="etcd1"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.134:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.134:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.37.134:2380,etcd2=http://192.168.37.135:2380,etcd3=http://192.168.37.136:2380"

配置文件详解:

ETCD_DATA_DIR:etcd节点名称

ETCD_LISTEN_PEER_URLS:该节点与其他etcd节点通信时所监听的地址

ETCD_LISTEN_CLIENT_URLS:etcd节点与客户端通信时所监听的地址列表

ETCD_INITIAL_ADVERTISE_PEER_URLS:etcd集群通信所监听节点地址和端口

ETCD_ADVERTISE_CLIENT_URLS:广播本地节点地址告知其他etcd节点,监听本地的网络和端口2379

ETCD_INITIAL_CLUSTER:配置etcd集群内部所有成员地址,同时监听2380端口,方便etcd集群节点同步数据

root@Kubernetes-master ~]# mkdir -p /data/etcd1/

[root@Kubernetes-master ~]# chmod 757 -R /data/etcd1/

【K8s-etcd1配置】

[root@kubernetes-node1 ~]# egrep -v "#|^$" /etc/etcd/etcd.conf 
ETCD_DATA_DIR="/data/etcd2"
ETCD_LISTEN_PEER_URLS="http://192.168.37.135:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.135:2379,http://127.0.0.1:2379"
ETCD_MAX_SNAPSHOTS="5"
ETCD_NAME="etcd2"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.135:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.135:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.37.134:2380,etcd2=http://192.168.37.135:2380,etcd3=http://192.168.37.136:2380"

[root@kubernetes-node1 ~]# mkdir -p /data/etcd2/

[root@kubernetes-node1 ~]#chmod 757 -R /data/etcd2/

【K8s-node2-etcd配置】

[root@kubernetes-node2 ~]# egrep -v "#|^$" /etc/etcd/etcd.conf  
ETCD_DATA_DIR="/data/etcd3"
ETCD_LISTEN_PEER_URLS="http://192.168.37.136:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.136:2379,http://127.0.0.1:2379"
ETCD_MAX_SNAPSHOTS="5"
ETCD_NAME="etcd3"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.136:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.136:2379"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.37.134:2380,etcd2=http://192.168.37.135:2380,etcd3=http://192.168.37.136:2380"

[root@kubernetes-node2 ~]# mkdir /data/etcd3/

[root@kubernetes-node2 ~]# chmod 757 -R /data/etcd3/

至此,ETCD集群已配置完毕,接下来启动并验证etcd集群是否正常~

[root@Kubernetes-master ~]# systemctl start etcd.service     #注意,上述节点都需要启动etcd服务,同时也设置自启
[root@Kubernetes-master ~]# systemctl enable etcd.service

【K8s-master节点API-server/config配置】

[root@Kubernetes-master ~]# egrep -v "#|^$" /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.37.134,http://192.168.37.135:2379,http://192.168.37.136:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
KUBE_API_ARGS=""

 

[root@Kubernetes-master ~]#systemctl start kube-apiserver  
[root@Kubernetes-master ~]# systemctl enable kube-apiserver

[root@Kubernetes-master ~]# egrep -v "#|^$" /etc/kubernetes/config 
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.37.134:8080"

[root@Kubernetes-master kubernetes]# systemctl start kube-controller-manager
[root@Kubernetes-master kubernetes]# systemctl enable kube-controller-manager
[root@Kubernetes-master kubernetes]# systemctl start kube-scheduler
[root@Kubernetes-master kubernetes]# systemctl enable kube-scheduler

【k8s-node1】

kubelet配置文件

[root@kubernetes-node1 ~]# egrep -v "#|^$" /etc/kubernetes/kubelet 
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.37.135"
KUBELET_API_SERVER="--api-servers=http://192.168.37.134:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

 

config主配置文件

[root@kubernetes-node1 ~]# egrep -v "#|^$" /etc/kubernetes/config 
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.37.134:8080"

[root@kubernetes-node1 ~]# systemctl start kubelet
[root@kubernetes-node1 ~]# systemctl enable kubelet
[root@kubernetes-node1 ~]# systemctl start kube-proxy
[root@kubernetes-node1 ~]# systemctl enable kube-proxy

【k8s-node2】

kubelet配置文件

[root@kubernetes-node2 ~]# egrep -v "#|^$" /etc/kubernetes/kubelet 
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.37.136"
KUBELET_API_SERVER="--api-servers=http://192.168.37.134:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

config主配置文件

[root@kubernetes-node2 ~]# egrep -v "^$|#" /etc/kubernetes/config 
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.37.134:8080"

[root@kubernetes-node2 ~]# systemctl start kubelet
[root@kubernetes-node2 ~]# systemctl enable kubelet
[root@kubernetes-node2 ~]# systemctl start kube-proxy
[root@kubernetes-node2 ~]# systemctl enable kube-proxy
【Kubernetes-flanneld网络配置】

[root@Kubernetes-master kubernetes]# egrep -v "#|^$" /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://192.168.37.134:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"

[root@kubernetes-node1 ~]# egrep -v "#|^$" /etc/sysconfig/flanneld 
FLANNEL_ETCD_ENDPOINTS="http://192.168.37.134:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"

[root@kubernetes-node2 ~]# egrep -v "#|^$" /etc/sysconfig/flanneld
 FLANNEL_ETCD_ENDPOINTS="http://192.168.37.134:2379"
 FLANNEL_ETCD_PREFIX="/atomic.io/network"

[root@Kubernetes-master kubernetes]# etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
{"Network":"172.17.0.0/16"}
[root@Kubernetes-master kubernetes]# etcdctl get /atomic.io/network/config
{"Network":"172.17.0.0/16"}

[root@Kubernetes-master kubernetes]# systemctl restart flanneld
[root@Kubernetes-master kubernetes]# systemctl enable flanneld

[root@kubernetes-node1 ~]# systemctl start flanneld
[root@kubernetes-node1 ~]# systemctl enable flanneld

[root@kubernetes-node2 ~]# systemctl start flanneld
[root@kubernetes-node2 ~]# systemctl enable flanneld

Ps:重启flanneld网络,会出现三个节点的IP,在node节点上要保证docker和自己的flanneld网段一致。如果不一致,重启docker服务即可恢复,否则的话,三个网段ping测不通

[root@Kubernetes-master ~]# etcdctl ls /atomic.io/network/subnets
/atomic.io/network/subnets/172.17.2.0-24
/atomic.io/network/subnets/172.17.23.0-24
/atomic.io/network/subnets/172.17.58.0-24

检查Kubernetes-node节点防火墙设置,查看转发规则是否为drop,需开启 iptables -P FORWARD ACCEPT规则

[root@kubernetes-node1 ~]# iptables -L -n   #查看防火墙规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
KUBE-FIREWALL  all  --  0.0.0.0/0            0.0.0.0/0           Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
KUBE-SERVICES  all  --  0.0.0.0/0            0.0.0.0/0            /* kubernetes service portals */
KUBE-FIREWALL  all  --  0.0.0.0/0            0.0.0.0/0           Chain DOCKER (1 references)
target     prot opt source               destination         Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           Chain KUBE-FIREWALL (2 references)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0            /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000Chain KUBE-SERVICES (1 references)
target     prot opt source               destination  

或者开启转发功能

echo "net.ipv4.ip_forward = 1" >>/usr/lib/sysctl.d/50-default.conf

[root@Kubernetes-master ~]# etcdctl ls /atomic.io/network/subnets  #查看网络信息,保证连通性正常~
/atomic.io/network/subnets/172.17.38.0-24
/atomic.io/network/subnets/172.17.89.0-24
/atomic.io/network/subnets/172.17.52.0-24

[root@Kubernetes-master ~]# kubectl get nodes    #在master上查看kubernetes的节点状态
NAME STATUS AGE
192.168.37.135 Ready 5m
192.168.37.136 Ready 5m

[root@Kubernetes-master ~]# etcdctl member list    #检查etcd集群节点状态
328468069ff33f93: name=etcd1 peerURLs=http://192.168.37.134:2380 clientURLs=http://192.168.37.134:2379 isLeader=true
c2f8384c4776d3e7: name=etcd3 peerURLs=http://192.168.37.136:2380 clientURLs=http://192.168.37.136:2379 isLeader=false
d6ef60212aca5419: name=etcd2 peerURLs=http://192.168.37.135:2380 clientURLs=http://192.168.37.135:2379 isLeader=false
[root@Kubernetes-master ~]# kubectl get nodes    #查看k8s集群node节点状态
NAME STATUS AGE
192.168.37.135 Ready 4h
192.168.37.136 Ready 1h

【K8s-Dashboard UI平台部署】

Kubernetes实现对docker容器集群的统一管理和调度,通过web界面能够更好的管理和控制

Ps:这里我们只需要在node1节点导入镜像即可

[root@kubernetes-node1 ~]# docker load < pod-infrastructure.tgz 
[root@kubernetes-node1 ~]# docker tag $(docker images | grep none | awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure [root@kubernetes-node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.access.redhat.com/rhel7/pod-infrastructure latest 99965fb98423 18 months ago 209 MB
[root@kubernetes-node1 ~]# docker load < kubernetes-dashboard-amd64.tgz
[root@kubernetes-node1 ~]# docker tag $(docker images | grep none | awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3
[root@kubernetes-node1 ~]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        18 months ago       209 MB
bestwu/kubernetes-dashboard-amd64                     v1.6.3              9595afede088        21 months ago       139 MB

【Kubernetes-master】

编辑 ymal文件并创建Dashboard pods模块

[root@Kubernetes-master ~]# vim dashboard-controller.yaml

[root@Kubernetes-master ~]# cat dashboard-controller.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"
spec:selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardannotations:scheduler.alpha.kubernetes.io/critical-pod: ''scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'spec:containers:- name: kubernetes-dashboardimage: bestwu/kubernetes-dashboard-amd64:v1.6.3resources:# keep request = limit to keep this container in guaranteed classlimits:cpu: 100mmemory: 50Mirequests:cpu: 100mmemory: 50Miports:- containerPort: 9090args:- --apiserver-host=http://192.168.37.134:8080
        livenessProbe:httpGet:path: /port: 9090initialDelaySeconds: 30timeoutSeconds: 30
View Code

[root@Kubernetes-master ~]# vim dashboard-service.yaml

apiVersion: v1
kind: Service
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"
spec:selector:k8s-app: kubernetes-dashboardports:- port: 80targetPort: 9090
View Code

[root@Kubernetes-master ~]# kubectl apply -f dashboard-controller.yaml

[root@Kubernetes-master ~]# kubectl apply -f dashboard-service.yaml 

Ps:在创建 模块的同时,检查日志是否出现异常信息

[root@Kubernetes-master ~]# tail -f /var/log/messages

可以在node1节点上查看容器已经启动成功~

[root@kubernetes-node1 ~]# docker ps 
CONTAINER ID        IMAGE                                                        COMMAND                  CREATED             STATUS              PORTS        
f118f845f19f        bestwu/kubernetes-dashboard-amd64:v1.6.3                     "/dashboard --inse..."   8 minutes ago       Up 8 minutes                     30dc9e7f_kubernetes-dashboard-1315149111-pfb60_kube-system_19dcb04b-6d6e-11e9-9599-000c291881f6_02fd5b8e
67b7746a6d23        registry.access.redhat.com/rhel7/pod-infrastructure:latest   "/usr/bin/pod"           8 minutes ago       Up 8 minutes                     es-dashboard-1315149111-pfb60_kube-system_19dcb04b-6d6e-11e9-9599-000c291881f6_4e2cb565

通过浏览器可验证输出k8s-master端访问即可

简单部署启动一个nginx容器,并且对外提供访问服务

创建Server外部服务,默认会启动一个随机集群IP,将80端口映射成后端pod容器端口80,通过在局域网访问集群IP+80端口,即可访问后端pod集群应用,若是外部访问则通过node节点IP+随机生成的端口接口访问pod后端应用

浏览器访问node节点的IP地址+随机映射端口即可访问到k8s创建的nginx容器

http://192.168.37.136:31090/

【拓展-本地私有仓库部署】

# docker run -itd -p 5000:5000 -v /data/registry:/var/registry docker.io/registry

# docker tag docker.io/tomcat 192.168.37.135:5000/tomcat

# vim  /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.37.135:5000'
ADD_REGISTRY='--add-registry 192.168.37.135:5000'

#systemctl  restart docker.service

# docker push 192.168.37.135:5000/tomcat

转载于:https://www.cnblogs.com/bixiaoyu/p/10803981.html

相关文章:

完成个人中心—导航标签

个人中心—视图函数带标签页面参数tagapp.route(/usercenter/<user_id>/<tag>)def usercenter(user_id, tag): if tag ‘1: return render_template(usercenter1.html, **context)个人中心—导航标签链接增加tag参数<li role“presentation”><a…

PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

DBA可以使用的工具很多&#xff0c;对于SQL Server来说&#xff0c;有查询分析器、事件探查器、命令行工具等&#xff0c;其中SQL语句是重中之重&#xff0c;但是PowerShell的出现使得DBA又多了一种选择。 测试脚本下载 本系列所有测试脚本均在Windows Server 2008 R2 DataCent…

Vue.js 学习路线

目录 1、Vue环境搭建 2、绑定数据 绑定对象 循环数组渲染数据 3、Vue 及双向数据绑定 Vue事件介绍 以及Vue中的ref获取dom节点 4、Vue事件 定义方法 执行方法 获取数据 改变数据 执行方法传值 以及事件对象 5、 Vue中创建单文件组件 注册组件 以及组件的使用 6、Vue中组…

企业信息化所面临的问题

企业信息化建设企业信息化所面临的问题 wxwinter 摘要 企业信息化所面临的问题以及对解决这问题的探讨目录 1 企业信息化建设走到今天所面临的问题 1 1.1 一、没有意识到信息化与工业化是一个不可分割的整体 1 1.2 二、系统零散,产生了信息孤岛 1 1.3 三…

windows 10 下部署WCF 一些细节

总体上在IIS中部署一个WCF服务和Win7没有什么区别 但是&#xff0c;如果你使用的是.NET 4.5开发的 WCF服务&#xff0c;而windows10 又安装了.net 4.7 那么你需要注意下面问题 转载于:https://www.cnblogs.com/songr/p/10806615.html

30岁前挣够500万

教你30岁前挣够500万&#xff01;&#xff08;不妨看完&#xff0c;心态会改变。&#xff09; 成功源于自信&#xff01;相信自己。下边每个字都是价值不菲&#xff0c;你认真看了吗&#xff1f;一艘没有航行目标的船&#xff0c;任何方向的风都是逆风1、你为什么是穷人&#x…

查看微码的两种方式hmcaix

转载于:https://www.cnblogs.com/jonathanyue/p/9301212.html

根据传入坐标和图片URL地址对图片进行切图操作、将图片转化成Base64位码

目录 1、根据传入坐标和图片URL地址对图片进行切图操作 2、将图片转化成Base64位编码、根据传入坐标 算出切点坐标 在开发过程的学习记录&#xff0c;此两个工具类主要是对图像的处理&#xff08;切图&#xff09;&#xff0c;对文件的想换转化&#xff0c;将文件转化成字节数…

SQL语句 goto

代码 /*********************求1234......................100的和*******************************/declaresumsmallint,ismallintseti1setsum0label: if(i<100) beginsetsumsumisetii1gotolabel endprintsum 都说不要用goto,可我看了一些经典sql 代码,…

zookeeper 和 dubbo 配置

转载于:https://www.cnblogs.com/tian1993/p/10807996.html

学习总结--团队项目

《一》团队项目 小组成员思维活跃&#xff0c;仅仅在一节课的时间里提出了n个颠覆软件开发界的思维的idea&#xff0c;最后在层层pk最后留下了八个惊世骇俗的想法。其中包括了要重振中国游戏界&#xff0c;打破王者农药的垄断地位要重写的贪吃蛇小游戏和2D游戏&#xff1b;还有…

markdown自动生成侧边栏TOC /目录

markdown自动生成侧边栏TOC /目录 模板地址 &#xff1a; https://github.com/huyande/MarkdownTemplate.git

[英文面試]如何寫面試後的感謝信

Dear Mr. X:尊敬的X先生&#xff1a; Thank you very much for the interview yesterday. I learned a great deal about your company, its major projects, and its ambitious plans for future development in Guangzhou. 非常感謝您昨天的面試。我了解到許多有關貴公司的情…

【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

震惊&#xff01;世上最接地气的字符串浅谈(HASHKMP) 笔者过于垃圾&#xff0c;肯定会有些错的地方&#xff0c;欢迎各位巨佬指正&#xff0c;感激不尽&#xff01; 引用&#xff1a;LYD的蓝书&#xff0c;一本通&#xff0c;DFC的讲稿&#xff0c;网上各路巨佬 Luguo id: 章鱼…

SQL Server2008及以上 表分区操作详解

SQL Server 表分区之水平表分区 转自&#xff1a;https://www.cnblogs.com/Brambling/p/6766482.html什么是表分区&#xff1f; 表分区分为水平表分区和垂直表分区&#xff0c;水平表分区就是将一个具有大量数据的表&#xff0c;进行拆分为具有相同表结构的若干个表&#xff1b…

浅谈New关键字

new关键字在我们的程序中可谓是无时不刻在用到&#xff0c;那么new关键字都可以用在哪些地方呢&#xff1f;考虑以下几个问题&#xff1a; 1、new一个class对象和new一个struct或者new一个enum有什么不同&#xff1f; 答&#xff1a;new一个class时&#xff0c;new完成2个内容&…

SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录

1、开始 在Springboot框架中引入AOP <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2、创建注解 因需要在方法层面上进行控制 所以使用注解 import java.…

Linux下屏蔽Ctrl+Alt+Delete

1、Redhat 5.X/CentOS5.X--------------------------------------使用Root账户登陆系统&#xff0c;修改/etc/inittab# Trap CTRL-ALT-DELETEca::ctrlaltdel:/sbin/shutdown -t3 -r now这句前面加“#”注销掉 就可以了&#xff01;--------------------------------------2、Fe…

Python网络爬虫--urllib

本篇随便记录学习崔庆才老师编著的《Python3 网络爬虫开发实战》以及urllib标准库使用 urllib库是Python内置的HTTP请求库&#xff0c;包含四个模块&#xff1a; request&#xff1a;最基本的HTTP请求模块&#xff0c;可以用来模拟发送请求。error&#xff1a;异常处理模块&…

Python基础三--字典,集合,编码,深浅copy,元祖、文件操作

字典 dict数据类型划分&#xff1a;可变数据类型&#xff0c;不可变数据类型不可变数据类型&#xff1a; 元组&#xff0c;bool值&#xff0c;int&#xff0c;str 可哈希可变数据类型&#xff1a; list&#xff0c;dict&#xff0c;set 不可哈希dict key…

springboot +security +mybatis+thymeleaf 实现简单的用户 角色 权限(资源) 管理

1、用户 角色 资源的关系 2、实现思路 3、参考资料 Spring Boot Security Redis 实现简单权限控制 将返回结果变成json 响应改客户端 在第六项 4、实现代码 https://github.com/huyande/springsecurity.git 5、其他问题记录 在使用springboot 2.1.X 版本 &#xff0…

在JS中最常看到切最容易迷惑的语法(转)

发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用语义1&#xff0c;组织复合语句,这是最常见的 Js代码 if( condition ) { //... }else { //... } for() { //... } if( condition ) {//... }else {//... } f…

三、类型设计规范

一、类型的逻辑分组从CLR的角度来看&#xff0c;只有两种类型&#xff1a;引用类型和值类型。但从框架设计来说&#xff0c;可以进行更细致的分类 1、引用类型&#xff0c;包括&#xff1a;类、静态类、集合、数组、异常、属性2、值类型&#xff0c;包括&#xff1a;枚举和结构…

使用mybatis一次性添加多条数据 在oracle 数据库上

1、sql 语句 #sql 语句 insert into STD_XXXX &#xff08;表名&#xff09; (ID,NAME,CLASSNAME ) select STD_XXX_SEQUENCE.Nextval,&#xff08;自增序列名称&#xff09; XXX.* from (select 1,3 from dual unionselect 2,3 from dual)XXX 2、mybatis #多条插入 &…

使用SharpPCap在C#下进行网络抓包

转自http://www.cnblogs.com/billmo/archive/2008/11/09/1329972.html 在做大学最后的毕业设计了,无线局域网络远程安全监控策略那么抓包是这个系统设计的基础以前一直都是知道用winpcap的,现在网上搜了一下,有用C#封装好了的,很好用下面是其中的几个用法这个类库作者的主页:ht…

Spring Security的RBAC数据模型嵌入

1.简介 ​ 基于角色的权限访问控制&#xff08;Role-Based Access Control&#xff09;作为传统访问控制&#xff08;自主访问&#xff0c;强制访问&#xff09;的有前景的代替受到广泛的关注。在RBAC中&#xff0c;权限与角色相关联&#xff0c;用户通过成为适当角色的成员而得…

实用Jquery开发自己的插件

实用Jquery开发自己的插件 jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。 jQuery.fn.extend(object);给jQuery对象添加方法。 fn 是什么东西呢。查看jQuery代码&#xff0c;就不难发现。 jQuery.fn jQuery…

无线网中的一些技术名词和解释

现在大家到处都可以听到在说WLAN&#xff0c;到底 个WLAN是什么意思呢&#xff1f;WLAN&#xff1a;Wireless Local Area Network的缩写&#xff0c;也是无线局域网的意思。AP&#xff1a;Access Point,无线接入器&#xff0c;常常缩写为AP。SSID&#xff1a;也缩写国ESSID&…

说到心里的哲理个性签名 学生时代的恋爱无非就是陪伴二字

学生时代的恋爱无非就是陪伴二字 也许因为得不到所以空想总是美好 . 让一个男人哭了 没错你赢了 但是你玩大了 曾经我们都那样嚣张后来怎么也学会了退让. 爱一个人成为习惯就会失去放手的勇敢. 有时沉默并不是因为词穷而是因为心空. 前任也曾是对的人 别打听我我没故事可说. 你…

切换用户启动程序

#!/bin/bash su - elasticsearch <<EOF /opt/elasticsearch-6.6.2/bin/elasticsearch -d exit EOF转载于:https://www.cnblogs.com/divl/p/10826803.html