开发环境搭建_v1-0
- 格式:ppt
- 大小:477.50 KB
- 文档页数:18


在KeiluVision4MDK下配置开发STM32F103Z完整教程环境搭建:1、安装 Keil uVision4 MDK略2、安装 J-Link安装 Setup_JLinkARM_V4501.exe 驱动时,会弹出【SEGGER J-Link DLL Updater V4.501 】对话框,不要选择 Keil 直接点击OK即可,因为Keil对⽀持M3内核SW接⼝采⽤了JL2CM3.dll 这个⽂件,该⽂件的版本号是和该⽬录下Jlink驱动版本号配套的,不要擅⾃改变他们,否则不能使⽤。
建⽴⼯程:1、在桌⾯上建⽴⼀个⽂件夹【MyStm32】⽂件夹2、在【MyStm32】⽂件夹下建⽴【USER】、【FWlib】、【CMSIS】、【Output】、【Listing】⽂件夹。
【USER】:存放⽤户⾃定义的应⽤程序【FWlib】:存放库⽂件【CMSIS】:存放M3系列单⽚机通⽤的⽂件【Output】:存放编译器编译后输出的⽂件【Listing】:编译器编译过程中产⽣的⽂件3、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 的【inc】跟【src】这两个⽂件夹拷贝到【FWlib】。
【inc】、【src】⽚上外设驱动的源⽂件和头⽂件。
4、\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c 拷贝到【USER】stm32f10x_conf.h:配置⽂件stm32f10x_it.h、stm32f10x_it.c:中断函数⽂件。
system_stm32f10x.c:ARM公司提供的符合CMSIS标准的库⽂件5、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup的【arm】⽂件夹的拷贝到 MyStm32\CMSIS\startup。
VMware vSphere开发配置VMware vSphere Web Services SDK 的开发环境作者:飞哥(/imlidapeng)版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明。
一、准备使用VMware vSphere Web Services SDK开发Java Web-service客户端应用,需要使用到java SDK和Java Web Service开发工具,如下:1.所需软件VMware vSphere Web Services SDK/support/developer/vc-sdk/J2SE 1.5.x或者J2SE 1.4.x。
VMware推荐使用J2SE 1.5.0_08或以后。
/javase/downloads/previous.jspApache Axis 1.4/axis/java/releases.html2.SDK内容介绍a.目录介绍\doc:vSphere API参考手册、java例子的javadoc。
\samples\Axis:使用Axix实现的java版例子代码。
\samples\DotNet:使用C#实现的例子代码\sms:Storage Management Server SDK。
在vCenter Server 4.0中有一个名叫Storage Management Service (SMS)的服务,通过此服务提供之API可获得vCenter 所有存储的相关信息。
\wsdl:SDK API相关webservice的描述文件。
b.java版中batch文件及shell脚本说明build.bat/build.sh:检查环境变量(AXISHOME、JAVAHOME、VMKEYSTORE、WEBMHOME);设置本地classpath(通过调用lcp.bat);清除已经存在的java相关文件(通过调用clean.bat),如class文件或jar文件。
Mrp开发教程如果自己想开发mrp软件,那么首先请确保你有一台电脑。
好了。
第一步:搭建mrp开发环境(只有搭建开发环境,你才能开发软件)搭建开发环境需要以下工具软件。
需要下载:1.Visual Studio 2005这个是微软的可视化集成开发工具。
注意:win7系统可能不兼容。
2.Arm Developer Suite v1.2ARM单片机(mrp手机是arm的芯)的程序开发软件。
3.老版本斯凯SDK这个不用说了,“SDK”为“软件开发包”,这个是斯凯开发工具。
4.斯凯SDK授权破解包斯凯虽说是开源,但他却不希望有人开发了软件而不在他的网站上发布,所以斯凯对他的SDK 设置了授权,不过,我们有破解包。
上面有破解程序,有些杀毒软件可能会认为破解程序是非法程序,所以在下载时请关闭杀毒软件。
【附件下载】请点击:Mrp开发工具集合/space/file/mrp520/-4e0a-4f20-5206-4eab/Mrp-5f00-53d1-5de5-5177-96c6-5408.zip/.page第二步:安装附件:(顺序:先装第一个,后装第二个……)1.Visual Studio 2005用虚拟光驱程序(没有?百度!)加载ISO镜像,然后启动安装程序。
这个不要求完全安装,只要安装Visual C++部分以及公共组件。
这个过程可能最多需要一个小时。
2.Arm Developer Suite v1.2解压Zip文件,运行setup.exe,这个安装时选择typical(是默认的)就行了。
注意:下载的zip包里crack文件夹里有license.dat,用他来通过ADS1.2的“注册”。
3.斯凯SDK这个直接安装(注意:安装路径不要有中文)……以上三个全部安装后才可以使用破解包,破解包里用使用说明。
……破解完成之后,最好重启一下电脑。
第三步:工具文档去(冒泡开放平台)下载“工具文档”,也就是正式的mrp开发教程。
1. 初始化安装1. 配置hosts[root@k8s0x ~]# vi /etc/hosts192.168.1.111 k8s01192.168.1.112 k8s02192.168.1.113 k8s032. 关闭防火墙[root@k8s0x ~]# systemctl stop firewalld[root@k8s0x ~]# systemctl disable firewalld3. 关闭SELINUX[root@k8s0x ~]# setenforce 0[root@k8s0x ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config4. 禁用swap[root@k8s0x ~]# swapoff -a[root@k8s0x ~]# sysctl -w vm.swappiness=0[root@k8s0x ~]# sed -i /swap/s/^/#/g /etc/fstab5. 配置系统参数[root@k8s0x ~]# cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF[root@k8s0x ~]# sysctl -p /etc/sysctl.d/k8s.conf6. 安装Docker# 配置docker安装源[root@k8s0x ~]# cat > /etc/yum.repos.d/docker-ce.repo << EOF[docker-ce]name=Kubernetesbaseurl=https:///docker-ce/linux/centos/7/x86_64/stable/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https:///docker-ce/linux/centos/gpgEOF# 安装并启动docker[root@k8s0x ~]# yum install -y docker-ce[root@k8s0x ~]# systemctl start docker[root@k8s0x ~]# systemctl enable docker7. 配置免密登陆[root@k8s01 ~]# ssh-keygen[root@k8s01 ~]# ssh-copy-id k8s01[root@k8s01 ~]# ssh-copy-id k8s02[root@k8s01 ~]# ssh-copy-id k8s038. 获取Kubernetes安装包# 下载安装包并拷贝到其它节点[root@k8s01 ~]#wget /Kubernetes/kubernetes-v1.11.1.tgz[root@k8s01 ~]# scp kubernetes-v1.11.1.tgz k8s02:[root@k8s01 ~]# scp kubernetes-v1.11.1.tgz k8s03:[root@k8s01 ~]# for host in k8s01 k8s02 k8s03do# 配置hyperkubessh $host "tar xvf kubernetes-v1.11.1.tgz -C /tmp;cp /tmp/hyperkube /usr/bin;cp /tmp/etcdctl /usr/bin;ln -sf /usr/bin/hyperkube /usr/bin/kubelet;ln -sf/usr/bin/hyperkube /usr/bin/kubectl"# 配置kubernetes镜像ssh $host "docker load < /tmp/k8s-img.tgz"# 配置kubernetes CNIssh $host "mkdir -p /opt/cni/bin;tar xvf /tmp/cni-plugins-v0.7.0.tgz -C/opt/cni/bin/"done# 配置CFSSL(只需在k8s01节点执行)[root@k8s01 ~]# tar xvf /tmp/cfssl-v1.2.tgz -C /usr/bin9. 环境清理脚本(仅用于重装)[root@k8s01 ~]# for host in k8s01 k8s02 k8s03dossh $host systemctl stop kubeletssh $host systemctl stop dockerssh $host rm -rf /usr/bin/hyperkubessh $host rm -rf /usr/bin/kubectlssh $host rm -rf /usr/bin/kubeletssh $host rm -rf /usr/local/bin/*ssh $host rm -rf /etc/etcdssh $host rm -rf /etc/kubernetesssh $host rm -rf /var/lib/docker/*ssh $host rm -rf /var/lib/etcd/*ssh $host rm -rf /var/lib/kubelet/pki/*ssh $host rm -rf /usr/lib/systemd/system/kubelet.servicessh $host rm -rf /etc/systemd/system/kubelet.service.d/10-kubelet.conf ssh $host systemctl daemon-reloadssh $host systemctl start dockerdone2. 配置Haproxy1. 创建haproxy配置文件[root@k8s01 ~]# cat << EOF > /tmp/haproxy.cfggloballog 127.0.0.1 local0log 127.0.0.1 local1 noticetune.ssl.default-dh-param 2048defaultslog globalmode httpoption dontlognulltimeout connect 5000mstimeout client 1800000mstimeout server 1800000mslisten statsbind :9090mode httpbalancestats uri /haproxy_statsstats auth admin:admin123stats admin if TRUEfrontend api-httpsmode tcpbind :6443default_backend api-backendbackend api-backendmode tcpserver k8s01 192.168.1.111:5443 checkserver k8s02 192.168.1.112:5443 checkserver k8s03 192.168.1.113:5443 checkEOF2. 安装haproxy服务[root@k8s01 ~]# for host in k8s01 k8s02 k8s03dossh $host yum install -y haproxydone3. 分发配置文件并启动服务[root@k8s01 ~]# for host in k8s01 k8s02 k8s03doscp /tmp/haproxy.cfg ${host}:/etc/haproxy/haproxy.cfgssh $host systemctl restart haproxyssh $host systemctl enable haproxydone3. 配置etcd1. 创建证书# 证书配置[root@k8s01 ~]# mkdir /tmp/etcd && cd /tmp/etcd[root@k8s01 etcd]# cat << EOF > ca-config.json{"signing":{"default":{"expiry":"87600h"},"profiles":{"kubernetes":{"usages":["signing","key encipherment","server auth","client auth"],"expiry":"87600h"}}}}EOF[root@k8s01 etcd]# cat << EOF > etcd-ca-csr.json{"CN":"etcd","key":{"algo":"rsa","size":2048},"names":[{"C":"CN","ST":"Shang hai","L":"Shanghai","O":"etcd","OU":"Etcd Security"}]}EOF[root@k8s01 etcd]# cat << EOF > etcd-csr.json{"CN":"etcd","key":{"algo":"rsa","size":2048},"names":[{"C":"CN","ST":"Shang hai","L":"Shanghai","O":"etcd","OU":"Etcd Security"}]}EOF# 创建证书[root@k8s01 etcd]# cfssl gencert -initca etcd-ca-csr.json | cfssljson -bare ca[root@k8s01 etcd]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json-hostname=127.0.0.1,192.168.1.111,192.168.1.112,192.168.1.113-profile=kubernetes etcd-csr.json | cfssljson -bare etcd2. 创建StaticPod[root@k8s01 ~]# grep k8s /etc/hosts|while read host_ip host_namedoETCD_NAME=$host_nameETCD_INITIAL_ADVERTISE_PEER_URLS="https://${host_ip}:2380"ETCD_LISTEN_PEER_URLS="https://${host_ip}:2380"ETCD_LISTEN_CLIENT_URLS="https://${host_ip}:2379,http://127.0.0.1:2379" ETCD_ADVERTISE_CLIENT_URLS="https://${host_ip}:2379"ETCD_INITIAL_CLUSTER="k8s01=https://192.168.1.111:2380,k8s02=https://192.168 .1.112:2380,k8s03=https://192.168.1.113:2380"ETCD_ENDPOINTS="https://${host_ip}:2379"cat << EOF > /tmp/etcd/etcd-${host_name}.yamlapiVersion: v1kind: Podmetadata:annotations:scheduler.alpha.kubernetes.io/critical-pod: ""creationTimestamp: nulllabels:component: etcdtier: control-planename: etcdnamespace: kube-systemspec:containers:- command:- etcd- --name=$ETCD_NAME- --data-dir=/var/lib/etcd- --initial-cluster-state=new- --initial-cluster-token=etcd-cluster-0- --initial-advertise-peer-urls=$ETCD_INITIAL_ADVERTISE_PEER_URLS- --listen-peer-urls=$ETCD_LISTEN_PEER_URLS- --listen-client-urls=$ETCD_LISTEN_CLIENT_URLS- --advertise-client-urls=$ETCD_ADVERTISE_CLIENT_URLS- --initial-cluster=$ETCD_INITIAL_CLUSTER- --client-cert-auth=true- --cert-file=/etc/kubernetes/pki/etcd/etcd.pem- --key-file=/etc/kubernetes/pki/etcd/etcd-key.pem- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.pem- --peer-client-cert-auth=true- --peer-cert-file=/etc/kubernetes/pki/etcd/etcd.pem- --peer-key-file=/etc/kubernetes/pki/etcd/etcd-key.pem - --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.pem image: k8s.gcr.io/etcd:3.2.18imagePullPolicy: IfNotPresentlivenessProbe:exec:command:- /bin/sh- -ec- ETCDCTL_API=3 etcdctl --endpoints=$ETCD_ENDPOINTS --cacert=/etc/kubernetes/pki/etcd/ca.pem--cert=/etc/kubernetes/pki/etcd/etcd.pem--key=/etc/kubernetes/pki/etcd/etcd-key.pemget foofailureThreshold: 8initialDelaySeconds: 15timeoutSeconds: 15name: etcdresources: {}volumeMounts:- mountPath: /var/lib/etcdname: etcd-data- mountPath: /etc/kubernetes/pkiname: etcd-certshostNetwork: truepriorityClassName: system-cluster-criticalvolumes:- hostPath:path: /var/lib/etcdtype: DirectoryOrCreatename: etcd-data- hostPath:path: /etc/kubernetes/pkitype: DirectoryOrCreatename: etcd-certsstatus: {}EOFdone3. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03dossh $host mkdir -p /etc/kubernetes/pki/etcd /etc/kubernetes/manifests/scp /tmp/etcd/{ca.pem,etcd.pem,etcd-key.pem} ${host}:/etc/kubernetes/pki/etcd scp /tmp/etcd/etcd-${host}.yaml ${host}:/etc/kubernetes/manifests/etcd.yaml done4. 配置kube-apiserver1. 创建证书# 证书配置[root@k8s01 ~]# mkdir /tmp/kubernetes && cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > ca-config.json{"signing":{"default":{"expiry":"87600h"},"profiles":{"kubernetes":{"usages":["signing","key encipherment","server auth","client auth"],"expiry":"87600h"}}}}EOF[root@k8s01 kubernetes]# cat << EOF > ca-csr.json {"CN":"kubernetes","key":{"algo":"rsa","size":2048},"names":[{"C":"CN","ST": "Shanghai","L":"Shanghai","O":"Kubernetes","OU":"Kubernetes-manual"}]}EOF[root@k8s01 kubernetes]# cat << EOF > apiserver-csr.json{"CN":"kube-apiserver","key":{"algo":"rsa","size":2048},"names":[{"C":"CN"," ST":"Shanghai","L":"Shanghai","O":"Kubernetes","OU":"Kubernetes-manual"}]} EOF[root@k8s01 kubernetes]# cat << EOF > front-proxy-ca-csr.json {"CN":"kubernetes","key":{"algo":"rsa","size":2048}}EOF[root@k8s01 kubernetes]# cat << EOF > front-proxy-client-csr.json {"CN":"front-proxy-client","key":{"algo":"rsa","size":2048}}EOF# 创建证书[root@k8s01 pki]# openssl genrsa -out sa.key 2048[root@k8s01 pki]# openssl rsa -in sa.key -pubout -out sa.pub[root@k8s01 pki]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca [root@k8s01 pki]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json-hostname=10.96.0.1,192.168.1.111,192.168.1.112,192.168.1.113,127.0.0.1,kube rnetes.default -profile=kubernetes apiserver-csr.json | cfssljson -bare apiserver[root@k8s01 pki]# cfssl gencert -initca front-proxy-ca-csr.json | cfssljson -bare front-proxy-ca[root@k8s01 pki]# cfssl gencert -ca=front-proxy-ca.pem-ca-key=front-proxy-ca-key.pem -config=ca-config.json -profile=kubernetes front-proxy-client-csr.json | cfssljson -bare front-proxy-client2. 创建StaticPod[root@k8s01 ~]# grep k8s /etc/hosts|while read host_ip host_namedoETCD_SERVERS="https://192.168.1.111:2379,https://192.168.1.112:2379,https:// 192.168.1.113:2379"cat << EOF > /tmp/kubernetes/kube-apiserver-${host_name}.yamlapiVersion: v1kind: Podmetadata:annotations:scheduler.alpha.kubernetes.io/critical-pod: ""creationTimestamp: nulllabels:component: kube-apiservertier: control-planename: kube-apiservernamespace: kube-systemspec:containers:- command:- kube-apiserver- --advertise-address=$host_ip- --allow-privileged=true- --authorization-mode=Node,RBAC- --client-ca-file=/etc/kubernetes/pki/ca.pem- --disable-admission-plugins=PersistentVolumeLabel- --enable-admission-plugins=NodeRestriction- --enable-bootstrap-token-auth=true- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.pem- --etcd-certfile=/etc/kubernetes/pki/etcd/etcd.pem- --etcd-keyfile=/etc/kubernetes/pki/etcd/etcd-key.pem- --etcd-servers=$ETCD_SERVERS- --insecure-port=0- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver.pem- --kubelet-client-key=/etc/kubernetes/pki/apiserver-key.pem- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.pem- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client-key.pem - --requestheader-allowed-names=front-proxy-client- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem- --requestheader-extra-headers-prefix=X-Remote-Extra-- --requestheader-group-headers=X-Remote-Group- --requestheader-username-headers=X-Remote-User- --secure-port=5443- --service-account-key-file=/etc/kubernetes/pki/sa.pub- --service-cluster-ip-range=10.96.0.0/12- --tls-cert-file=/etc/kubernetes/pki/apiserver.pem- --tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem image: k8s.gcr.io/kube-apiserver:v1.11.1imagePullPolicy: IfNotPresentlivenessProbe:failureThreshold: 8httpGet:host: $host_ippath: /healthzport: 5443scheme: HTTPSinitialDelaySeconds: 15timeoutSeconds: 15name: kube-apiserverresources:requests:cpu: 250mvolumeMounts:- mountPath: /etc/kubernetes/pkiname: k8s-certsreadOnly: true- mountPath: /etc/ssl/certsname: ca-certsreadOnly: true- mountPath: /etc/pkiname: etc-pkireadOnly: true- mountPath: /usr/share/ca-certificatesname: usr-share-ca-certificatesreadOnly: true- mountPath: /usr/local/share/ca-certificatesname: usr-local-share-ca-certificatesreadOnly: true- mountPath: /etc/ca-certificatesname: etc-ca-certificatesreadOnly: truehostNetwork: truepriorityClassName: system-cluster-criticalvolumes:- hostPath:path: /etc/pkitype: DirectoryOrCreatename: etc-pki- hostPath:path: /usr/share/ca-certificatestype: DirectoryOrCreatename: usr-share-ca-certificates- hostPath:path: /usr/local/share/ca-certificatestype: DirectoryOrCreatename: usr-local-share-ca-certificates- hostPath:path: /etc/ca-certificatestype: DirectoryOrCreatename: etc-ca-certificates- hostPath:path: /etc/kubernetes/pkitype: DirectoryOrCreatename: k8s-certs- hostPath:path: /etc/ssl/certstype: DirectoryOrCreatename: ca-certsstatus: {}EOFdone3. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03dossh $host mkdir -p /etc/kubernetes/pki/ /etc/kubernetes/manifests/scp/tmp/kubernetes/{apiserver-key.pem,apiserver.pem,ca.pem,front-proxy-ca.pem,f ront-proxy-client-key.pem,front-proxy-client.pem,sa.pub}${host}:/etc/kubernetes/pki/scp /tmp/kubernetes/kube-apiserver-${host}.yaml${host}:/etc/kubernetes/manifests/kube-apiserver.yamldone5. 配置kube-controller-manager1. 创建证书# 证书配置[root@k8s01 ~]# cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > manager-csr.json{"CN":"system:kube-controller-manager","key":{"algo":"rsa","size":2048},"nam es":[{"C":"CN","ST":"Shanghai","L":"Shanghai","O":"system:kube-controller-ma nager","OU":"Kubernetes-manual"}]}EOF# 创建证书[root@k8s01 kubernetes]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json -profile=kubernetes manager-csr.json | cfssljson -bare controller-manager2. 生成controller-manager配置文件[root@k8s01 kubernetes]# export KUBE_APISERVER=https://127.0.0.1:6443[root@k8s01 kubernetes]# kubectl config set-cluster kubernetes--certificate-authority=ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=/tmp/kubernetes/controller-manager.conf[root@k8s01 kubernetes]# kubectl config set-credentialssystem:kube-controller-manager --client-certificate=controller-manager.pem--client-key=controller-manager-key.pem --embed-certs=true--kubeconfig=/tmp/kubernetes/controller-manager.conf[root@k8s01 kubernetes]# kubectl config set-contextsystem:kube-controller-manager@kubernetes --cluster=kubernetes--user=system:kube-controller-manager--kubeconfig=/tmp/kubernetes/controller-manager.conf[root@k8s01 kubernetes]# kubectl config use-contextsystem:kube-controller-manager@kubernetes--kubeconfig=/tmp/kubernetes/controller-manager.conf3. 创建StaticPod[root@k8s01 ~]# cat << EOF > /tmp/kubernetes/kube-controller-manager.yaml apiVersion: v1kind: Podmetadata:annotations:scheduler.alpha.kubernetes.io/critical-pod: ""creationTimestamp: nulllabels:component: kube-controller-managertier: control-planename: kube-controller-managernamespace: kube-systemspec:containers:- command:- kube-controller-manager- --address=127.0.0.1- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem- --cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem- --controllers=*,bootstrapsigner,tokencleaner- --kubeconfig=/etc/kubernetes/controller-manager.conf- --leader-elect=true- --root-ca-file=/etc/kubernetes/pki/ca.pem- --service-account-private-key-file=/etc/kubernetes/pki/sa.key - --use-service-account-credentials=trueimage: k8s.gcr.io/kube-controller-manager:v1.11.1imagePullPolicy: IfNotPresentlivenessProbe:failureThreshold: 8httpGet:host: 127.0.0.1path: /healthzport: 10252scheme: HTTPinitialDelaySeconds: 15timeoutSeconds: 15name: kube-controller-managerresources:requests:cpu: 200mvolumeMounts:- mountPath: /etc/kubernetes/controller-manager.confname: kubeconfigreadOnly: true- mountPath: /etc/pkiname: etc-pkireadOnly: true- mountPath: /usr/share/ca-certificatesname: usr-share-ca-certificatesreadOnly: true- mountPath: /usr/local/share/ca-certificatesname: usr-local-share-ca-certificatesreadOnly: true- mountPath: /etc/ca-certificatesname: etc-ca-certificatesreadOnly: true- mountPath: /etc/kubernetes/pkiname: k8s-certsreadOnly: true- mountPath: /etc/ssl/certsname: ca-certsreadOnly: truehostNetwork: truepriorityClassName: system-cluster-criticalvolumes:- hostPath:path: /etc/ca-certificatestype: DirectoryOrCreatename: etc-ca-certificates- hostPath:path: /etc/kubernetes/pkitype: DirectoryOrCreatename: k8s-certs- hostPath:path: /etc/ssl/certstype: DirectoryOrCreatename: ca-certs- hostPath:path: /etc/kubernetes/controller-manager.conf type: FileOrCreatename: kubeconfig- hostPath:path: /etc/pkitype: DirectoryOrCreatename: etc-pki- hostPath:path: /usr/share/ca-certificatestype: DirectoryOrCreatename: usr-share-ca-certificates- hostPath:path: /usr/local/share/ca-certificatestype: DirectoryOrCreatename: usr-local-share-ca-certificatesstatus: {}EOF4. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03doscp /tmp/kubernetes/{ca.pem,ca-key.pem,sa.key} ${host}:/etc/kubernetes/pki/ scp /tmp/kubernetes/controller-manager.conf ${host}:/etc/kubernetes/controller-manager.confscp /tmp/kubernetes/kube-controller-manager.yaml${host}:/etc/kubernetes/manifests/kube-controller-manager.yamldone6. 配置kube-scheduler1. 创建证书# 证书配置[root@k8s01 ~]# cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > scheduler-csr.json{"CN":"system:kube-scheduler","key":{"algo":"rsa","size":2048},"names":[{"C" :"CN","ST":"Shanghai","L":"Shanghai","O":"system:kube-scheduler","OU":"Kuber netes-manual"}]}EOF# 创建证书[root@k8s01kubernetes]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json -profile=kubernetes scheduler-csr.json | cfssljson -bare scheduler2. 生成scheduler配置文件[root@k8s01 kubernetes]# export KUBE_APISERVER=https://127.0.0.1:6443[root@k8s01 kubernetes]# kubectl config set-cluster kubernetes--certificate-authority=ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=/tmp/kubernetes/scheduler.conf[root@k8s01 kubernetes]# kubectl config set-credentials system:kube-scheduler --client-certificate=scheduler.pem --client-key=scheduler-key.pem--embed-certs=true --kubeconfig=/tmp/kubernetes/scheduler.conf[root@k8s01 kubernetes]# kubectl config set-contextsystem:kube-scheduler@kubernetes --cluster=kubernetes--user=system:kube-scheduler --kubeconfig=/tmp/kubernetes/scheduler.conf [root@k8s01 kubernetes]# kubectl config use-contextsystem:kube-scheduler@kubernetes --kubeconfig=/tmp/kubernetes/scheduler.conf3. 创建StaticPod[root@k8s01 kubernetes]# cat << EOF > /tmp/kubernetes/kube-scheduler.yaml apiVersion: v1kind: Podmetadata:annotations:scheduler.alpha.kubernetes.io/critical-pod: "" creationTimestamp: nulllabels:component: kube-schedulertier: control-planename: kube-schedulernamespace: kube-systemspec:containers:- command:- kube-scheduler- --address=127.0.0.1- --kubeconfig=/etc/kubernetes/scheduler.conf - --leader-elect=trueimage: k8s.gcr.io/kube-scheduler:v1.11.1imagePullPolicy: IfNotPresentlivenessProbe:failureThreshold: 8httpGet:host: 127.0.0.1path: /healthzport: 10251scheme: HTTPinitialDelaySeconds: 15timeoutSeconds: 15name: kube-schedulerresources:requests:cpu: 100mvolumeMounts:- mountPath: /etc/kubernetes/scheduler.confname: kubeconfigreadOnly: truehostNetwork: truepriorityClassName: system-cluster-criticalvolumes:- hostPath:path: /etc/kubernetes/scheduler.conftype: FileOrCreatename: kubeconfigstatus: {}EOF4. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03doscp /tmp/kubernetes/scheduler.conf ${host}:/etc/kubernetes/scheduler.conf scp /tmp/kubernetes/kube-scheduler.yaml${host}:/etc/kubernetes/manifests/kube-scheduler.yamldone7. 配置kube-proxy1. 创建证书# 证书配置[root@k8s01 ~]# cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > proxy-csr.json{"CN":"system:kube-proxy","key":{"algo":"rsa","size":2048},"names":[{"C":"CN ","ST":"Shanghai","L":"Shanghai","O":"system:kube-proxy","OU":"Kubernetes-ma nual"}]}EOF# 创建证书[root@k8s01kubernetes]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json -profile=kubernetes proxy-csr.json | cfssljson -bare proxy2. 生成scheduler配置文件[root@k8s01 kubernetes]# export KUBE_APISERVER=https://127.0.0.1:6443[root@k8s01 kubernetes]# kubectl config set-cluster kubernetes--certificate-authority=ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=/tmp/kubernetes/proxy.conf[root@k8s01 kubernetes]# kubectl config set-credentials system:kube-proxy--client-certificate=proxy.pem --client-key=proxy-key.pem --embed-certs=true --kubeconfig=/tmp/kubernetes/proxy.conf[root@k8s01 kubernetes]# kubectl config set-contextsystem:kube-proxy@kubernetes --cluster=kubernetes --user=system:kube-proxy--kubeconfig=/tmp/kubernetes/proxy.conf[root@k8s01 kubernetes]# kubectl config use-contextsystem:kube-proxy@kubernetes --kubeconfig=/tmp/kubernetes/proxy.conf3. 创建StaticPod[root@k8s01 kubernetes]# cat << EOF > /tmp/kubernetes/kube-proxy.yamlapiVersion: v1kind: Podmetadata:name: kube-proxynamespace: kube-systemspec:hostNetwork: truecontainers:- name: kube-proxyimage: k8s.gcr.io/kube-proxy:v1.11.1imagePullPolicy: IfNotPresentsecurityContext:privileged: truecommand:- kube-proxy- --kubeconfig=/etc/kubernetes/proxy.conf- --cluster-cidr=10.244.0.0/16- --v=2- --masquerade-all- --alsologtostderr=true- --logtostderr=falsesecurityContext:privileged: truevolumeMounts:- mountPath: /var/log/kubernetes/proxyreadOnly: falsename: kubeproxylog- mountPath: /etc/kubernetes/proxy.confreadOnly: truename: kubeconfig- mountPath: /lib/modulesname: lib-modulesreadOnly: true- mountPath: /var/run/dbus/system_bus_socket name: system-bus-socketreadOnly: truevolumes:- hostPath:path: /var/log/kubernetes/proxyname: kubeproxylog- hostPath:path: /etc/kubernetes/proxy.confname: kubeconfig- hostPath:path: /lib/modulesname: lib-modules- hostPath:path: /var/run/dbus/system_bus_socketname: system-bus-socketEOF4. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03doscp /tmp/kubernetes/proxy.conf ${host}:/etc/kubernetes/proxy.confscp /tmp/kubernetes/kube-proxy.yaml${host}:/etc/kubernetes/manifests/kube-proxy.yamldone8. 配置kubelet1. 创建证书# 证书配置[root@k8s01 ~]# cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > kubelet-csr.json{"CN":"system:node:\$NODE","key":{"algo":"rsa","size":2048},"names":[{"C":"C N","L":"Shanghai","ST":"Shanghai","O":"system:nodes","OU":"Kubernetes-manual "}]}EOF# 创建证书[root@k8s01 kubernetes]# for NODE in k8s01 k8s02 k8s03docp kubelet-csr.json kubelet-$NODE-csr.json;sed -i "s/\$NODE/$NODE/g" kubelet-$NODE-csr.json;cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json-hostname=$NODE -profile=kubernetes kubelet-$NODE-csr.json | cfssljson -bare kubelet-$NODEdone2. 生成kubelet配置文件[root@k8s01 kubernetes]# export KUBE_APISERVER=https://127.0.0.1:6443[root@k8s01 kubernetes]# for NODE in k8s01 k8s02 k8s03dohyperkube kubectl config set-cluster kubernetes--certificate-authority=ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=/tmp/kubernetes/kubelet-${NODE}.confhyperkube kubectl config set-credentials system:node:${NODE}--client-certificate=kubelet-${NODE}.pem --client-key=kubelet-${NODE}-key.pem --embed-certs=true --kubeconfig=/tmp/kubernetes/kubelet-${NODE}.confhyperkube kubectl config set-context system:node:${NODE}@kubernetes--cluster=kubernetes --user=system:node:${NODE}--kubeconfig=/tmp/kubernetes/kubelet-${NODE}.confhyperkube kubectl config use-context system:node:${NODE}@kubernetes--kubeconfig=/tmp/kubernetes/kubelet-${NODE}.confdone3. 创建systemd启动文件(不配置网络禁用KUBELET_NETWORK_ARGS参数即可) # systemd启动配置[root@k8s01 kubernetes]# cat << EOF > /tmp/kubernetes/kubelet.service[Unit]Description=kubelet: The Kubernetes Node AgentDocumentation=http://kubernetes.io/docs/[Service]ExecStart=/usr/bin/kubeletRestart=alwaysStartLimitInterval=0RestartSec=10[Install]WantedBy=multi-user.targetEOF# systemd启动变量[root@k8s01 kubernetes]# cat << EOF > /tmp/kubernetes/10-kubelet.conf [Service]Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.co nf"Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/ma nifests --allow-privileged=true"Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni--cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10--cluster-domain=cluster.local"Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook--client-ca-file=/etc/kubernetes/pki/ca.pem"Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true--cert-dir=/var/lib/kubelet/pki"Environment="KUBELET_EXTRA_ARGS=--node-labels=node-role.kubernetes.io/master='' --logtostderr=true --v=0"ExecStart=ExecStart=/usr/bin/kubelet \$KUBELET_KUBECONFIG_ARGS\$KUBELET_SYSTEM_PODS_ARGS \$KUBELET_NETWORK_ARGS \$KUBELET_DNS_ARGS\$KUBELET_AUTHZ_ARGS \$KUBELET_CADVISOR_ARGS \$KUBELET_CERTIFICATE_ARGS\$KUBELET_EXTRA_ARGSEOF4. 分发配置文件[root@k8s01 ~]# for host in k8s01 k8s02 k8s03dossh $host mkdir -p /etc/systemd/system/kubelet.service.d /var/lib/kubelet/var/log/kubernetesscp /tmp/kubernetes/kubelet-${host}.conf ${host}:/etc/kubernetes/kubelet.conf scp /tmp/kubernetes/kubelet.service${host}:/usr/lib/systemd/system/kubelet.servicescp /tmp/kubernetes/10-kubelet.conf${host}:/etc/systemd/system/kubelet.service.d/10-kubelet.confssh $host systemctl daemon-reloaddone9. 启动服务与初始化配置1. 创建证书# 证书配置[root@k8s01 ~]# cd /tmp/kubernetes[root@k8s01 kubernetes]# cat << EOF > admin-csr.json {"CN":"admin","key":{"algo":"rsa","size":2048},"names":[{"C":"CN","ST":"Shan ghai","L":"Shanghai","O":"system:masters","OU":"Kubernetes-manual"}]}EOF# 创建证书[root@k8s01 kubernetes]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem-config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin。