k8s普通账号建立

K8S认证、授权与准入控制(RBAC)详解 前言 RBAC (Role-Based Access Control,基于角色的访问控制)是一种新型、灵活且使用广泛的访问控制机制,它将权限授予“角色”(role)之上,这一点有别于传统访问控制机制中 将权限直接赋予使用者的方式,简单点来说就是将权限绑定到role中,然后用户和role绑定,这样用户就拥有了和role一样的权限。 在任何将资源或服务提供给有限使用者的系统上,认证和授权都是两个必... 阅读详情

本博客将创建一个用户devuser(自定义)只能管理demo空间

1 下载证书生成软件

# 下载证书生成工具
cd /root
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl
chmod +x /usr/local/bin/cfssljson
chmod +x /usr/local/bin/cfssl-certinfo

2 生成集群证书config文件

2.1 创建devuser-csr.json

mkdir /root/devuser
vi devuser-csr.json
{
"CN": "devuser",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "GuangZhou",
"L": "GuangZhou",
"O": "k8s",
"OU": "System"
}
]
}

2.2 生成证书及密钥

cd /etc/kubernetes/pki   #找到集群证书及私钥ca.crt ca.key
cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernetes /root/devuser/devuser-csr.json | cfssljson -bare devuser
#执行上一条命令后,会在/etc/kubernetes/pki生成devuser.csr devuser-key.pem devuser.pem 三个文件

输出内容:

2022/01/03 16:27:01 [INFO] generate received request
2022/01/03 16:27:01 [INFO] received CSR
2022/01/03 16:27:01 [INFO] generating key: rsa-2048
2022/01/03 16:27:01 [INFO] encoded CSR
2022/01/03 16:27:01 [INFO] signed certificate with serial number 183318846060115252175414421649635047300497396132
2022/01/03 16:27:01 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").

2.3 生成证书及密钥

2.3.1 设置集群参数

kubectl config set-cluster kubernetes \
> --certificate-authority=/etc/kubernetes/pki/ca.crt \
> --embed-certs=true \
> --server=https://192.168.3.81:6443 \
> --kubeconfig=devuser.kubeconfig


# 输出:Cluster "kubernetes" set.

2.3.2 设置客户端认证参数

kubectl config set-credentials devuser \
> --client-key=devuser-key.pem \
> --client-certificate=devuser.pem \
> --embed-certs=true \
> --kubeconfig=devuser.kubeconfig

#输出:User "devuser" set.

2.3.3 设置上下文参数

kubectl config set-context kubernetes \
> --cluster=kubernetes \
> --user=devuser \
> --kubeconfig=devuser.kubeconfig

# 输出: Context "kubernetes" created.

2.3.4 设置当前使用配置

kubectl config use-context kubernetes --kubeconfig=devuser.kubeconfig
# 输出:Switched to context "kubernetes".

2.3.5 rbac授权

kubectl create rolebinding devuser-admin-binding --clusterrole=admin --user=devuser --namespace=default

备注:–clusterrole=admin也可以重新创建角色。

2.3.5 查看生成的证书

cat devuser.kubeconfig
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1ERXhPREEyTXpVd05Wb1hEVE15TURFeE5qQTJNelV3TlZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWdqCjh5MUlVWDl5U2ZKRzRtSEswSjc0aEJxQnN0T0hKejVxeXhsTEQ5eUZRN3dXRlFMNUp4cnp5eVRmQWNzN1FYeTYKOFdpQXJMK0hmY3dJRkVseklLYVZRZnRZemxxb1REeE1RRnI5YnN4VUN6ZldXZHhrWlRKaTQ3VDZ5dExFd1RWUwpNVUh2QVlMWnNzUVBhSEN3MTZTTCtGVHR6aHVUNUVVNkJvdWNONEZpbEN3VGlVTnlRNFNQYUxFN2o3dGc0ajdDCmZ1QkZwUXpOWnhZUHFIRTFWYXhsVVFoV2IrT0s4QTVTVmJVcCtablBiaEZTRHUxWHFpd29YK1gzNXZKazAveW8KMmpzenllSW9abFJwVTRKbnZWT0Y3NlJ4L0VZUHJqYlRpTkZJd1JiU3k2Tm1DL0hiNU4zUDZFSGo4UDBEejNUWAptVlBRbFlXQVBrWXZMbjAzaVA4Q0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZNU3Q3ZGU4bHdiZEoxSjQvOElBYktmSXgyVm1NQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFCdGJTUHdvNE5QbjllekQwbE45cytaYVBreHVNMG5NTmJKUVd6aHdZaW9SVXBqcGVCTQpZMVdKTC9ZaHlzN2l4cU5kb0RUeFJxWnYrUHpiaUw0cHUzV0c1WHgwTmJvVE5BQ2w0Tno3dTRGMVpMWHpucmExCnN1aXh6b2s3T25aejFrSGpMUFNLL29wcjZLbER3M3pnRys4dkd5RURKYitiREhjVDVsdW5pQkQySkRzekJYb3MKemtXeXMzaWlMRTFCSnU3MUVPcnhkZDVQVVVPWEJoWXZkYW5FcWpDQVY4ckdWMVN0VTBuUjFOeDltR2taTDhaQgpWZDZhZDNSVjRJQ3lnUDRodDZ0T3FnNnRUMCtLUHArMlJaLzk2a0pYNUxRdUhwSFNucTdvVU1vZml1dFRSeVFYClBqZkZJdGFvWHRiQXNmVGtuaXBZS281MHM2ZDlJQmZFaFN4YwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://192.168.3.81:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: devuser
  name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: devuser
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpRENDQW5DZ0F3SUJBZ0lVZHpXcnhZR0JESVUzd0YzYnhIb1pPenFERHh3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweU1qQTBNRFF4T0RFM01EQmFGdzB5TXpBMApNRFF4T0RFM01EQmFNR1l4Q3pBSkJnTlZCQVlUQWtOT01SSXdFQVlEVlFRSUV3bEhkV0Z1WjFwb2IzVXhFakFRCkJnTlZCQWNUQ1VkMVlXNW5XbWh2ZFRFTU1Bb0dBMVVFQ2hNRGF6aHpNUTh3RFFZRFZRUUxFd1pUZVhOMFpXMHgKRURBT0JnTlZCQU1UQjJSbGRuVnpaWEl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQgpBUURRSkszWGNYT3F3QjE2a1ExbDdQaVNBektNU0pqRjZpMjNKNGNGdXZJejM3L0I3MmNEMFUrOFZCU2ViK2VOClRsOUpWNzhlQkdNc094MmU4elpvYmNUbklpV1hYUHlOT3F0OFpzOWpDUDVMdXEyN05RZHVKbkN2a0t0YzgrZTUKU2tpRVBjQ01vUUI1N2JEUFZqaFd2ck9KY3BoUk5KN3NiWmNzYlFkZ3NtUzA1RERSajNVa3kweVRTd2gvQW1XMwptWGlYSklBZnhmbFQ4VnhIdVJCYTNKUlhEakZ0eGR0aGUxc1lOcGFKYTQ5VnVaU2hyVlQrOGUzOUhGTjFsUC9UCjZPNDlxemhuNjQzSlRuRFVpZnVwUmZualFlTkxJKzJ6cHhreFNFSTJtYnllQyt4T285NUQyQ2doeHVHYUFGbzYKd1oreWphQWpQSUdlanlIVjlKUDlkZDVEQWdNQkFBR2pmekI5TUE0R0ExVWREd0VCL3dRRUF3SUZvREFkQmdOVgpIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCkZnUVVJYXNCbWhOWGJaUThlbWZkUjBxWUcycmtMdEl3SHdZRFZSMGpCQmd3Rm9BVXhLM3QxN3lYQnQwblVuai8Kd2dCc3A4akhaV1l3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxxWitYeUoxREU3Uk95TFBwTmI1VXlkS09uWgpwSTV1UjBsVFRrTkd0bkNMNS8xV0lkMmJzTS9XSEFtamFMS1dWVjZ2RWpNZkMyOG1UdDc1K0NXeXlXT3VFdXhSCll2RFRSblhBbitHMDhoNjNmcjA5alpNcklKS2RqL1NqZ1NhUkpwR3ZqazVyM2o1M1NLVDhEekxvbXliOVBtS1MKU0IvOEdkenA3bEFiWTBlVlE5TUVjcjJiYjJBOStBZk9mU3Qwa1UvTUhITHhJdFpGbWZrWFE4dTRKdWpPZVZ1MgpCbmJEOCtyWFVNbU5IeUtGNjFVRlNiWVhrVDdtTUc2RmY2UHdCaFVZdEY5VWI5Z1Jod2liUzJZcnp4OGlaeWZICmdiM2R1MzZqa3ovWExTdFJEUE1rQzB5dm1WRjRQQXpURXZYanlyQkEzWTBaQ3FaWGVEVnhIY1EwQ3N3PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMENTdDEzRnpxc0FkZXBFTlplejRrZ015akVpWXhlb3R0eWVIQmJyeU05Ky93ZTluCkE5RlB2RlFVbm0vbmpVNWZTVmUvSGdSakxEc2Rudk0yYUczRTV5SWxsMXo4alRxcmZHYlBZd2orUzdxdHV6VUgKYmlad3I1Q3JYUFBudVVwSWhEM0FqS0VBZWUyd3oxWTRWcjZ6aVhLWVVUU2U3RzJYTEcwSFlMSmt0T1F3MFk5MQpKTXRNazBzSWZ3Smx0NWw0bHlTQUg4WDVVL0ZjUjdrUVd0eVVWdzR4YmNYYllYdGJHRGFXaVd1UFZibVVvYTFVCi92SHQvUnhUZFpULzAranVQYXM0Wit1TnlVNXcxSW43cVVYNTQwSGpTeVB0czZjWk1VaENOcG04bmd2c1RxUGUKUTlnb0ljYmhtZ0JhT3NHZnNvMmdJenlCbm84aDFmU1QvWFhlUXdJREFRQUJBb0lCQVFDbW84YitScGw1S2dndgoyYk9sVjd5R2djTFZaMFhRcGpUbGZ1THQ1b2NFbXUxV0lnb1NsMkJFQWZqa0ErbVpTeGFrakhpNVduL2ZxSkNGCmNtaXI0TDRVNGxUQVF6VDdDTzdFVVRkV0xad1NHeW4rU0cxamRha2dGaTNyNUdZd0JWWGJjZWtYYmNzSTB4Q00KWHBZS2RQRWVhTDJqdmdKQ2ZWYmJ2WXA3a3pkblRocVpqOG9NMmJuV0UxdFJzK2RjamdpcnN6S0VITkUrMXJLRApyMjRycGlRM0hpK3Y1bHRwUEVLZ0JtYkFrejdEeURuTkdBWFd5YVcxbGg5cTdoMnZHaWIxdHJFTU9NVjdwUnhvCjJ6TTBiYkRuM0sycGpWbVJEajhxRlJvWTJVZk9JS1lGaTJpNVE1Ymt3NnpRcldqNENnZXg5WXVSaDFYZEVpaTcKckwxeFhUekpBb0dCQU5GYkpZWm5ZSS9wbWJDTlZjd0pNMkFScmxCcEU3cGp4cXNSTkdEblkybWxSVGRsUVMyMwpWUEFXYTNPdVJpWXB0cGk0ei9MNlRxakdMUW9aMTZ2UzFvU214OUEvL05Ddkk4RGRqZ1pPSlpCeVAwRnhMM0NNClhqVDMxWTdhRlFUUHhRSXd4OGtTRFRBeGVMZFFaanFMM00vQXF4Nk5SZnd5ZjAzNXNjVEhaWlNQQW9HQkFQNkUKWEhWZXNOeEtPNWNRZGNkY20rZnRWVFpxZmtsd2lSRC9QUnJ1aHQ5c2ZGUFNpVGdpZXJXaXljQm9BQVFXVWNENApDT0FRb2c3VTBVRi9kMlgyaGpBSldsL2FLN3AvNkRseFNqQnNmeUh1V3d4WFE2QjRtR29YQXFDaXdYV1F4T3V5ClR1ZlNHNXZwclVGbDRBcm1xVjN5Qm0yZ0NlbmdGZ1pqak9tRXhQME5Bb0dCQUpEamI3ancycGMrcUNyVDVjanIKcFM2YmpmUUFoTEsrVXNRWmlCSjRrUWlRWkxMTjFLbjY4MEdsZ24vdzRJT1E0dG9YTFhPUFg5aldMbDJMUFFPaApTdTFMTDRZa2dxYzZUcGd2dlJjSUJsOU5jaEdzYjVTSTBMbi91MEMrRlVYYk5SRXJDVmxTc09YbGx4SG5CcGtHCktxOXRQQUJNN1Y1NDVEbm0wT3pLd3JacEFvR0FIazJ1SUg5Y3VXM1JPSVJLTWFseUdxUWtZQzAveWdpdkdTbjYKb1lsQzM3a3YrRjc1M1lnbGFoanV3b3pmYTUwb3NMd1hlbTRnalhtRFRMUWJpRFZZOXNFMlZIRktnWk1YR0RmSAo2SW9TZlB5L05ISHphRmpUZE5ZMmh0KzUvd0Iwb2NlQ0k1SGRuYXV0NkRweitYaExOQmRMOHFONmFyRTJqaDR1Ck9lT0gvTVVDZ1lBQnZ5dHd6L3UyeE9HS2MvdW9CakFyVk1GU3BKdUJiNlllY1k5UjZYK1FRcmc4ZU55Z2RaaWMKeUIzaEtxL1poRWFBNlF1cG5qUkpxTUw3cWZ1WFhIZGpUcHZJWGxLalRVTGZpbzhHZnYrd1R1a3pFdUZCVDFqSwo5NzAwd0JXY1kzTy9SUzFBWFVMYjRCVjNXNVVJSTFLTDdkbG9kY01iNTF4L0J3aFk1ZGM1cEE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

3 客户端登录

安装客户端:

yum install -y kubectl-1.18.6

客户端创建config目录

mkdir /root/.kube

从master拷贝/root/devuser/config过去客户端

scp devuser.kubeconfig root@192.168.3.84:/root/.kube/config

查看集群的命名空间default情况:

[root@k8s21-worker02 .kube]# kubectl get pod -n default
NAME                           READY   STATUS             RESTARTS   AGE
busybox0403-5b4f44676f-jcbhp   0/1     CrashLoopBackOff   422        37h
busybox0403-648c58cd59-5wqp6   0/1     CrashLoopBackOff   443        37h
legacy-app                     2/2     Running            3          29h
nginx0329-6f68f5ffd4-vdpxn     1/1     Running            1          6d4h
nginx0403-7d458bd795-d49zb     1/1     Running            1          38h
nginx0403-7d458bd795-hl94g     1/1     Running            0          38h
nginx0403-7d458bd795-p5fr6     1/1     Running            0          38h
nginx0403-7d458bd795-qbf8j     1/1     Running            0          38h
nginx0403-7d458bd795-qg56z     1/1     Running            0          38h

查看集群的命名空间kube-system情况:

# kubectl get pod -n kube-system
Error from server (Forbidden): pods is forbidden: User "devuser" cannot list resource "pods" in API group "" in the namespace "kube-system"

可见无权限。

4 多命令空间授权

k8s服务端增加以下:

kubectl create rolebinding devuser-admin-binding2 --clusterrole=admin --user=devuser --namespace=demo2
华为云跨账号搭建k8s集群解决方法 随着大数据,集群,分布式的普及,很多公司系统都在集群上运行,但刚进公司的小白或者正准备进入职场的普通学生党没有任何经验,改如何了解集群呢?方法有很多种:借朋友电脑,多开几个虚拟机,云平台上多买几台服务器,按需购买服务器等等。 搭建集群的利弊分析 借朋友电脑,或自己多开几个虚拟机,集群搭建难度虽然不高,但不是分分钟就能搭建成功的,所以长时间霸占着朋友的电脑,毕竟现在人人都有隐私;而多开虚拟机则需要保证自己电脑的性能要足够的高,否则非常的卡;同时这两种方案都是在本地搭建的,一旦离开办公场地就没有办法继续了. 阅读详情

相关推荐

Kubernetes——服务账号与权限

kubernetes

qq_41358740的博客 582

Kubernetes详解(五十一)——Kubernetes用户创建

今天继续给大家介绍Linux运维相关知识,本文主要内容是Kubernetes权限配置。 一、Kubernetes证书生成 二、Kubernetes用户创建

永远是少年 3104

给普通用户自定义创建 Kubernetes 权限

需求: 由于开发同事需要在 K8s 集群内查看 Pod 的应用日志,为了防止开发同事在集群内误操作,我们这里通过配置 UserAccount 的方式将开发同事的账号权限降低;以此来提升集群的安全性。

愿许浪尽天涯的博客 2425

如何快速在 Kubernetes 集群中新建用户

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !Kubernetes中的用户K8S中有两种用户(User)——服务账号(ServiceAccount)和普通意义上的用户(User) ServiceAccount是由K8S管理的,而User通常是在外部管理,K8S不存储用户列表——也就是说,添加/编辑/删除用户都是在外部进行,无需与K8S API交互,虽然K8S并不...

easylife206的专栏 916

集群外部署 Prometheus 监控 k8s

1、一台普通的机器 192.168.18.92、k8s 集群一台master节点 192.168.18.7。

Jerry00713的博客 5624

青藏高原冻土数据实战:如何用QGIS分析1961-2020年冻土退化趋势(附完整操作步骤)

本文详细介绍了如何使用QGIS分析1961-2020年青藏高原冻土退化趋势,包括数据准备、预处理、时空分析和模型验证等全流程操作。通过TTOP模型和Stefan方程,揭示了冻土退化的空间差异和海拔依赖性,为环境研究提供科学依据。

weixin_29276847的博客 127

如何创建一个用户、授权操作k8s集群的过程?

本篇带给大家如何创建一个用户、授权操作k8s集群的过程。希望对你有所帮助! 背景 172.16.99.128是的我k8s集群的master节点,此处是从这里获取集群的证书。 创建访问architechure命名空间的用户 1.给用户devops 创建一个私钥 opensslgenrsa-outdevops.key2048 2.使用我们刚刚创建的私钥创建一个证书签名请求文件:devops.csr,要注意需要确保在-subj参数中指定用户名和组(CN表示用户名,O表示组) opens...

Free雅轩的博客 1284

RT-Thread代码启动过程——以及 $Sub$ $main 与 $Super$ $main

我们找到系统复位的地方,可以往下单步跟踪。 ①从系统初始化开始执行,将函数地址赋给R0寄存器,跳转到R0地址执行并返回此处(BLX是带链接的跳转,即带返回的跳转)。 ②将main函数地址给R0,将函数地址赋给R0,跳转到R0地址执行,不返回(BX是跳转,不返回)。 ③跳转到了$Sub$$main。 【注:在 __CC_ARM 编译器环境下,使用了$Sub$$ 与$Super$ $ 的...

yang1111111112的博客 1万+

创建k8s普通用户

kind: ClusterRoleBinding #ClusterRoleBinding为集群级别的权限绑定。name: cluster-k8s_viewer-res-reader #增加可读性,命名规则:<用户>-<权限>#设置新集群(kubernetes),指明apiserver地址、k8s证书路径和隐藏证书,并保存在。#创建角色对象,指定权限。#使用k8s的ca.crt和ca.key进行签名生成证书。#将用户的验证信息添加进kubectl的配置。

Dang_Ni的博客 453

4相5线步进电机驱动原理

步进电机驱动

while(1) 3万+

计算机网络实验(华为eNSP模拟器)——第十章 Eth-Trunk(链路聚合)

目录一、Eth-Trunk的定义二、Eth-Trunk的工作模式(一)LACP模式1、定义2、命令(二)手工负载分担模式1、定义2、命令三、结语 一、Eth-Trunk的定义 Eth-Trunk是指设备的链路聚合,即将该设备的多个接口捆绑成一个接口,从而达到了增加带宽和提高可靠性的目的。我们要注意它是将多条物理链路,在逻辑上合并成一条,而不是串在一起。例我们将LSW1交换机S5700的三个端口(即GE0/0/1 、GE0/0/2、GE0/0/3)定义为一个Eth-Trunk接口与LSW2交换机相连,如下:

小宇y的博客 8417

K8s普通账号创建与权限控制指南-佚名运维-k8s

摘要:本文详细介绍了在Kubernetes中创建单独用户并限制其只能操作特定命名空间的多种实现方式。主要包括: 基于服务账户(ServiceAccount)和RBAC的授权方式,包括创建服务账户、定义Role和RoleBinding、生成Token并配置kubeconfig。 X.509客户端证书的认证方式,包括生成私钥和证书请求、签发证书、配置kubeconfig和RoleBinding。 OpenID Connect (OIDC)的集成方式,包括配置APIServer、创建RoleBinding和获取k

2301_81841155的博客 1279

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9494

Kubernetes、k8s从入门到实战

Kubernetes

weixin_42074672的博客 3303

别再乱改宏定义了!STM32F103程序移植保姆级教程(从C8T6到ZET6实战)

本文详细解析了STM32F103程序从C8T6移植到ZET6的实战步骤,重点介绍了硬件差异、开发环境配置、时钟陷阱及外设处理等关键点。通过修改宏定义(如STM32F10X_HD)、调整启动文件和时钟配置,确保移植顺利进行。适合嵌入式开发者参考,避免常见移植问题。

weixin_42567497的博客 216

如何卸载Gazebo与重装

gazebo是一款关于车辆和无人机的仿真软件,本文大致介绍它是何物,以及他的安装和卸载方法,对于ROS开发者,本文有一定参考意义。

gongdiwudu的专栏 1万+

Kubernetes(k8s)权限管理RBAC详解

文章目录一、简介二、K8s三种认证方式三、用户分类四、K8s权限控制(以ServiceAccount展开讲解)1)介绍2)Role和ClusterRole3)RoleBinding和ClusterRoleBinding1、Role角色绑定ServiceAccount2、ClusterRole角色绑定ServiceAccount五、实战1)User1、创建K8S 用户2、对用户授权2)Group1、创建K8S 用户和用户组2、对组授权3)ServiceAccount4)为ServiceAccount生成Tok

匠人精神,持之以恒! 9098

【数据集】中国区域地面气象要素驱动数据集(CMFD)2.0

中国区域地面气象要素驱动数据集(CMFD)2.0

WW、forever的博客 2985

k8s创建服务账号——Service Account

http://docs.kubernetes.org.cn/84.html Service Account(服务账号):是指由Kubernetes API 管理的账号,用于为Pod 之中的服务进程在访问Kubernetes API时提供身份标识( identity ) 。Service Account通常要绑定于特定的命名空间,它们由 API Server 创建,或者通过 API 调用于动创建 ,附带着一组存储为Secret的用于访问API Server的凭据。 User Accounts 与 Serv

码农崛起 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

kubernetes用户权限管理详解——普通用户[kubeconfig]

通过多种方式签发证书包括 k8s csr, openssl,cfssl的方式进行签发,由于创建k8s普通用户,从而实现管理k8s权限管理

weixin_42236288的博客 1930

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

为什么选择kubernetes-the-hard-way-aws?深入理解手动部署K8s的核心优势

kubernetes-the-hard-way-aws是Kelsey Hightower经典教程的AWS版本,它通过手动部署Kubernetes集群的方式,帮助开发者深入理解K8s核心组件的工作原理和交互机制。对于希望从根本上掌握Kubernetes架构的新手和普通用户来说,这种"艰难"的学习路径反而能带来最扎实的技术积累。 ## 手动部署的独特价值:从黑盒到透明 市面上有许多Kubernet

gitblog_00673的博客 830

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Kubernetes】菜鸟学K8S之初步入门

菜鸟学K8S之初步入门Kubernetes初步入门什么是Kubernetes为什么用KubernetesKubernetes重要概念Cluster(集群)Master(主控)1. Kubernetes API Server(Kubernetes API服务器)2. Kubernetes Controller Manager(Kubernetes控制器管理器)3. Kubernetes Scheduler(Kubernetes调度器)4. EtcdNode(节点)1. Kubelet2. Kube-proxy

小哲的博客 1万+

Kubernetes中如何利用RBAC授权并使用不同的普通用户操作k8s集群中实现k8s中权限划分?k8s如何设置某个普通用户对某个空间下的资源有相应的权限? 一文搞懂

轻松搞定k8s中使用普通用户管理k8s集群中的资源

soso678的博客 614

kubernetes的认证和授权(RBAC)

当然,以上只是k8s中最基础的认证与授权功能,更高阶的也都在此基础之上,如果大家有兴趣请自行探索。在码字的过程中难免会出错,欢迎大家批评指正。我会长期分享K8s、CloudNative方面的知识。

拥抱开源 热爱分享 1510

linux添加普通用户后无法使用K8S的kubectl命令怎么办/Linux普通用户管理K8S/Linux下普通用户无法使用K8S命令

suduers文件位于路径/etc/sudoers。

qq_759035366的博客 815

配置普通linux平台用户访问k8s集群

配置普通linux用户访问k8s集群

xhredeem的博客 1537
上一篇: kubeadm部署高可用kubernetes
下一篇: nginx安装及配置(1个小时快速部署)
cloud_engineer
博客等级 码龄5年 9390粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值