Enable kubectl logs po

This commit is contained in:
Rita Zhang
2017-12-11 20:25:54 -08:00
parent 57996b44c4
commit e0c9da5d95
5 changed files with 123 additions and 3 deletions

50
vkubelet/apiserver.go Normal file
View File

@@ -0,0 +1,50 @@
package vkubelet
import (
"encoding/base64"
"io/ioutil"
"io"
"log"
"net/http"
"os"
//"k8s.io/api/core/v1"
)
func ApiServerStart() error {
http.HandleFunc("/", HelloServer)
certValue64 := os.Getenv("APISERVER_CERT")
keyValue64 := os.Getenv("APISERVER_KEY")
certValue, err := base64.StdEncoding.DecodeString(certValue64)
if err != nil {
log.Fatal(err)
}
keyValue, err := base64.StdEncoding.DecodeString(keyValue64)
if err != nil {
log.Fatal(err)
}
cert := []byte(certValue)
key := []byte(keyValue)
certFilePath := "cert.pem"
keyFilePath := "key.pem"
err = ioutil.WriteFile(certFilePath, cert, 0644)
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile(keyFilePath, key, 0644)
if err != nil {
log.Fatal(err)
}
err = http.ListenAndServeTLS(":10250", certFilePath, keyFilePath, nil)
if err != nil {
log.Fatal(err)
}
return nil
}
func HelloServer(w http.ResponseWriter, req *http.Request) {
log.Println("handler called")
///containerLogs/{namespace}/{pd}/{container}
log.Println(req)
io.WriteString(w, "ack!\n")
}

View File

@@ -24,7 +24,10 @@ type Provider interface {
// GetPod retrieves a pod by name from the provider (can be cached).
GetPod(namespace, name string) (*v1.Pod, error)
// GetPodStatus retrievesthe status of a pod by name from the provider.
// GetPodLogs retrieves the logs of a pod by name from the provider.
GetPodLogs(namespace, name string) (string, error)
// GetPodStatus retrieves the status of a pod by name from the provider.
GetPodStatus(namespace, name string) (*v1.PodStatus, error)
// GetPods retrieves a list of all pods running on the provider (can be cached).
@@ -37,6 +40,10 @@ type Provider interface {
// within Kuberentes.
NodeConditions() []v1.NodeCondition
// NodeAddresses returns a list of addresses for the node status
// within Kuberentes.
NodeAddresses() []v1.NodeAddress
// OperatingSystem returns the operating system the provider is for.
OperatingSystem() string
}

View File

@@ -60,11 +60,14 @@ func New(nodeName, operatingSystem, namespace, kubeConfig, taint, provider, prov
}
rm := manager.NewResourceManager(clientset)
go ApiServerStart()
log.Println("vkubelet apiserver started")
var p Provider
switch provider {
case "azure":
p, err = azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem)
internalIP := os.Getenv("VKUBELET_POD_IP")
p, err = azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP)
if err != nil {
return nil, err
}
@@ -136,6 +139,7 @@ func (s *Server) registerNode() error {
Capacity: s.provider.Capacity(),
Allocatable: s.provider.Capacity(),
Conditions: s.provider.NodeConditions(),
Addresses: s.provider.NodeAddresses(),
},
}