Argh, getting hang of golang and kubernetes. Initial handshake done.
diff --git a/master/master.go b/master/master.go
new file mode 100644
index 0000000..73ac143
--- /dev/null
+++ b/master/master.go
@@ -0,0 +1,60 @@
+package main
+
+import "context"
+import "flag"
+import "fmt"
+import "log"
+import "net"
+
+import "google.golang.org/grpc"
+
+import pc "pcloud"
+
+var port int
+
+func init() {
+	flag.IntVar(&port, "port", 123, "Port to listen on.")
+}
+
+type chunkServer struct {
+	address string
+}
+
+type metadataStorage struct {
+	chunkServer []string
+}
+
+func (s *metadataStorage) AddChunkServer(
+	ctx context.Context,
+	request *pc.AddChunkServerRequest) (*pc.AddChunkServerResponse, error) {
+	s.chunkServer = append(s.chunkServer, request.GetAddress())
+	log.Printf("Registered Chunk server: %s", request.GetAddress())
+	return &pc.AddChunkServerResponse{}, nil
+}
+
+func (s *metadataStorage) CreateBlob(
+	ctx context.Context,
+	request *pc.CreateBlobRequest) (*pc.CreateBlobResponse, error) {
+	return nil, nil
+}
+
+func (s *metadataStorage) GetBlobMetadata(
+	ctx context.Context,
+	request *pc.GetBlobMetadataRequest) (*pc.GetBlobMetadataResponse, error) {
+	return nil, nil
+}
+
+func main() {
+	flag.Parse()
+	log.Print("Master server starting")
+
+	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
+	if err != nil {
+		log.Fatalf("Failed to listen on port %d: %v", port, err)
+	}
+	log.Printf("Listening on port: %d", port)
+	server := grpc.NewServer()
+	pc.RegisterMetadataStorageServer(server, &metadataStorage{})
+	log.Print("Master serving")
+	server.Serve(lis)
+}