kubernetes api操作
kubectl 通过访问 Kubernetes API 来执行命令。我们也可以通过对应的TLS key和token, 使用curl 或是 golang client做同样的事。
API 请求必须使用 JSON 格式来发送。 kubectl 的作用是将 .yaml 转换为 JSON 格式进行 API 请求。
通过证书访问
我们从查看 kubectl 的配置文件开始,需要:三个证书和 API server 的地址:
[root@master01 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://apiserver.k8s.local:8443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
[root@master01 ~]# cat /root/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01ERXdOekV5TURRek5sb1hEVE13TURFd05ERXlNRFF6Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWllCkRVQ0N2enJwaXdCM2REcGhVK1BRRTFDVWFJVUQ4MG1UTjRSK1pyWHc4Qmc2WUxiQ1luN05IUExpZjNzU3owWTQKaHdWUkpJa3NaSWtzbVlGQ1lBUnIvQU5iZ0ZOZTFTRm9xaE5ZVlpHbnNGQjAzbEhzTnB2SHBKL1h3ZkZibldVcApZRlZvL0M2NEQzYmdmYTM4Q0M3LzJoRFhGMmFpd0syLzlnY2ZqMk91Z0w0UWNsU3VOclZCWlhLUkFyYkNMS3p3CkRuYmJ1bHByS2F2dXBaMnllL0JtN0ZaVjVtdFlJeXVhVXZtN1BaR0gvclo5UlduQzliSmRUbTNCWEtPZE9GajUKSEpoeHMwY0E2UXo0RGZZcEorWE5jYTJQRTFQZjZ3a1FUcHA1ZVBGcGo1aVljL1pkQUwwcW1BSzZYcjdWQ0lObgpZbFg1NFM1dzA0NEZsdlQ2MVVrQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV2dQZy9BNk13eGxSQ2tkbG11TTlSd1MzaHEKNGJDeTQ1bUR4MGtMc21ESGFHakg3MWsyNGpJOGxjZDlzZU9rZ3JheWFpRFJEZ1piRTlXUmxldDE4TVovVkhuRApYSVFaZFRQVDZHaXNkelhnSGxIUWFRbmY3NDVnWVBiK2JhaUJvTjJENHJxbll2WXhVNUJQOTViT2ZwOGtHaHc2CkJ4YzZGYzV1Qzl6ZGRTRnZmUkpKUGs4NmszUHV1N05uMThWUHdDNHpFb1V2d0kyeUJ3Qlc5NmNCMlVBY3BxRHAKOGJWNGR6MTR2RFRPZ3p5UXpHQytWODU5eWR0ek84L1BxSGRRUmI0UktJVG9wNjc4dmZkWnpJTjRVN3dON1JwWQpQUFN1QjFvaGpkK21IRVE2cmRHcmdIYlNEODlsTTFSZG9VU05aaUNDZFQ4dlQ1NDlXVHJ3OWMzMXMzcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://apiserver.k8s.local:8443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJSk9zeUlxZTgyL3N3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURBeE1EY3hNakEwTXpaYUZ3MHlNVEF4TURZeE1qQTBNemhhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXpnajFsZFMreXVrbEp0ekQKbXltN2k4MFMrdmRwWDA4TkR2T0lSVE15VEhNR293RmZuU3I0Y0w3Tm80S1F0VGtkR0E1YmxWZXBhMktseWtxMwpmS01kcUd6WlJSK3JxcGdQZzVOU1lBOVIxcUZWUlQzZCt3RDV1UEJHN3E3K0pJRUNGMnVhdlE2N2JLVUtQUXJWCjNWTitUa013dndxUFd0UHE3VDRHd3hDQUNxL0psUzBYVWdycExHL0NrMmd3NmFEcWtRSTlOT0Z1WktjL0lnR0MKSkpZaWNybmdlRnNPUUpOTmIxWEt0WnhFaDMydkdPVVlkWGxzb0ZDYUtuTnQ2TzY3Y0tyalEwWmNVeHRzM1BKYQpWTEtpVjlZbnBrK09TbkJZV3g4ZmNEQkp1SUo1dzRUYSsvMjdaQW9iN0JPdnZPWXllTUY3UWo1MVVHd2hMNGFTCjFjNFpJUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFJUStCYk1GVUoya3VucnBoYTBaMTNBVjF3SDMwdzFXdU12YQowR3RlUTBHdVNIdVZwcTRTREMxU2VDS0NFWE83ZXlkSnd6UXJibEJzUjVPUkdYUFE4Ly9DTjVOdEdnVk04cXZECmhEcW5rNlF6RG9LYzBvalU5Yk9ab0Q1QlRmdk5VQ0h3Nzc3SWhOWHFmYTVEUzF5MEduWk5YYmZGTDFpQldNdHIKbzhqZkZaekN2UDZ3RDdkZXFGZFJYZm1IR2I0cVhGZWNJMDZSR1dudHBmbzRoYjVYVy9Gd282bUhERjViTU51eQpoMGhMWVJCOW1QT3p6Wjh4ckVFQVk0RnJ5NVF6T2pkb3hGT0VFRk5lU2xwcVBMdjMranh3c0Jjc0RkWDI5Q2djCnh0NEZ3UXE0ZnA0MFVhcHhxdXAydWZwVVptbUtUZDNPbjNtZFN3NkF5dEdkN0U5UzFKVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBemdqMWxkUyt5dWtsSnR6RG15bTdpODBTK3ZkcFgwOE5Edk9JUlRNeVRITUdvd0ZmCm5TcjRjTDdObzRLUXRUa2RHQTVibFZlcGEyS2x5a3EzZktNZHFHelpSUitycXBnUGc1TlNZQTlSMXFGVlJUM2QKK3dENXVQQkc3cTcrSklFQ0YydWF2UTY3YktVS1BRclYzVk4rVGtNd3Z3cVBXdFBxN1Q0R3d4Q0FDcS9KbFMwWApVZ3JwTEcvQ2syZ3c2YURxa1FJOU5PRnVaS2MvSWdHQ0pKWWljcm5nZUZzT1FKTk5iMVhLdFp4RWgzMnZHT1VZCmRYbHNvRkNhS25OdDZPNjdjS3JqUTBaY1V4dHMzUEphVkxLaVY5WW5waytPU25CWVd4OGZjREJKdUlKNXc0VGEKKy8yN1pBb2I3Qk92dk9ZeWVNRjdRajUxVUd3aEw0YVMxYzRaSVFJREFRQUJBb0lCQUd6RnNCbTg2a2tua3ZTVQpZalE5Y1FUYWJHWFFUbklCd3V3Y3g5bDRzTnBKYzd5RTBoeWdmZTdQM0xLeEVJS01OMzdtdlpUM1pic0twbXBJCnpkdmdKWjB3Y2ZnYlF6N1o3bjdSUFJEM3BZWUJRSXBBb2p1TWhVb01sL1lVcnBsSS9uaXMxMUZ1UUthWDd2TFIKRUowN0loaGhRby9wSEV1Z1M0dWFUbW1YQVhJaDcyMzJUL1c1OWIzTVFocmNndmt4NkJ5ck85SGcvZ0kxWXZFUApPcFY4VXZoL1Y0bFd6cWU4eHVaVkUyYm5xSHJKN2prWUM4OGw4ZjdOWjNhTlFXVEZlQlZKa2ZiVG0reExpNityCmcxamRTZU96MmwzQUVmUEJFY3ZkV2Q0TVlFK0I2NmdVSDc3L3dJc21EMGtwSTViYko1bGxLMGREbndiNjNSTDgKMUpOYTl3MENnWUVBNGxoSG95UXcrb1ZMSWJVNEh0T0orU3BpQ0syd0M0VVZpTTdabCtPSXk4YUpGalRDcHk2agpMTjM2MVZWR3c3Q0lrOW1pV0I4UUMvbTl0VWdyMTRSWFo4Y3ZGelFQdmZ6dS81Ri84eFp4NWpFWlpxcFlTVTJ4Cnd4TDBTSzNrRVpwL1lXYUR6dHJmeVpWNlJleEJaOXpvNWZFR1lXaFRGSmZ1YmxDeEorR0M3RXNDZ1lFQTZRZDYKSGNQbHV2TTRYcXJzSzdRNUlib3VTU0kyUTFaSXZkaXJzQURoZVR3azg0dTJIZ1hGVDhJWDFDMUhzWnhuMmRiWgp4RTFRQnYyaXRETE1XMGdiRTFRNzlNZnBheWgxYlJuS1UzL3NGWXY3QkROQmZkdVU3Q0FJcEhieHBRb2sxMCtQCnhzalQ1ZTZmK2pzWmVmSEZjbzZxWGVIams3bXUzWFAvMXY1eTFNTUNnWUE4Rmw5K0tiOXU0aS9kMVBQL0N2MVgKemk2VVN6ZXU5emVPU0F0dnpSR2x0eUR4YWpRNm1hRHI2a29LbEViaThGeHhrNWNMZWNPU3lrdlljajVoU2xyQgp6Qmp1T2YzcjI5ZSt0T3VZcHQ2NTAxTUE5RHZYeWU1azhRVTB2aVVMbjA0dGx6OXFqS1JZS1h4NlQ0dlZmTW0vCk1Vc1dWTkdwWitQK0dTSE9pb2x0SFFLQmdDTmtzVldJQllLSm9vd3VaY1NWa1AvZ2FWdE9TUE9kVFZzWVo2dEoKMXZVMC8xL0dYcGpjdzRWRHM1N1VhY2srT2ovSjlEVnVrTE1mSH