Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refact log #1097

Merged
merged 2 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/scripts/deploy-csi-in-k8s.sh
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ function deploy_webhook() {
sudo kustomize build ${GITHUB_WORKSPACE}/deploy/kubernetes/csi-ci/webhook >> ${GITHUB_WORKSPACE}/deploy/webhook.yaml
sudo ${GITHUB_WORKSPACE}/hack/update_install_script.sh
sudo ${GITHUB_WORKSPACE}/scripts/juicefs-csi-webhook-install.sh print | sed -e "s@juicedata/juicefs-csi-driver.*\$@juicedata/juicefs-csi-driver:${dev_tag}@g" \
-e 's@/var/lib/kubelet@/var/snap/microk8s/common/var/lib/kubelet@g' -e 's@--v=5@--v=6@g' -e "s@juicedata/csi-dashboard.*\$@juicedata/csi-dashboard:${dev_tag}@g" | sudo microk8s.kubectl apply -f -
-e 's@/var/lib/kubelet@/var/snap/microk8s/common/var/lib/kubelet@g' -e "s@juicedata/csi-dashboard.*\$@juicedata/csi-dashboard:${dev_tag}@g" | sudo microk8s.kubectl apply -f -
# Wait until the deploy finish
timeout=0
while true; do
Expand Down Expand Up @@ -161,7 +161,7 @@ function deploy_webhook_provisioner() {
sudo kustomize build ${GITHUB_WORKSPACE}/deploy/kubernetes/csi-ci/webhook-provisioner > ${GITHUB_WORKSPACE}/deploy/webhook.yaml
sudo ${GITHUB_WORKSPACE}/hack/update_install_script.sh
sudo ${GITHUB_WORKSPACE}/scripts/juicefs-csi-webhook-install.sh print | sed -e "s@juicedata/juicefs-csi-driver.*\$@juicedata/juicefs-csi-driver:${dev_tag}@g" \
-e 's@/var/lib/kubelet@/var/snap/microk8s/common/var/lib/kubelet@g' -e 's@--v=5@--v=6@g' -e "s@juicedata/csi-dashboard.*\$@juicedata/csi-dashboard:${dev_tag}@g" | sudo microk8s.kubectl apply -f -
-e 's@/var/lib/kubelet@/var/snap/microk8s/common/var/lib/kubelet@g' -e "s@juicedata/csi-dashboard.*\$@juicedata/csi-dashboard:${dev_tag}@g" | sudo microk8s.kubectl apply -f -
# Wait until the deploy finish
timeout=0
while true; do
Expand Down
17 changes: 9 additions & 8 deletions cmd/app/mount_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/klog"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"

Expand All @@ -38,6 +38,7 @@ import (

var (
scheme = runtime.NewScheme()
log = klog.NewKlogr().WithName("manager")
)

func init() {
Expand Down Expand Up @@ -79,14 +80,14 @@ func NewMountManager(
}),
})
if err != nil {
klog.Errorf("New mount controller error: %v", err)
log.Error(err, "New mount controller error")
return nil, err
}

// gen k8s client
k8sClient, err := k8sclient.NewClient()
if err != nil {
klog.V(5).Infof("Could not create k8s client %v", err)
log.Error(err, "Could not create k8s client")
return nil, err
}

Expand All @@ -99,22 +100,22 @@ func NewMountManager(
func (m *MountManager) Start(ctx context.Context) {
// init Reconciler(Controller)
if err := (mountctrl.NewMountController(m.client)).SetupWithManager(m.mgr); err != nil {
klog.Errorf("Register mount controller error: %v", err)
log.Error(err, "Register mount controller error")
return
}
if err := (mountctrl.NewJobController(m.client)).SetupWithManager(m.mgr); err != nil {
klog.Errorf("Register job controller error: %v", err)
log.Error(err, "Register job controller error")
return
}
if config.CacheClientConf {
if err := (mountctrl.NewSecretController(m.client)).SetupWithManager(m.mgr); err != nil {
klog.Errorf("Register secret controller error: %v", err)
log.Error(err, "Register secret controller error")
return
}
}
klog.Info("Mount manager started.")
log.Info("Mount manager started.")
if err := m.mgr.Start(ctx); err != nil {
klog.Errorf("Mount manager start error: %v", err)
log.Error(err, "Mount manager start error")
os.Exit(1)
}
}
11 changes: 5 additions & 6 deletions cmd/app/pod_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"k8s.io/apimachinery/pkg/labels"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/klog"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"

Expand Down Expand Up @@ -62,14 +61,14 @@ func NewPodManager() (*PodManager, error) {
}),
})
if err != nil {
klog.Errorf("New pod controller error: %v", err)
log.Error(err, "New pod controller error")
return nil, err
}

// gen k8s client
k8sClient, err := k8sclient.NewClient()
if err != nil {
klog.V(5).Infof("Could not create k8s client %v", err)
log.Info("Could not create k8s client")
return nil, err
}

Expand All @@ -82,12 +81,12 @@ func NewPodManager() (*PodManager, error) {
func (m *PodManager) Start(ctx context.Context) error {
// init Reconciler(Controller)
if err := (mountctrl.NewPodController(m.client)).SetupWithManager(m.mgr); err != nil {
klog.Errorf("Register pod controller error: %v", err)
log.Error(err, "Register pod controller error")
return err
}
klog.Info("Pod manager started.")
log.Info("Pod manager started.")
if err := m.mgr.Start(ctx); err != nil {
klog.Errorf("Pod manager start error: %v", err)
log.Error(err, "Pod manager start error")
return err
}
return nil
Expand Down
21 changes: 10 additions & 11 deletions cmd/app/webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/klog"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"

Expand All @@ -44,7 +43,7 @@ func NewWebhookManager(certDir string, webhookPort int, leaderElection bool,
_ = clientgoscheme.AddToScheme(scheme)
cfg, err := ctrl.GetConfig()
if err != nil {
klog.Error(err, "can not get kube config")
log.Error(err, "can not get kube config")
return nil, err
}

Expand All @@ -68,18 +67,18 @@ func NewWebhookManager(certDir string, webhookPort int, leaderElection bool,
})

if err != nil {
klog.Error(err, "initialize controller manager failed")
log.Error(err, "initialize controller manager failed")
return nil, err
}
// gen k8s client
k8sClient, err := k8sclient.NewClient()
if err != nil {
klog.V(5).Infof("Could not create k8s client %v", err)
log.Error(err, "Could not create k8s client")
return nil, err
}
if config.CacheClientConf {
if err := (mountctrl.NewSecretController(k8sClient)).SetupWithManager(mgr); err != nil {
klog.Errorf("Register secret controller error: %v", err)
log.Error(err, "Register secret controller error")
return nil, err
}
}
Expand All @@ -91,30 +90,30 @@ func NewWebhookManager(certDir string, webhookPort int, leaderElection bool,

func (w *WebhookManager) Start(ctx context.Context) error {
if err := w.registerWebhook(); err != nil {
klog.Errorf("Register webhook error: %v", err)
log.Error(err, "Register webhook error")
return err
}
if err := w.registerAppController(); err != nil {
klog.Errorf("Register app controller error: %v", err)
log.Error(err, "Register app controller error")
return err
}
klog.Info("Webhook manager started.")
log.Info("Webhook manager started.")
if err := w.mgr.Start(ctx); err != nil {
klog.Errorf("Webhook manager start error: %v", err)
log.Error(err, "Webhook manager start error")
return err
}
return nil
}

func (w *WebhookManager) registerWebhook() error {
// register admission handlers
klog.Info("Register webhook handler")
log.Info("Register webhook handler")
handler.Register(w.mgr, w.client)
return nil
}

func (w *WebhookManager) registerAppController() error {
// init Reconciler(Controller)
klog.Info("Register app controller")
log.Info("Register app controller")
return (mountctrl.NewAppController(w.client)).SetupWithManager(w.mgr)
}
34 changes: 20 additions & 14 deletions cmd/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/klog"

"github.com/juicedata/juicefs-csi-driver/cmd/app"
"github.com/juicedata/juicefs-csi-driver/pkg/config"
Expand Down Expand Up @@ -74,7 +73,8 @@ func parseControllerConfig() {
if immutable, err := strconv.ParseBool(jfsImmutable); err == nil {
config.Immutable = immutable
} else {
klog.Errorf("cannot parse JUICEFS_IMMUTABLE: %v", err)
log.Error(err, "cannot parse JUICEFS_IMMUTABLE")
os.Exit(1)
}
}

Expand Down Expand Up @@ -106,17 +106,17 @@ func parseControllerConfig() {
// When not in sidecar mode, we should inherit attributes from CSI Node pod.
k8sclient, err := k8s.NewClient()
if err != nil {
klog.V(5).Infof("Can't get k8s client: %v", err)
os.Exit(0)
log.Error(err, "Can't get k8s client")
os.Exit(1)
}
CSINodeDsName := "juicefs-csi-node"
if name := os.Getenv("JUICEFS_CSI_NODE_DS_NAME"); name != "" {
CSINodeDsName = name
}
ds, err := k8sclient.GetDaemonSet(context.TODO(), CSINodeDsName, config.Namespace)
if err != nil {
klog.V(5).Infof("Can't get DaemonSet %s: %v", CSINodeDsName, err)
os.Exit(0)
log.Error(err, "Can't get DaemonSet", "ds", CSINodeDsName)
os.Exit(1)
}
config.CSIPod = corev1.Pod{
Spec: ds.Spec.Template.Spec,
Expand All @@ -127,15 +127,17 @@ func parseControllerConfig() {
func controllerRun(ctx context.Context) {
parseControllerConfig()
if nodeID == "" {
klog.Fatalln("nodeID must be provided")
log.Info("nodeID must be provided")
os.Exit(1)
}

// http server for pprof
go func() {
port := 6060
for {
if err := http.ListenAndServe(fmt.Sprintf("localhost:%d", port), nil); err != nil {
klog.Errorf("failed to start pprof server: %v", err)
log.Error(err, "failed to start pprof server")
os.Exit(1)
}
port++
}
Expand All @@ -157,7 +159,7 @@ func controllerRun(ctx context.Context) {
Handler: mux,
}
if err := server.ListenAndServe(); err != nil {
klog.Errorf("failed to start metrics server: %v", err)
log.Error(err, "failed to start metrics server")
}
}()

Expand All @@ -166,7 +168,7 @@ func controllerRun(ctx context.Context) {
go func() {
mgr, err := app.NewMountManager(leaderElection, leaderElectionNamespace, leaderElectionLeaseDuration)
if err != nil {
klog.Error(err)
log.Error(err, "fail to create mount manager")
return
}
mgr.Start(ctx)
Expand All @@ -178,24 +180,28 @@ func controllerRun(ctx context.Context) {
go func() {
mgr, err := app.NewWebhookManager(certDir, webhookPort, leaderElection, leaderElectionNamespace, leaderElectionLeaseDuration)
if err != nil {
klog.Fatalln(err)
log.Error(err, "fail to create webhook manager")
os.Exit(1)
}

if err := mgr.Start(ctx); err != nil {
klog.Fatalln(err)
log.Error(err, "fail to start webhook manager")
os.Exit(1)
}
}()
}

drv, err := driver.NewDriver(endpoint, nodeID, leaderElection, leaderElectionNamespace, leaderElectionLeaseDuration, registerer)
if err != nil {
klog.Fatalln(err)
log.Error(err, "fail to create driver")
os.Exit(1)
}
go func() {
<-ctx.Done()
drv.Stop()
}()
if err := drv.Run(); err != nil {
klog.Fatalln(err)
log.Error(err, "fail to run driver")
os.Exit(1)
}
}
27 changes: 17 additions & 10 deletions cmd/dashboard/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"context"
goflag "flag"
"fmt"
"log"
"net/http"
_ "net/http/pprof"
"os"
Expand All @@ -40,7 +39,7 @@ import (
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
"k8s.io/klog"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"

Expand All @@ -58,6 +57,7 @@ const (

var (
scheme = runtime.NewScheme()
log = klog.NewKlogr().WithName("main")

port uint16
devMode bool
Expand Down Expand Up @@ -114,11 +114,13 @@ func run() {
config = ctrl.GetConfigOrDie()
}
if err != nil {
log.Fatalf("can't get k8s config: %v", err)
log.Error(err, "can't get k8s config")
os.Exit(1)
}
mgr, err := newManager(config)
if err != nil {
log.Fatalf("can't create manager: %v", err)
log.Error(err, "can't create manager")
os.Exit(1)
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
Expand Down Expand Up @@ -159,28 +161,33 @@ func run() {
}

go func() {
log.Printf("listen on %s\n", addr)
log.Info("listen and serve", "addr", addr)
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("listen: %s\n", err)
log.Error(err, "listen error")
os.Exit(1)
}
}()
go func() {
// pprof server
log.Println(http.ListenAndServe("localhost:8089", nil))
err = http.ListenAndServe("localhost:8089", nil)
if err != nil {
log.Error(err, "pprof server error")
}
}()
quit := make(chan os.Signal, 1)
go func() {
if err := podApi.StartManager(ctx, mgr); err != nil {
klog.Errorf("manager start error: %v", err)
log.Error(err, "manager start error")
}
quit <- syscall.SIGTERM
}()

signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("Shutdown Server ...")
log.Info("Shutdown Server ...")
if err := srv.Shutdown(ctx); err != nil {
log.Fatal("Server Shutdown:", err)
log.Error(err, "Server Shutdown")
os.Exit(1)
}
}

Expand Down
Loading
Loading