課程內容:各種k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括開發測試環境部署k8s,和生產環境部署k8s。
介紹主要的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等。
詳細介紹helm命令,學習helm chart語法,編寫helm chart。深入分析各專案原始碼,學習編寫helm外掛程式
第四個課程發布:
本課程將詳細介紹k8s所有命令,以及命令的go原始碼分析,學習知其然,知其所以然
————————————————
//建立auth命令
func newcmdauth(f cmdutil.factory, streams genericclioptions.iostreams) *cobra.command
cmds.addcommand(newcmdcani(f, streams))//新增can-i子命令
cmds.addcommand(newcmdreconcile(f, streams))//新增reconcile子命令
return cmds
}
type canioptions struct
//建立can-i命令
func newcmdcani(f cmdutil.factory, streams genericclioptions.iostreams) *cobra.command
cmd := &cobra.command else }}
cmdutil.checkerr(err)
},} cmd.flags().boolvarp(&o.allnamespaces, "all-namespaces", "a", o.allnamespaces, "if true, check the specified action in all namespaces.")//all-namespaces選項
cmd.flags().boolvarp(&o.quiet, "quiet", "q", o.quiet, "if true, suppress output and just return the exit code.")//quiet選項
cmd.flags().strin**ar(&o.subresource, "subresource", o.subresource, "subresource such as pod/log or deployment/scale")//subresource選項
cmd.flags().boolvar(&o.list, "list", o.list, "if true, prints all allowed actions.")//list選項
cmd.flags().boolvar(&o.noheaders, "no-headers", o.noheaders, "if true, prints allowed actions without headers")//no-headers選項
return cmd
}
//準備
func (o *canioptions) complete(f cmdutil.factory, args string) error
} else
switch len(args)
resourcetokens := strings.splitn(args[1], "/", 2)//用/分割
if err != nil
if len(resourcetokens) > 1
default:
return errors.new("you must specify two or three arguments: verb, resource, and optional resourcename")//報錯
} }var err error
client, err := f.kubernetesclientset()//獲取clientset
if err != nil
o.authclient = client.authorizationv1()//從clientset獲取authclient
o.discoveryclient = client.discovery()//從clientset獲取discoberyclient
o.namespace = ""//設定namespace為空
if !o.allnamespaces
} return nil
}
//校驗
func (o *canioptions) validate() error
return nil
} if o.nonresourceurl != ""
if o.resource != (schema.groupversionresource{}) || o.resourcename != ""
} else if !o.resource.empty() && !o.allnamespaces && o.discoveryclient != nil else
} }if o.noheaders
return nil
}
//執行list
func (o *canioptions) runaccesslist() error ,
} response, err := o.authclient.selfsubjectrulesreviews().create(sar)//應用selfsubjectrulesreview到服務端
if err != nil
return o.printstatus(response.status)//輸出結果
}
//執行check
func (o *canioptions) runaccesscheck() (bool, error) ,
},} } else ,
},} }
response, err := o.authclient.selfsubjectaccessreviews().create(sar)//應用selfsubjectaccessreview到服務端
if err != nil
if response.status.allowed else
if len(response.status.evaluationerror) > 0
fmt.fprintln(o.out)
} return response.status.allowed, nil
}
kubectl原始碼分析之rollout undo
課程內容 各種k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括開發測試環境部署k8s,和生產環境部署k8s。介紹主要的k8s資源的使用配置和命令。包括configmap,pod,service,replicaset,namespa...
kubectl原始碼分析之kustomize
istio多集群探秘,部署了50次多集群後我得出的結論 istio防故障利器,你知道幾個,istio新手不要讀,太難!istio業務許可權控制,原來可以這麼玩 istio實現非侵入壓縮,微服務之間如何實現壓縮 不懂envoyfilter也敢說精通istio系列 http rbac 不要只會用auth...
原始碼分析之LayoutInflater
簡介 inflate填充的過程 viewstub,merge,include的載入過程 layoutinflater系統服務的註冊過程 systemserviceregistry類有個靜態 塊,完成了常用服務的註冊,如下 static 註冊am registerservice context.act...