发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967
课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。
腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518
第二个视频发布 https://edu.csdn.net/course/detail/27109
腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518
介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。
第三个视频发布:https://edu.csdn.net/course/detail/27574
详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————
MsgUtil:
/*
* @headerAndBody 包含消息头+消息体,包含SOH,不包含checksum域
*/
public static String checkSum(String headerAndBody) {
byte[] headerAndBodyBytes = headerAndBody.getBytes();
int sum = 0;
for (byte b : headerAndBodyBytes) {
sum += b;
}
String rt = String.valueOf((sum) % 256);
/*
* 在模256之后需要转换成固定长度为3字符串
*/
if (rt.length() == 1) {
rt = "00" + rt;
} else if (rt.length() == 2) {
rt = "0" + rt;
} else {
}
return rt;
}
public static String getGMTTime(){
SimpleDateFormat foo = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS", Locale.ENGLISH);
foo.setTimeZone(TimeZone.getTimeZone("GMT"));
return foo.format(new Date());
}
public static String[] seperate(String msgStr){
String[] tags=msgStr.split(BaseMsg.SOH);
List<Integer> seqHead=new ArrayList<Integer>();
List<Integer> seqTailer=new ArrayList<Integer>();
int indexHead=0;
int indexTail=0;
boolean firstTail=true;
if(tags.length<5){
throw new InValidDataException("消息格式错误");
}else{
String tag=tags[0];
String [] ts=tag.split("=");
if(ts.length!=2){
throw new InValidDataException("消息格式错误");
}
String tagId=ts[0];
if(!tagId.equals("8")){
throw new InValidDataException("消息格式错误");
}
String tag1=tags[1];
String [] ts1=tag1.split("=");
if(ts1.length!=2){
throw new InValidDataException("消息格式错误");
}
String tagId1=ts1[0];
if(!tagId1.equals("9")){
throw new InValidDataException("消息格式错误");
}
String tag2=tags[2];
String [] ts2=tag2.split("=");
if(ts2.length!=2){
throw new InValidDataException("消息格式错误");
}
String tagId2=ts2[0];
if(!tagId2.equals("35")){
throw new InValidDataException("消息格式错误");
}
String tag3=tags[tags.length-1];
String [] ts3=tag3.split("=");
if(ts3.length!=2){
throw new InValidDataException("消息格式错误");
}
String tagId3=ts3[0];
if(!tagId3.equals("10")){
throw new InValidDataException("消息格式错误");
}
}
for(int i=0;i<tags.length;i++){
String tag=tags[i];
String [] ts=tag.split("=");
if(ts.length!=2){
throw new InValidDataException("消息格式错误");
}
String tagId=ts[0];
if(allHead.contains(tagId)){
seqHead.add(i);
indexHead=i;
}
if(allTailer.contains(tagId)){
seqTailer.add(i);
if(firstTail){
indexTail=i;
}
firstTail=false;
}
}
for(int i=0;i<seqHead.size()-1;i++){
if(seqHead.get(i+1)-seqHead.get(i)!=1){
throw new InValidDataException("消息格式错误");
}
}
for(int i=0;i<seqTailer.size()-1;i++){
if(seqTailer.get(i+1)-seqTailer.get(i)!=1){
throw new InValidDataException("消息格式错误");
}
}
int index=0;
indexHead++;
while(indexHead-->0){
index=msgStr.indexOf("=", index+1);
}
index=msgStr.indexOf(BaseMsg.SOH, index);
String head=msgStr.substring(0, index+1);
int indexT=0;
while(indexTail-->0){
indexT=msgStr.indexOf("=",indexT+1);
}
indexT=msgStr.indexOf(BaseMsg.SOH, indexT);
String tailer=msgStr.substring(indexT+1);
String body=msgStr.substring(index+1, indexT+1);
String[]sep=new String[3];
sep[0]=head;
sep[1]=body;
sep[2]=tailer;
return sep;
}
checkSum计算10的值,
seperate将消息,分割为头,体,尾