Repository: kubernetes-sigs/kube-scheduler-simulator
Pull request #254 (2022-12-06 09:54:35)

Update WatchEvent URL.
Update WatchEvent URL in simulator/docs/api.md.

Signed-off-by: yanghesong <hesong.yang@foxmail.com>

<!--  Thanks for sending a pull request!  Here are some tips for you:

1. If this is your first time, please read our contributor guidelines: https://git.k8s.io/community/contributors/guide/first-contribution.md#your-first-contribution and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request. For reference on required PR/issue labels, read here:
https://git.k8s.io/community/contributors/devel/sig-release/release.md#issuepr-kind-label
3. Ensure you have added or ran the appropriate tests for your PR: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
4. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
5. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
-->

#### What type of PR is this?
/kind documentation
/area simulator
<!--
Add related area tag(s):
/area web
/area simulator
/area scenario

Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature

Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->

#### What this PR does / why we need it:

#### Which issue(s) this PR fixes:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
-->
Fixes #

#### Special notes for your reviewer:



Patch:
diff --git a/README.md b/README.md
index 48867866..9e80196e 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@ Read more about environment variables being used in simulator server
 
 ### Run simulator with Docker
 
-We have [docker-compose.yml](docker-compose.yml) to run the simulator easily. You should install [docker](https://docs.docker.com/engine/install/) and [docker-compose](https://docker-docs.netlify.app/compose/install/) firstly.
+We have [docker-compose.yml](docker-compose.yml) to run the simulator easily.
 
 You can use the following command.
 
diff --git a/simulator/docs/api.md b/simulator/docs/api.md
index cc17b3d0..2fb2819d 100644
--- a/simulator/docs/api.md
+++ b/simulator/docs/api.md
@@ -137,7 +137,7 @@ e.g.)
 
 ### Response
 
-[WatchEvent](/simulator/watcher/streamwriter/streamwriter.go#18)
+[WatchEvent](/simulator/resourcewatcher/streamwriter/streamwriter.go#L18)
 
 | code  | description |
 | ----- | -------- |
diff --git a/simulator/scheduler/config/plugin.go b/simulator/scheduler/config/plugin.go
index 51fc638c..765ba088 100644
--- a/simulator/scheduler/config/plugin.go
+++ b/simulator/scheduler/config/plugin.go
@@ -33,29 +33,6 @@ func OutOfTreeFilterPlugins() []v1beta2.Plugin {
 	}
 }
 
-func RegisteredPostFilterPlugins() ([]v1beta2.Plugin, error) {
-	def, err := InTreePostFilterPluginSet()
-	if err != nil {
-		return nil, xerrors.Errorf("get default post filter plugins: %w", err)
-	}
-	return append(def.Enabled, OutOfTreePostFilterPlugins()...), nil
-}
-
-func InTreePostFilterPluginSet() (v1beta2.PluginSet, error) {
-	defaultConfig, err := DefaultSchedulerConfig()
-	if err != nil || len(defaultConfig.Profiles) != 1 {
-		// default Config should only have default-scheduler configuration.
-		return v1beta2.PluginSet{}, xerrors.Errorf("get default scheduler configuration: %w", err)
-	}
-	return defaultConfig.Profiles[0].Plugins.PostFilter, nil
-}
-
-func OutOfTreePostFilterPlugins() []v1beta2.Plugin {
-	return []v1beta2.Plugin{
-		// Note: add your post filter plugins here.
-	}
-}
-
 // RegisteredScorePlugins returns all registered plugins.
 // in-tree plugins and your original plugins listed in OutOfTreeScorePlugins.
 func RegisteredScorePlugins() ([]v1beta2.Plugin, error) {
diff --git a/simulator/scheduler/plugin/annotation/annotation.go b/simulator/scheduler/plugin/annotation/annotation.go
index 4ed17602..62a0b9a9 100644
--- a/simulator/scheduler/plugin/annotation/annotation.go
+++ b/simulator/scheduler/plugin/annotation/annotation.go
@@ -3,8 +3,6 @@ package annotation
 const (
 	// FilterResultAnnotationKey has the filtering result.
 	FilterResultAnnotationKey = "scheduler-simulator/filter-result"
-
-	PostFilterResultAnnotationKey = "scheduler-simulator/postFilter-result"
 	// ScoreResultAnnotationKey has the scoring result.
 	ScoreResultAnnotationKey = "scheduler-simulator/score-result"
 	// FinalScoreResultAnnotationKey has the final score(= normalized and applied score plugin weight).
diff --git a/simulator/scheduler/plugin/mock/framework.go b/simulator/scheduler/plugin/mock/framework.go
index 55294f19..f0cd39ef 100644
--- a/simulator/scheduler/plugin/mock/framework.go
+++ b/simulator/scheduler/plugin/mock/framework.go
@@ -1,5 +1,5 @@
 // Code generated by MockGen. DO NOT EDIT.
-// Source: k8s.io/kubernetes/pkg/scheduler/framework (interfaces: FilterPlugin,PostFilterPlugin,ScorePlugin,ScoreExtensions)
+// Source: k8s.io/kubernetes/pkg/scheduler/framework (interfaces: FilterPlugin,ScorePlugin,ScoreExtensions)
 
 // Package plugin is a generated GoMock package.
 package plugin
@@ -64,58 +64,6 @@ func (mr *MockFilterPluginMockRecorder) Name() *gomock.Call {
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockFilterPlugin)(nil).Name))
 }
 
-// MockPostFilterPlugin is a mock of PostFilterPlugin interface.
-type MockPostFilterPlugin struct {
-	ctrl     *gomock.Controller
-	recorder *MockPostFilterPluginMockRecorder
-}
-
-// MockPostFilterPluginMockRecorder is the mock recorder for MockPostFilterPlugin.
-type MockPostFilterPluginMockRecorder struct {
-	mock *MockPostFilterPlugin
-}
-
-// NewMockPostFilterPlugin creates a new mock instance.
-func NewMockPostFilterPlugin(ctrl *gomock.Controller) *MockPostFilterPlugin {
-	mock := &MockPostFilterPlugin{ctrl: ctrl}
-	mock.recorder = &MockPostFilterPluginMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockPostFilterPlugin) EXPECT() *MockPostFilterPluginMockRecorder {
-	return m.recorder
-}
-
-// Name mocks base method.
-func (m *MockPostFilterPlugin) Name() string {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Name")
-	ret0, _ := ret[0].(string)
-	return ret0
-}
-
-// Name indicates an expected call of Name.
-func (mr *MockPostFilterPluginMockRecorder) Name() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockPostFilterPlugin)(nil).Name))
-}
-
-// PostFilter mocks base method.
-func (m *MockPostFilterPlugin) PostFilter(arg0 context.Context, arg1 *framework.CycleState, arg2 *v1.Pod, arg3 framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "PostFilter", arg0, arg1, arg2, arg3)
-	ret0, _ := ret[0].(*framework.PostFilterResult)
-	ret1, _ := ret[1].(*framework.Status)
-	return ret0, ret1
-}
-
-// PostFilter indicates an expected call of PostFilter.
-func (mr *MockPostFilterPluginMockRecorder) PostFilter(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PostFilter", reflect.TypeOf((*MockPostFilterPlugin)(nil).PostFilter), arg0, arg1, arg2, arg3)
-}
-
 // MockScorePlugin is a mock of ScorePlugin interface.
 type MockScorePlugin struct {
 	ctrl     *gomock.Controller
diff --git a/simulator/scheduler/plugin/mock/wrappedplugin.go b/simulator/scheduler/plugin/mock/wrappedplugin.go
index e08b03cd..d3983be3 100644
--- a/simulator/scheduler/plugin/mock/wrappedplugin.go
+++ b/simulator/scheduler/plugin/mock/wrappedplugin.go
@@ -1,5 +1,5 @@
 // Code generated by MockGen. DO NOT EDIT.
-// Source: sigs.k8s.io/kube-scheduler-simulator/simulator/scheduler/plugin (interfaces: Store,FilterPluginExtender,PostFilterPluginExtender,ScorePluginExtender,NormalizeScorePluginExtender)
+// Source: sigs.k8s.io/kube-scheduler-simulator/simulator/scheduler/plugin (interfaces: Store,FilterPluginExtender,ScorePluginExtender,NormalizeScorePluginExtender)
 
 // Package plugin is a generated GoMock package.
 package plugin
@@ -60,18 +60,6 @@ func (mr *MockStoreMockRecorder) AddNormalizedScoreResult(arg0, arg1, arg2, arg3
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNormalizedScoreResult", reflect.TypeOf((*MockStore)(nil).AddNormalizedScoreResult), arg0, arg1, arg2, arg3, arg4)
 }
 
-// AddPostFilterResult mocks base method.
-func (m *MockStore) AddPostFilterResult(arg0, arg1, arg2, arg3 string, arg4 []string) {
-	m.ctrl.T.Helper()
-	m.ctrl.Call(m, "AddPostFilterResult", arg0, arg1, arg2, arg3, arg4)
-}
-
-// AddPostFilterResult indicates an expected call of AddPostFilterResult.
-func (mr *MockStoreMockRecorder) AddPostFilterResult(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPostFilterResult", reflect.TypeOf((*MockStore)(nil).AddPostFilterResult), arg0, arg1, arg2, arg3, arg4)
-}
-
 // AddScoreResult mocks base method.
 func (m *MockStore) AddScoreResult(arg0, arg1, arg2, arg3 string, arg4 int64) {
 	m.ctrl.T.Helper()
@@ -135,59 +123,6 @@ func (mr *MockFilterPluginExtenderMockRecorder) BeforeFilter(arg0, arg1, arg2, a
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeforeFilter", reflect.TypeOf((*MockFilterPluginExtender)(nil).BeforeFilter), arg0, arg1, arg2, arg3)
 }
 
-// MockPostFilterPluginExtender is a mock of PostFilterPluginExtender interface.
-type MockPostFilterPluginExtender struct {
-	ctrl     *gomock.Controller
-	recorder *MockPostFilterPluginExtenderMockRecorder
-}
-
-// MockPostFilterPluginExtenderMockRecorder is the mock recorder for MockPostFilterPluginExtender.
-type MockPostFilterPluginExtenderMockRecorder struct {
-	mock *MockPostFilterPluginExtender
-}
-
-// NewMockPostFilterPluginExtender creates a new mock instance.
-func NewMockPostFilterPluginExtender(ctrl *gomock.Controller) *MockPostFilterPluginExtender {
-	mock := &MockPostFilterPluginExtender{ctrl: ctrl}
-	mock.recorder = &MockPostFilterPluginExtenderMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockPostFilterPluginExtender) EXPECT() *MockPostFilterPluginExtenderMockRecorder {
-	return m.recorder
-}
-
-// AfterPostFilter mocks base method.
-func (m *MockPostFilterPluginExtender) AfterPostFilter(arg0 context.Context, arg1 *framework.CycleState, arg2 *v1.Pod, arg3 framework.NodeToStatusMap, arg4 *framework.PostFilterResult, arg5 *framework.Status) (*framework.PostFilterResult, *framework.Status) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "AfterPostFilter", arg0, arg1, arg2, arg3, arg4, arg5)
-	ret0, _ := ret[0].(*framework.PostFilterResult)
-	ret1, _ := ret[1].(*framework.Status)
-	return ret0, ret1
-}
-
-// AfterPostFilter indicates an expected call of AfterPostFilter.
-func (mr *MockPostFilterPluginExtenderMockRecorder) AfterPostFilter(arg0, arg1, arg2, arg3, arg4, arg5 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AfterPostFilter", reflect.TypeOf((*MockPostFilterPluginExtender)(nil).AfterPostFilter), arg0, arg1, arg2, arg3, arg4, arg5)
-}
-
-// BeforePostFilter mocks base method.
-func (m *MockPostFilterPluginExtender) BeforePostFilter(arg0 context.Context, arg1 *framework.CycleState, arg2 *v1.Pod, arg3 framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "BeforePostFilter", arg0, arg1, arg2, arg3)
-	ret0, _ := ret[0].(*framework.PostFilterResult)
-	ret1, _ := ret[1].(*framework.Status)
-	return ret0, ret1
-}
-
-// BeforePostFilter indicates an expected call of BeforePostFilter.
-func (mr *MockPostFilterPluginExtenderMockRecorder) BeforePostFilter(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BeforePostFilter", reflect.TypeOf((*MockPostFilterPluginExtender)(nil).BeforePostFilter), arg0, arg1, arg2, arg3)
-}
-
 // MockScorePluginExtender is a mock of ScorePluginExtender interface.
 type MockScorePluginExtender struct {
 	ctrl     *gomock.Controller
diff --git a/simulator/scheduler/plugin/plugins.go b/simulator/scheduler/plugin/plugins.go
index 0a87516c..fd3250fe 100644
--- a/simulator/scheduler/plugin/plugins.go
+++ b/simulator/scheduler/plugin/plugins.go
@@ -31,7 +31,7 @@ func NewRegistry(informerFactory informers.SharedInformerFactory, client clients
 		}
 	}
 
-	registeredpls, err := registeredPlugins()
+	registeredpls, err := registeredFilterScorePlugins()
 	if err != nil {
 		return nil, xerrors.Errorf("get default score/filter plugins: %w", err)
 	}
@@ -142,7 +142,7 @@ func NewPluginConfig(pc []v1beta2.PluginConfig) ([]v1beta2.PluginConfig, error)
 		})
 	}
 
-	defaultpls, err := registeredPlugins()
+	defaultpls, err := registeredFilterScorePlugins()
 	if err != nil {
 		return nil, xerrors.Errorf("get default score/filter plugins: %w", err)
 	}
@@ -171,40 +171,45 @@ func NewPluginConfig(pc []v1beta2.PluginConfig) ([]v1beta2.PluginConfig, error)
 func ConvertForSimulator(pls *v1beta2.Plugins) (*v1beta2.Plugins, error) {
 	newpls := pls.DeepCopy()
 
-	if err := applyPluingSet(&newpls.Score, pls.Score, config.InTreeScorePluginSet); err != nil {
-		return nil, xerrors.Errorf("merge Score plugins: %w", err)
+	defaultScorePls, err := config.InTreeScorePluginSet()
+	if err != nil {
+		return nil, xerrors.Errorf("get default score plugins: %w", err)
 	}
+	merged := mergePluginSet(defaultScorePls, pls.Score)
 
-	if err := applyPluingSet(&newpls.Filter, pls.Filter, config.InTreeFilterPluginSet); err != nil {
-		return nil, xerrors.Errorf("merge Filter plugins: %w", err)
+	retscorepls := make([]v1beta2.Plugin, 0, len(merged.Enabled))
+	for _, p := range merged.Enabled {
+		retscorepls = append(retscorepls, v1beta2.Plugin{Name: pluginName(p.Name), Weight: p.Weight})
 	}
+	newpls.Score.Enabled = retscorepls
 
-	if err := applyPluingSet(&newpls.PostFilter, pls.PostFilter, config.InTreePostFilterPluginSet); err != nil {
-		return nil, xerrors.Errorf("merge PostFilter plugins: %w", err)
+	// disable default plugins whatever scheduler configuration value is
+	newpls.Score.Disabled = []v1beta2.Plugin{
+		{
+			Name: "*",
+		},
 	}
-	return newpls, nil
-}
 
-// applyPluingSet merges inTree and outOfTree PluginSet and enables it.
-func applyPluingSet(targetPlsSet *v1beta2.PluginSet, plsSet v1beta2.PluginSet, inTreePluginSet func() (v1beta2.PluginSet, error)) error {
-	inTreePls, err := inTreePluginSet()
+	defaultFilterPls, err := config.InTreeFilterPluginSet()
 	if err != nil {
-		return xerrors.Errorf("get inTree plugins: %w", err)
+		return nil, xerrors.Errorf("get default score plugins: %w", err)
 	}
-	merged := mergePluginSet(inTreePls, plsSet)
+	merged = mergePluginSet(defaultFilterPls, pls.Filter)
 
-	retpls := make([]v1beta2.Plugin, 0, len(merged.Enabled))
+	retfilterpls := make([]v1beta2.Plugin, 0, len(merged.Enabled))
 	for _, p := range merged.Enabled {
-		retpls = append(retpls, v1beta2.Plugin{Name: pluginName(p.Name), Weight: p.Weight})
+		retfilterpls = append(retfilterpls, v1beta2.Plugin{Name: pluginName(p.Name), Weight: p.Weight})
 	}
-	targetPlsSet.Enabled = retpls
+	newpls.Filter.Enabled = retfilterpls
+
 	// disable default plugins whatever scheduler configuration value is
-	targetPlsSet.Disabled = []v1beta2.Plugin{
+	newpls.Filter.Disabled = []v1beta2.Plugin{
 		{
 			Name: "*",
 		},
 	}
-	return nil
+
+	return newpls, nil
 }
 
 // mergePluginsSet merges two plugin sets.
@@ -253,19 +258,16 @@ func mergePluginSet(inTreePluginSet, outOfTreePluginSet v1beta2.PluginSet) v1bet
 	return v1beta2.PluginSet{Enabled: enabledPlugins}
 }
 
-// registeredPlugins returns all registered score plugin and filter plugin.
-func registeredPlugins() ([]v1beta2.Plugin, error) {
+// registeredFilterScorePlugins returns all registered score plugin and filter plugin.
+func registeredFilterScorePlugins() ([]v1beta2.Plugin, error) {
 	registeredfilterpls, err := config.RegisteredFilterPlugins()
 	if err != nil {
 		return nil, xerrors.Errorf("get registered filter plugins: %w", err)
 	}
-	registerdpostfilterpls, err := config.RegisteredPostFilterPlugins()
-	if err != nil {
-		return nil, xerrors.Errorf("get registered postFilter plugins: %w", err)
-	}
 	registeredscorepls, err := config.RegisteredScorePlugins()
 	if err != nil {
 		return nil, xerrors.Errorf("get registered score plugins: %w", err)
 	}
-	return append(append(registeredscorepls, registerdpostfilterpls...), registeredfilterpls...), nil
+
+	return append(registeredscorepls, registeredfilterpls...), nil
 }
diff --git a/simulator/scheduler/plugin/resultstore/store.go b/simulator/scheduler/plugin/resultstore/store.go
index 01aaff73..ae50f368 100644
--- a/simulator/scheduler/plugin/resultstore/store.go
+++ b/simulator/scheduler/plugin/resultstore/store.go
@@ -31,8 +31,6 @@ type Store struct {
 const (
 	// PassedFilterMessage is used when node pass the filter plugin.
 	PassedFilterMessage = "passed"
-	// PostFilterNominatedMessage  is used when a postFilter plugin returns success.
-	PostFilterNominatedMessage = "schedulable"
 )
 
 // result has a scheduling result of pod.
@@ -48,9 +46,6 @@ type result struct {
 	// When node pass the filter, filtering result will be PassedFilterMessage.
 	// When node blocked by the filter, filtering result is blocked reason.
 	filter map[string]map[string]string
-
-	// node name → plugin name → post filtering result
-	postFilter map[string]map[string]string
 }
 
 func New(informerFactory informers.SharedInformerFactory, client clientset.Interface, scorePluginWeight map[string]int32) *Store {
@@ -87,7 +82,6 @@ func newData() *result {
 		score:      map[string]map[string]string{},
 		finalscore: map[string]map[string]string{},
 		filter:     map[string]map[string]string{},
-		postFilter: map[string]map[string]string{},
 	}
 	return d
 }
@@ -114,11 +108,6 @@ func (s *Store) addSchedulingResultToPod(_, newObj interface{}) {
 		return
 	}
 
-	if err := s.addPostFilterResultToPod(pod); err != nil {
-		klog.Errorf("failed to add post filtering result to pod: %+v", err)
-		return
-	}
-
 	if err := s.addScoreResultToPod(pod); err != nil {
 		klog.Errorf("failed to add scoring result to pod: %+v", err)
 		return
@@ -157,16 +146,6 @@ func (s *Store) addFilterResultToPod(pod *v1.Pod) error {
 	return nil
 }
 
-func (s *Store) addPostFilterResultToPod(pod *v1.Pod) error {
-	k := newKey(pod.Namespace, pod.Name)
-	result, err := json.Marshal(s.results[k].postFilter)
-	if err != nil {
-		return xerrors.Errorf("encode json to record post filter results: %w", err)
-	}
-	metav1.SetMetaDataAnnotation(&pod.ObjectMeta, annotation.PostFilterResultAnnotationKey, string(result))
-	return nil
-}
-
 func (s *Store) addScoreResultToPod(pod *v1.Pod) error {
 	k := newKey(pod.Namespace, pod.Name)
 	scores, err := json.Marshal(s.results[k].score)
@@ -206,27 +185,6 @@ func (s *Store) AddFilterResult(namespace, podName, nodeName, pluginName, reason
 	s.results[k].filter[nodeName][pluginName] = reason
 }
 
-// AddPostFilterResult adds post filter result to the pod annotaiton.
-//   - nominatedNodeName represents the node name which nominated by the postFilter plugin.
-//     Otherwise, the string "" would be stored in this arg.
-func (s *Store) AddPostFilterResult(namespace, podName, nominatedNodeName, pluginName string, nodeNames []string) {
-	s.mu.Lock()
-	defer s.mu.Unlock()
-
-	k := newKey(namespace, podName)
-	if _, ok := s.results[k]; !ok {
-		s.results[k] = newData()
-	}
-	for _, nodeName := range nodeNames {
-		if _, ok := s.results[k].postFilter[nodeName]; !ok {
-			s.results[k].postFilter[nodeName] = map[string]string{}
-		}
-		if nodeName == nominatedNodeName {
-			s.results[k].postFilter[nodeName][pluginName] = PostFilterNominatedMessage
-		}
-	}
-}
-
 // AddScoreResult adds scoring result to pod annotation.
 func (s *Store) AddScoreResult(namespace, podName, nodeName, pluginName string, score int64) {
 	s.mu.Lock()
diff --git a/simulator/scheduler/plugin/wrappedplugin.go b/simulator/scheduler/plugin/wrappedplugin.go
index 8b74e8aa..85cec0a9 100644
--- a/simulator/scheduler/plugin/wrappedplugin.go
+++ b/simulator/scheduler/plugin/wrappedplugin.go
@@ -10,13 +10,12 @@ import (
 	schedulingresultstore "sigs.k8s.io/kube-scheduler-simulator/simulator/scheduler/plugin/resultstore"
 )
 
-//go:generate mockgen --build_flags=--mod=mod -destination=./mock/$GOFILE -package=plugin . Store,FilterPluginExtender,PostFilterPluginExtender,ScorePluginExtender,NormalizeScorePluginExtender
-//go:generate mockgen --build_flags=--mod=mod -destination=./mock/framework.go -package=plugin k8s.io/kubernetes/pkg/scheduler/framework FilterPlugin,PostFilterPlugin,ScorePlugin,ScoreExtensions
+//go:generate mockgen --build_flags=--mod=mod -destination=./mock/$GOFILE -package=plugin . Store,FilterPluginExtender,ScorePluginExtender,NormalizeScorePluginExtender
+//go:generate mockgen --build_flags=--mod=mod -destination=./mock/framework.go -package=plugin k8s.io/kubernetes/pkg/scheduler/framework FilterPlugin,ScorePlugin,ScoreExtensions
 type Store interface {
 	AddNormalizedScoreResult(namespace, podName, nodeName, pluginName string, normalizedscore int64)
 	AddFilterResult(namespace, podName, nodeName, pluginName, reason string)
 	AddScoreResult(namespace, podName, nodeName, pluginName string, score int64)
-	AddPostFilterResult(namespace, podName, nominatedNodeName, pluginName string, nodeNames []string)
 }
 
 // FilterPluginExtender is the extender for Filter plugin.
@@ -29,15 +28,6 @@ type FilterPluginExtender interface {
 	AfterFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo, filterResult *framework.Status) *framework.Status
 }
 
-type PostFilterPluginExtender interface {
-	// BeforePostFilter is a function that is run before the PostFilter method of the original plugin.
-	// If BeforePostFilter return non-success status, the simulator plugin doesn't run the PostFilter method of the original plugin and return that status.
-	BeforePostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status)
-	// AfterPostFilter is a function that is run after the PostFilter method of the original plugin.
-	// A PostFilter of the simulator plugin finally returns the status returned from PostFilter.
-	AfterPostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap, postFilterResult *framework.PostFilterResult, status *framework.Status) (*framework.PostFilterResult, *framework.Status)
-}
-
 // ScorePluginExtender is the extender for Score plugin.
 type ScorePluginExtender interface {
 	// BeforeScore is a function that runs before the Score method of the original plugin.
@@ -63,7 +53,6 @@ type NormalizeScorePluginExtender interface {
 // and you can check/modify requests and/or results.
 type Extenders struct {
 	FilterPluginExtender         FilterPluginExtender
-	PostFilterPluginExtender     PostFilterPluginExtender
 	ScorePluginExtender          ScorePluginExtender
 	NormalizeScorePluginExtender NormalizeScorePluginExtender
 }
@@ -119,10 +108,8 @@ type wrappedPlugin struct {
 	// You can change this name by WithPluginNameOption.
 	name                         string
 	originalFilterPlugin         framework.FilterPlugin
-	originalPostFilterPlugin     framework.PostFilterPlugin
 	originalScorePlugin          framework.ScorePlugin
 	filterPluginExtender         FilterPluginExtender
-	postFilterPluginExtender     PostFilterPluginExtender
 	scorePluginExtender          ScorePluginExtender
 	normalizeScorePluginExtender NormalizeScorePluginExtender
 	weight                       int32
@@ -156,9 +143,6 @@ func NewWrappedPlugin(s Store, p framework.Plugin, opts ...Option) framework.Plu
 	if options.extenderOption.FilterPluginExtender != nil {
 		plg.filterPluginExtender = options.extenderOption.FilterPluginExtender
 	}
-	if options.extenderOption.PostFilterPluginExtender != nil {
-		plg.postFilterPluginExtender = options.extenderOption.PostFilterPluginExtender
-	}
 	if options.extenderOption.ScorePluginExtender != nil {
 		plg.scorePluginExtender = options.extenderOption.ScorePluginExtender
 	}
@@ -170,10 +154,7 @@ func NewWrappedPlugin(s Store, p framework.Plugin, opts ...Option) framework.Plu
 	if ok {
 		plg.originalFilterPlugin = fp
 	}
-	pfp, ok := p.(framework.PostFilterPlugin)
-	if ok {
-		plg.originalPostFilterPlugin = pfp
-	}
+
 	sp, ok := p.(framework.ScorePlugin)
 	if ok {
 		plg.originalScorePlugin = sp
@@ -282,31 +263,3 @@ func (w *wrappedPlugin) Filter(ctx context.Context, state *framework.CycleState,
 	}
 	return s
 }
-
-func (w *wrappedPlugin) PostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	if w.originalPostFilterPlugin == nil {
-		// return nil not to affect post filtering.
-		return nil, nil
-	}
-	if w.postFilterPluginExtender != nil {
-		r, s := w.postFilterPluginExtender.BeforePostFilter(ctx, state, pod, filteredNodeStatusMap)
-		if !s.IsSuccess() {
-			return r, s
-		}
-	}
-	r, s := w.originalPostFilterPlugin.PostFilter(ctx, state, pod, filteredNodeStatusMap)
-	var nominatedNodeName string
-	if s.IsSuccess() {
-		nominatedNodeName = r.NominatedNodeName
-	}
-	nodeNames := make([]string, 0, len(filteredNodeStatusMap))
-	for k := range filteredNodeStatusMap {
-		nodeNames = append(nodeNames, k)
-	}
-	w.store.AddPostFilterResult(pod.Namespace, pod.Name, nominatedNodeName, w.originalPostFilterPlugin.Name(), nodeNames)
-
-	if w.postFilterPluginExtender != nil {
-		return w.postFilterPluginExtender.AfterPostFilter(ctx, state, pod, filteredNodeStatusMap, r, s)
-	}
-	return r, s
-}
diff --git a/web/README.md b/web/README.md
index 2b1c2ceb..61f6b83d 100644
--- a/web/README.md
+++ b/web/README.md
@@ -8,7 +8,6 @@ You have to install node.js and yarn.
 
 - for yarn, see: [Installation | Yarn](https://classic.yarnpkg.com/en/docs/install/#mac-stable)
 - for node.js, see: [Downloads | Node.js](https://nodejs.org/en/download/)
-  Note: Nodejs 16 is suggested, other version may cause problems.
 
 ### Build Setup
 


Test patch:
diff --git a/simulator/scheduler/plugin/plugins_test.go b/simulator/scheduler/plugin/plugins_test.go
index bce27050..315bf8ef 100644
--- a/simulator/scheduler/plugin/plugins_test.go
+++ b/simulator/scheduler/plugin/plugins_test.go
@@ -42,11 +42,6 @@ func TestConvertForSimulator(t *testing.T) {
 						{Name: "VolumeRestrictions"},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Disabled: []v1beta2.Plugin{
-						{Name: "DefaultPreemption"},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Disabled: []v1beta2.Plugin{
 						{Name: "NodeResourcesFit"},
@@ -69,14 +64,6 @@ func TestConvertForSimulator(t *testing.T) {
 						},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Enabled: []v1beta2.Plugin{},
-					Disabled: []v1beta2.Plugin{
-						{
-							Name: "*",
-						},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Enabled: []v1beta2.Plugin{
 						{Name: "PodTopologySpreadWrapped", Weight: &weight2},
@@ -99,11 +86,6 @@ func TestConvertForSimulator(t *testing.T) {
 						{Name: "*"},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Disabled: []v1beta2.Plugin{
-						{Name: "*"},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Disabled: []v1beta2.Plugin{
 						{Name: "NodeResourcesFit"},
@@ -123,14 +105,6 @@ func TestConvertForSimulator(t *testing.T) {
 						},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Enabled: []v1beta2.Plugin{},
-					Disabled: []v1beta2.Plugin{
-						{
-							Name: "*",
-						},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Enabled: []v1beta2.Plugin{
 						{Name: "PodTopologySpreadWrapped", Weight: &weight2},
@@ -158,16 +132,6 @@ func TestConvertForSimulator(t *testing.T) {
 						},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Enabled: []v1beta2.Plugin{
-						{Name: "CustomPlugin1"},
-					},
-					Disabled: []v1beta2.Plugin{
-						{
-							Name: "*",
-						},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Enabled: []v1beta2.Plugin{
 						{Name: "CustomPlugin1"},
@@ -192,16 +156,6 @@ func TestConvertForSimulator(t *testing.T) {
 						},
 					},
 				},
-				PostFilter: v1beta2.PluginSet{
-					Enabled: []v1beta2.Plugin{
-						{Name: "CustomPlugin1Wrapped"},
-					},
-					Disabled: []v1beta2.Plugin{
-						{
-							Name: "*",
-						},
-					},
-				},
 				Score: v1beta2.PluginSet{
 					Enabled: []v1beta2.Plugin{
 						{Name: "PodTopologySpreadWrapped", Weight: &weight2},
@@ -253,7 +207,7 @@ func Test_NewPluginConfig(t *testing.T) {
 			wantErr: false,
 		},
 		{
-			name: "success with plugin config of postFilter",
+			name: "success with plugin config of not filter/score",
 			pc: []v1beta2.PluginConfig{
 				{
 					Name: "DefaultPreemption",
@@ -272,35 +226,22 @@ func Test_NewPluginConfig(t *testing.T) {
 			want: func() []v1beta2.PluginConfig {
 				pc := defaultPluginConfig()
 				for i := range pc {
-					if pc[i].Name == "DefaultPreemption" {
-						pc[i] = v1beta2.PluginConfig{
-							Name: "DefaultPreemption",
-							Args: runtime.RawExtension{
-								Object: &v1beta2.DefaultPreemptionArgs{
-									TypeMeta: metav1.TypeMeta{
-										Kind:       "DefaultPreemptionArgs",
-										APIVersion: "kubescheduler.config.k8s.io/v1beta2",
-									},
-									MinCandidateNodesPercentage: &minCandidateNodesPercentage,
-									MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
-								},
-							},
-						}
+					if pc[i].Name != "DefaultPreemption" {
+						continue
 					}
-					if pc[i].Name == "DefaultPreemptionWrapped" {
-						pc[i] = v1beta2.PluginConfig{
-							Name: "DefaultPreemptionWrapped",
-							Args: runtime.RawExtension{
-								Object: &v1beta2.DefaultPreemptionArgs{
-									TypeMeta: metav1.TypeMeta{
-										Kind:       "DefaultPreemptionArgs",
-										APIVersion: "kubescheduler.config.k8s.io/v1beta2",
-									},
-									MinCandidateNodesPercentage: &minCandidateNodesPercentage,
-									MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
+
+					pc[i] = v1beta2.PluginConfig{
+						Name: "DefaultPreemption",
+						Args: runtime.RawExtension{
+							Object: &v1beta2.DefaultPreemptionArgs{
+								TypeMeta: metav1.TypeMeta{
+									Kind:       "DefaultPreemptionArgs",
+									APIVersion: "kubescheduler.config.k8s.io/v1beta2",
 								},
+								MinCandidateNodesPercentage: &minCandidateNodesPercentage,
+								MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
 							},
-						}
+						},
 					}
 				}
 
@@ -326,7 +267,6 @@ func Test_NewPluginConfig(t *testing.T) {
 			},
 			want: func() []v1beta2.PluginConfig {
 				pc := defaultPluginConfig()
-				var defaultMinCandidateNodesPercentage int32 = 10
 				for i := range pc {
 					if pc[i].Name == "InterPodAffinity" {
 						pc[i] = v1beta2.PluginConfig{
@@ -356,36 +296,6 @@ func Test_NewPluginConfig(t *testing.T) {
 							},
 						}
 					}
-					if pc[i].Name == "DefaultPreemption" {
-						pc[i] = v1beta2.PluginConfig{
-							Name: "DefaultPreemption",
-							Args: runtime.RawExtension{
-								Object: &v1beta2.DefaultPreemptionArgs{
-									TypeMeta: metav1.TypeMeta{
-										Kind:       "DefaultPreemptionArgs",
-										APIVersion: "kubescheduler.config.k8s.io/v1beta2",
-									},
-									MinCandidateNodesPercentage: &defaultMinCandidateNodesPercentage,
-									MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
-								},
-							},
-						}
-					}
-					if pc[i].Name == "DefaultPreemptionWrapped" {
-						pc[i] = v1beta2.PluginConfig{
-							Name: "DefaultPreemptionWrapped",
-							Args: runtime.RawExtension{
-								Object: &v1beta2.DefaultPreemptionArgs{
-									TypeMeta: metav1.TypeMeta{
-										Kind:       "DefaultPreemptionArgs",
-										APIVersion: "kubescheduler.config.k8s.io/v1beta2",
-									},
-									MinCandidateNodesPercentage: &defaultMinCandidateNodesPercentage,
-									MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
-								},
-							},
-						}
-					}
 				}
 
 				return pc
@@ -534,7 +444,7 @@ func Test_NewPluginConfig(t *testing.T) {
 	}
 }
 
-func Test_defaultRegisteredPlugins(t *testing.T) {
+func Test_defaultFilterScorePlugins(t *testing.T) {
 	t.Parallel()
 	var weight1 int32 = 1
 	var weight2 int32 = 2
@@ -553,7 +463,6 @@ func Test_defaultRegisteredPlugins(t *testing.T) {
 				{Name: "NodeAffinity", Weight: &weight1},
 				{Name: "PodTopologySpread", Weight: &weight2},
 				{Name: "TaintToleration", Weight: &weight1},
-				{Name: "DefaultPreemption"},
 				{Name: "NodeUnschedulable"},
 				{Name: "NodeName"},
 				{Name: "TaintToleration"},
@@ -577,9 +486,9 @@ func Test_defaultRegisteredPlugins(t *testing.T) {
 		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			got, err := registeredPlugins()
+			got, err := registeredFilterScorePlugins()
 			if (err != nil) != tt.wantErr {
-				t.Errorf("registeredPlugins() error = %v, wantErr %v", err, tt.wantErr)
+				t.Errorf("registeredFilterScorePlugins() error = %v, wantErr %v", err, tt.wantErr)
 				return
 			}
 			assert.Equal(t, tt.want, got)
@@ -699,19 +608,6 @@ func defaultPluginConfig() []v1beta2.PluginConfig {
 				},
 			},
 		},
-		{
-			Name: "DefaultPreemptionWrapped",
-			Args: runtime.RawExtension{
-				Object: &v1beta2.DefaultPreemptionArgs{
-					TypeMeta: metav1.TypeMeta{
-						Kind:       "DefaultPreemptionArgs",
-						APIVersion: "kubescheduler.config.k8s.io/v1beta2",
-					},
-					MinCandidateNodesPercentage: &minCandidateNodesPercentage,
-					MinCandidateNodesAbsolute:   &minCandidateNodesAbsolute,
-				},
-			},
-		},
 		{
 			Name: "NodeResourcesBalancedAllocationWrapped",
 			Args: runtime.RawExtension{
diff --git a/simulator/scheduler/plugin/resultstore/store_test.go b/simulator/scheduler/plugin/resultstore/store_test.go
index a611d2c3..8820ccb1 100644
--- a/simulator/scheduler/plugin/resultstore/store_test.go
+++ b/simulator/scheduler/plugin/resultstore/store_test.go
@@ -48,7 +48,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 							"plugin1": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 		},
@@ -63,7 +62,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 							"plugin1": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 			args: args{
@@ -83,7 +81,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 							"plugin2": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 		},
@@ -98,7 +95,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 							"plugin1": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 			args: args{
@@ -120,7 +116,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 							"plugin1": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 		},
@@ -139,127 +134,6 @@ func TestStore_AddFilterResult(t *testing.T) {
 	}
 }
 
-func TestStore_AddPostFilterResult(t *testing.T) {
-	t.Parallel()
-	type args struct {
-		namespace         string
-		podName           string
-		nominatedNodeName string
-		pluginName        string
-		nodeNames         []string
-	}
-	tests := []struct {
-		name          string
-		resultbefore  map[key]*result
-		args          args
-		wantResultMap map[key]*result
-	}{
-		{
-			name:         "success with empty result",
-			resultbefore: map[key]*result{},
-			args: args{
-				namespace:         "default",
-				podName:           "pod1",
-				nominatedNodeName: "node1",
-				pluginName:        "plugin1",
-				nodeNames:         []string{"node1", "node2"},
-			},
-			wantResultMap: map[key]*result{
-				"default/pod1": {
-					score:      map[string]map[string]string{},
-					finalscore: map[string]map[string]string{},
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{
-						"node1": {
-							"plugin1": PostFilterNominatedMessage,
-						},
-						"node2": {},
-					},
-				},
-			},
-		},
-		{
-			name: "success with non-empty postFilter map for the node",
-			resultbefore: map[key]*result{
-				"default/pod1": {
-					score:      map[string]map[string]string{},
-					finalscore: map[string]map[string]string{},
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{
-						"node1": {},
-					},
-				},
-			},
-			args: args{
-				namespace:         "default",
-				podName:           "pod1",
-				nominatedNodeName: "node1",
-				pluginName:        "plugin2",
-				nodeNames:         []string{"node1", "node2"},
-			},
-			wantResultMap: map[key]*result{
-				"default/pod1": {
-					score:      map[string]map[string]string{},
-					finalscore: map[string]map[string]string{},
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{
-						"node1": {
-							"plugin2": PostFilterNominatedMessage,
-						},
-						"node2": {},
-					},
-				},
-			},
-		},
-		{
-			name: "success when no map for the node",
-			resultbefore: map[key]*result{
-				"default/pod1": {
-					score:      map[string]map[string]string{},
-					finalscore: map[string]map[string]string{},
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{
-						"node0": {},
-					},
-				},
-			},
-			args: args{
-				namespace:         "default",
-				podName:           "pod1",
-				nominatedNodeName: "node1",
-				pluginName:        "plugin2",
-				nodeNames:         []string{"node1", "node2"},
-			},
-			wantResultMap: map[key]*result{
-				"default/pod1": {
-					score:      map[string]map[string]string{},
-					finalscore: map[string]map[string]string{},
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{
-						"node0": {},
-						"node1": {
-							"plugin2": PostFilterNominatedMessage,
-						},
-						"node2": {},
-					},
-				},
-			},
-		},
-	}
-	for _, tt := range tests {
-		tt := tt
-		t.Run(tt.name, func(t *testing.T) {
-			t.Parallel()
-			s := &Store{
-				mu:      new(sync.Mutex),
-				results: tt.resultbefore,
-			}
-			s.AddPostFilterResult(tt.args.namespace, tt.args.podName, tt.args.nominatedNodeName, tt.args.pluginName, tt.args.nodeNames)
-			assert.Equal(t, tt.wantResultMap, s.results)
-		})
-	}
-}
-
 func TestStore_AddScoreResult(t *testing.T) {
 	t.Parallel()
 	type args struct {
@@ -289,8 +163,7 @@ func TestStore_AddScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "20",
@@ -308,8 +181,7 @@ func TestStore_AddScoreResult(t *testing.T) {
 			name: "success with non-empty filter map for the node",
 			resultbefore: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "30",
@@ -332,8 +204,7 @@ func TestStore_AddScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "30",
@@ -353,8 +224,7 @@ func TestStore_AddScoreResult(t *testing.T) {
 			name: "success when no map for the node",
 			resultbefore: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node0": {
 							"plugin1": "20",
@@ -377,8 +247,7 @@ func TestStore_AddScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node0": {
 							"plugin1": "20",
@@ -443,9 +312,8 @@ func TestStore_AddNormalizedScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
-					score:      map[string]map[string]string{},
+					filter: map[string]map[string]string{},
+					score:  map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "20",
@@ -458,8 +326,7 @@ func TestStore_AddNormalizedScoreResult(t *testing.T) {
 			name: "success with non-empty filter map for the node",
 			resultbefore: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "30",
@@ -477,8 +344,7 @@ func TestStore_AddNormalizedScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node1": {
 							"plugin1": "30",
@@ -492,8 +358,7 @@ func TestStore_AddNormalizedScoreResult(t *testing.T) {
 			name: "success when no map for the node",
 			resultbefore: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node0": {
 							"plugin1": "20",
@@ -511,8 +376,7 @@ func TestStore_AddNormalizedScoreResult(t *testing.T) {
 			},
 			wantResultMap: map[key]*result{
 				"default/pod1": {
-					filter:     map[string]map[string]string{},
-					postFilter: map[string]map[string]string{},
+					filter: map[string]map[string]string{},
 					finalscore: map[string]map[string]string{
 						"node0": {
 							"plugin1": "20",
@@ -573,12 +437,6 @@ func TestStore_addSchedulingResultToPod(t *testing.T) {
 							"plugin1": "20",
 						},
 					},
-					postFilter: map[string]map[string]string{
-						"node0": {
-							"plugin1": PostFilterNominatedMessage,
-						},
-						"node1": {},
-					},
 					score: map[string]map[string]string{
 						"node0": {
 							"plugin1": "10",
@@ -647,16 +505,6 @@ func TestStore_addSchedulingResultToPod(t *testing.T) {
 							d, _ := json.Marshal(r)
 							return string(d)
 						}(),
-						annotation.PostFilterResultAnnotationKey: func() string {
-							r := map[string]map[string]string{
-								"node0": {
-									"plugin1": PostFilterNominatedMessage,
-								},
-								"node1": {},
-							}
-							d, _ := json.Marshal(r)
-							return string(d)
-						}(),
 					},
 				},
 			},
@@ -704,7 +552,6 @@ func TestStore_addSchedulingResultToPod(t *testing.T) {
 							"plugin1": PassedFilterMessage,
 						},
 					},
-					postFilter: map[string]map[string]string{},
 				},
 			},
 			prepareFakeClientSetFn: func() *fake.Clientset {
@@ -743,7 +590,6 @@ func TestStore_addSchedulingResultToPod(t *testing.T) {
 						}(),
 						annotation.ScoreResultAnnotationKey:      "{}",
 						annotation.FinalScoreResultAnnotationKey: "{}",
-						annotation.PostFilterResultAnnotationKey: "{}",
 					},
 				},
 			},
diff --git a/simulator/scheduler/plugin/wrappedplugin_test.go b/simulator/scheduler/plugin/wrappedplugin_test.go
index 60c65016..86c69b29 100644
--- a/simulator/scheduler/plugin/wrappedplugin_test.go
+++ b/simulator/scheduler/plugin/wrappedplugin_test.go
@@ -3,7 +3,6 @@ package plugin
 import (
 	"context"
 	"errors"
-	"sort"
 	"testing"
 
 	"github.com/golang/mock/gomock"
@@ -46,21 +45,6 @@ func Test_NewWrappedPlugin(t *testing.T) {
 				store:                store,
 			},
 		},
-		{
-			name: "success with postFilter plugin & default weight is set to 0",
-			args: args{
-				s: store,
-				p: fakePostFilterPlugin{},
-			},
-			want: &wrappedPlugin{
-				name:                     "fakePostFilterPluginWrapped",
-				originalFilterPlugin:     nil,
-				originalPostFilterPlugin: fakePostFilterPlugin{},
-				originalScorePlugin:      nil,
-				weight:                   0,
-				store:                    store,
-			},
-		},
 		{
 			name: "success with score plugin & default weight is set to 0",
 			args: args{
@@ -76,18 +60,17 @@ func Test_NewWrappedPlugin(t *testing.T) {
 			},
 		},
 		{
-			name: "success with score/filter/postFilter plugin & default weight is set to 0",
+			name: "success with score/filter plugin & default weight is set to 0",
 			args: args{
 				s: store,
-				p: fakeWrappedPlugin{},
+				p: fakeFilterScorePlugin{},
 			},
 			want: &wrappedPlugin{
-				name:                     "fakeWrappedPluginWrapped",
-				originalFilterPlugin:     fakeWrappedPlugin{},
-				originalScorePlugin:      fakeWrappedPlugin{},
-				originalPostFilterPlugin: fakeWrappedPlugin{},
-				weight:                   0,
-				store:                    store,
+				name:                 "fakeFilterScorePluginWrapped",
+				originalFilterPlugin: fakeFilterScorePlugin{},
+				originalScorePlugin:  fakeFilterScorePlugin{},
+				weight:               0,
+				store:                store,
 			},
 		},
 	}
@@ -269,9 +252,9 @@ func Test_wrappedPlugin_Filter(t *testing.T) {
 		{
 			name: "fail when original plugin return non-success",
 			prepareStoreFn: func(m *mock_plugin.MockStore) {
-				m.EXPECT().AddFilterResult("default", "pod1", "node1", "fakeMustFailWrappedPlugin", "filter failed")
+				m.EXPECT().AddFilterResult("default", "pod1", "node1", "fakeMustFailFilterScorePlugin", "filter failed")
 			},
-			originalFilterPlugin: fakeMustFailWrappedPlugin{},
+			originalFilterPlugin: fakeMustFailFilterScorePlugin{},
 			args: args{
 				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
 				nodeInfo: func() *framework.NodeInfo {
@@ -423,269 +406,6 @@ func Test_wrappedPlugin_Filter_WithPluginExtender(t *testing.T) {
 	}
 }
 
-func Test_wrappedPlugin_PostFilter(t *testing.T) {
-	t.Parallel()
-
-	type args struct {
-		pod                   *v1.Pod
-		filteredNodeStatusMap framework.NodeToStatusMap
-	}
-	tests := []struct {
-		name                     string
-		prepareStoreFn           func(m *mock_plugin.MockStore)
-		originalPostFilterPlugin framework.PostFilterPlugin
-		args                     args
-		wantResult               *framework.PostFilterResult
-		wantStatus               *framework.Status
-	}{
-		{
-			name: "success",
-			prepareStoreFn: func(m *mock_plugin.MockStore) {
-				m.EXPECT().AddPostFilterResult("default", "pod1", "node1", "fakePostFilterPlugin", gomock.Any()).Do(func(_, _, _, _ string, nodeNames []string) {
-					sort.SliceStable(nodeNames, func(i, j int) bool {
-						return nodeNames[i] < nodeNames[j]
-					})
-					assert.Equal(t, []string{"node1", "node2"}, nodeNames)
-				})
-			},
-			originalPostFilterPlugin: fakePostFilterPlugin{},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: &framework.PostFilterResult{
-				NominatingInfo: &framework.NominatingInfo{
-					NominatedNodeName: "node1",
-				},
-			},
-			wantStatus: framework.NewStatus(framework.Success, "postfilter success"),
-		},
-		{
-			name:                     "success when it is not post filter plugin",
-			prepareStoreFn:           func(m *mock_plugin.MockStore) {},
-			originalPostFilterPlugin: nil, // don't have post filter plugin
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: nil,
-			wantStatus: nil,
-		},
-		{
-			name: "fail when original plugin return non-success",
-			prepareStoreFn: func(m *mock_plugin.MockStore) {
-				m.EXPECT().AddPostFilterResult("default", "pod1", "", "fakeMustFailWrappedPlugin", gomock.Any()).Do(func(_, _, _, _ string, nodeNames []string) {
-					sort.SliceStable(nodeNames, func(i, j int) bool {
-						return nodeNames[i] < nodeNames[j]
-					})
-					assert.Equal(t, []string{"node1", "node2"}, nodeNames)
-				})
-			},
-			originalPostFilterPlugin: fakeMustFailWrappedPlugin{},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: nil,
-			wantStatus: framework.AsStatus(errors.New("postFilter failed")),
-		},
-	}
-	for _, tt := range tests {
-		tt := tt
-		t.Run(tt.name, func(t *testing.T) {
-			t.Parallel()
-			ctrl := gomock.NewController(t)
-
-			s := mock_plugin.NewMockStore(ctrl)
-			tt.prepareStoreFn(s)
-			pl := &wrappedPlugin{
-				originalPostFilterPlugin: tt.originalPostFilterPlugin,
-				store:                    s,
-			}
-			gotResult, gotStatus := pl.PostFilter(context.Background(), nil, tt.args.pod, tt.args.filteredNodeStatusMap)
-			assert.Equal(t, tt.wantResult, gotResult)
-			assert.Equal(t, tt.wantStatus, gotStatus)
-		})
-	}
-}
-
-func Test_wrappedPlugin_PostFilter_WithPluginExtender(t *testing.T) {
-	t.Parallel()
-
-	type args struct {
-		pod                   *v1.Pod
-		filteredNodeStatusMap framework.NodeToStatusMap
-	}
-	tests := []struct {
-		name              string
-		prepareEachMockFn func(ctx context.Context, s *mock_plugin.MockStore, p *mock_plugin.MockPostFilterPlugin, fe *mock_plugin.MockPostFilterPluginExtender, as args)
-		args              args
-		wantResult        *framework.PostFilterResult
-		wantStatus        *framework.Status
-	}{
-		{
-			name: "return AfterPostFilter's results when PostFilter is successful",
-			prepareEachMockFn: func(ctx context.Context, s *mock_plugin.MockStore, p *mock_plugin.MockPostFilterPlugin, fe *mock_plugin.MockPostFilterPluginExtender, as args) {
-				success1 := framework.NewStatus(framework.Success, "BeforePostFilter returned")
-				success2 := framework.NewStatus(framework.Success, "PostFilter returned")
-				success3 := framework.NewStatus(framework.Success, "AfterPostFilter returned")
-				result1 := &framework.PostFilterResult{
-					NominatingInfo: &framework.NominatingInfo{
-						NominatedNodeName: "node1",
-					},
-				}
-				result2 := &framework.PostFilterResult{
-					NominatingInfo: &framework.NominatingInfo{
-						NominatedNodeName: "node2",
-					},
-				}
-				fe.EXPECT().BeforePostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(nil, success1)
-				p.EXPECT().PostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(result1, success2)
-				fe.EXPECT().AfterPostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap, result1, success2).Return(result2, success3)
-				p.EXPECT().Name().Return("fakePostFilterPlugin").AnyTimes()
-				// PostFilter sotres resultstore.PassedFilterMessage if it is successful.
-				s.EXPECT().AddPostFilterResult("default", "pod1", "node1", "fakePostFilterPlugin", gomock.Any()).Do(func(_, _, _, _ string, nodeNames []string) {
-					sort.SliceStable(nodeNames, func(i, j int) bool {
-						return nodeNames[i] < nodeNames[j]
-					})
-					assert.Equal(t, []string{"node1", "node2"}, nodeNames)
-				})
-			},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: &framework.PostFilterResult{
-				NominatingInfo: &framework.NominatingInfo{
-					NominatedNodeName: "node2",
-				},
-			},
-			wantStatus: framework.NewStatus(framework.Success, "AfterPostFilter returned"),
-		},
-		{
-			name: "return AfterPostFilter's results if Filter is fails",
-			prepareEachMockFn: func(ctx context.Context, s *mock_plugin.MockStore, p *mock_plugin.MockPostFilterPlugin, fe *mock_plugin.MockPostFilterPluginExtender, as args) {
-				success1 := framework.NewStatus(framework.Success, "BeforePostFilter returned")
-				failure := framework.NewStatus(framework.Error, "PostFilter returned")
-				success3 := framework.NewStatus(framework.Success, "AfterPostFilter returned")
-				result2 := &framework.PostFilterResult{
-					NominatingInfo: &framework.NominatingInfo{
-						NominatedNodeName: "node2",
-					},
-				}
-				fe.EXPECT().BeforePostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(nil, success1)
-				p.EXPECT().PostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(nil, failure)
-				fe.EXPECT().AfterPostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap, nil, failure).Return(result2, success3)
-				p.EXPECT().Name().Return("fakePostFilterPlugin").AnyTimes()
-				// Filter stores own message if it is successful.
-				s.EXPECT().AddPostFilterResult("default", "pod1", "", "fakePostFilterPlugin", gomock.Any()).Do(func(_, _, _, _ string, nodeNames []string) {
-					sort.SliceStable(nodeNames, func(i, j int) bool {
-						return nodeNames[i] < nodeNames[j]
-					})
-					assert.Equal(t, []string{"node1", "node2"}, nodeNames)
-				})
-			},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: &framework.PostFilterResult{
-				NominatingInfo: &framework.NominatingInfo{
-					NominatedNodeName: "node2",
-				},
-			},
-			wantStatus: framework.NewStatus(framework.Success, "AfterPostFilter returned"),
-		},
-		{
-			name: "return BeforeFilter's results when BeforeFilter is fails",
-			prepareEachMockFn: func(ctx context.Context, s *mock_plugin.MockStore, p *mock_plugin.MockPostFilterPlugin, fe *mock_plugin.MockPostFilterPluginExtender, as args) {
-				failure := framework.NewStatus(framework.Error, "BeforePostFilter returned")
-				fe.EXPECT().BeforePostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(nil, failure)
-				p.EXPECT().Name().Return("fakePostFilterPlugin").AnyTimes()
-			},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: nil,
-			wantStatus: framework.NewStatus(framework.Error, "BeforePostFilter returned"),
-		},
-		{
-			name: "return AfterFilter's results when AfterFilter is fails",
-			prepareEachMockFn: func(ctx context.Context, s *mock_plugin.MockStore, p *mock_plugin.MockPostFilterPlugin, fe *mock_plugin.MockPostFilterPluginExtender, as args) {
-				success1 := framework.NewStatus(framework.Success, "BeforePostFilter returned")
-				success2 := framework.NewStatus(framework.Success, "PostFilter returned")
-				result1 := &framework.PostFilterResult{
-					NominatingInfo: &framework.NominatingInfo{
-						NominatedNodeName: "node1",
-					},
-				}
-				failure := framework.NewStatus(framework.Error, "AfterPostFilter returned")
-				fe.EXPECT().BeforePostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(nil, success1)
-				p.EXPECT().PostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap).Return(result1, success2)
-				fe.EXPECT().AfterPostFilter(ctx, nil, as.pod, as.filteredNodeStatusMap, result1, success2).Return(nil, failure)
-				p.EXPECT().Name().Return("fakePostFilterPlugin").AnyTimes()
-				// PostFilter sotres resultstore.PassedFilterMessage if it is successful.
-				s.EXPECT().AddPostFilterResult("default", "pod1", "node1", "fakePostFilterPlugin", gomock.Any()).Do(func(_, _, _, _ string, nodeNames []string) {
-					sort.SliceStable(nodeNames, func(i, j int) bool {
-						return nodeNames[i] < nodeNames[j]
-					})
-					assert.Equal(t, []string{"node1", "node2"}, nodeNames)
-				})
-			},
-			args: args{
-				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
-				filteredNodeStatusMap: framework.NodeToStatusMap{
-					"node1": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-					"node2": framework.NewStatus(framework.UnschedulableAndUnresolvable, ""),
-				},
-			},
-			wantResult: nil,
-			wantStatus: framework.NewStatus(framework.Error, "AfterPostFilter returned"),
-		},
-	}
-	for _, tt := range tests {
-		tt := tt
-		t.Run(tt.name, func(t *testing.T) {
-			t.Parallel()
-			ctrl := gomock.NewController(t)
-			s := mock_plugin.NewMockStore(ctrl)
-			p := mock_plugin.NewMockPostFilterPlugin(ctrl)
-			fe := mock_plugin.NewMockPostFilterPluginExtender(ctrl)
-			e := &Extenders{
-				PostFilterPluginExtender: fe,
-			}
-			ctx := context.Background()
-			tt.prepareEachMockFn(ctx, s, p, fe, tt.args)
-			pl, ok := NewWrappedPlugin(s, p, WithExtendersOption(e)).(*wrappedPlugin)
-			if !ok { // should never happen
-				t.Fatalf("Assert to wrapped plugin: %v", ok)
-			}
-			gotResult, gotStatus := pl.PostFilter(context.Background(), nil, tt.args.pod, tt.args.filteredNodeStatusMap)
-			assert.Equal(t, tt.wantResult, gotResult)
-			assert.Equal(t, tt.wantStatus, gotStatus)
-		})
-	}
-}
-
 func Test_wrappedPlugin_Name(t *testing.T) {
 	t.Parallel()
 	type fields struct {
@@ -770,7 +490,7 @@ func Test_wrappedPlugin_NormalizeScore(t *testing.T) {
 		{
 			name:                "fail when original plugin return non-success",
 			prepareStoreFn:      func(m *mock_plugin.MockStore) {},
-			originalScorePlugin: fakeMustFailWrappedPlugin{},
+			originalScorePlugin: fakeMustFailFilterScorePlugin{},
 			args: args{
 				pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
 				scores: []framework.NodeScore{
@@ -1069,7 +789,7 @@ func Test_wrappedPlugin_Score(t *testing.T) {
 		{
 			name:                "fail when original plugin return non-success",
 			prepareStoreFn:      func(m *mock_plugin.MockStore) {},
-			originalScorePlugin: fakeMustFailWrappedPlugin{},
+			originalScorePlugin: fakeMustFailFilterScorePlugin{},
 			args: args{
 				pod:      &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Namespace: "default"}},
 				nodename: "node1",
@@ -1244,13 +964,6 @@ func (fakeFilterPlugin) Filter(ctx context.Context, state *framework.CycleState,
 	return nil
 }
 
-type fakePostFilterPlugin struct{}
-
-func (fakePostFilterPlugin) Name() string { return "fakePostFilterPlugin" }
-func (fakePostFilterPlugin) PostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	return &framework.PostFilterResult{NominatingInfo: &framework.NominatingInfo{NominatedNodeName: "node1"}}, framework.NewStatus(framework.Success, "postfilter success")
-}
-
 type fakeScorePlugin struct{}
 
 func (fakeScorePlugin) Name() string { return "fakeScorePlugin" }
@@ -1266,49 +979,41 @@ func (fakeScorePlugin) Score(ctx context.Context, state *framework.CycleState, p
 	return 1, nil
 }
 
-type fakeWrappedPlugin struct{}
+type fakeFilterScorePlugin struct{}
 
-func (fakeWrappedPlugin) Name() string { return "fakeWrappedPlugin" }
-func (fakeWrappedPlugin) Filter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
+func (fakeFilterScorePlugin) Name() string { return "fakeFilterScorePlugin" }
+func (fakeFilterScorePlugin) Filter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
 	return nil
 }
 
-func (fakeWrappedPlugin) PostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	return new(framework.PostFilterResult), nil
-}
-
-func (pl fakeWrappedPlugin) ScoreExtensions() framework.ScoreExtensions {
+func (pl fakeFilterScorePlugin) ScoreExtensions() framework.ScoreExtensions {
 	return pl
 }
 
-func (fakeWrappedPlugin) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
+func (fakeFilterScorePlugin) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
 	return nil
 }
 
-func (fakeWrappedPlugin) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
+func (fakeFilterScorePlugin) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
 	return 0, nil
 }
 
 // all method on this plugin will fail.
-type fakeMustFailWrappedPlugin struct{}
+type fakeMustFailFilterScorePlugin struct{}
 
-func (fakeMustFailWrappedPlugin) Name() string { return "fakeMustFailWrappedPlugin" }
-func (fakeMustFailWrappedPlugin) Filter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
+func (fakeMustFailFilterScorePlugin) Name() string { return "fakeMustFailFilterScorePlugin" }
+func (fakeMustFailFilterScorePlugin) Filter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status {
 	return framework.AsStatus(errors.New("filter failed"))
 }
 
-func (fakeMustFailWrappedPlugin) PostFilter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, filteredNodeStatusMap framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) {
-	return nil, framework.AsStatus(errors.New("postFilter failed"))
-}
-
-func (pl fakeMustFailWrappedPlugin) ScoreExtensions() framework.ScoreExtensions {
+func (pl fakeMustFailFilterScorePlugin) ScoreExtensions() framework.ScoreExtensions {
 	return pl
 }
 
-func (fakeMustFailWrappedPlugin) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
+func (fakeMustFailFilterScorePlugin) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status {
 	return framework.AsStatus(errors.New("normalize failed"))
 }
 
-func (fakeMustFailWrappedPlugin) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
+func (fakeMustFailFilterScorePlugin) Score(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) (int64, *framework.Status) {
 	return 0, framework.AsStatus(errors.New("score failed"))
 }
diff --git a/simulator/scheduler/scheduler_test.go b/simulator/scheduler/scheduler_test.go
index a75ec94b..0e2cf2d1 100644
--- a/simulator/scheduler/scheduler_test.go
+++ b/simulator/scheduler/scheduler_test.go
@@ -209,15 +209,6 @@ func Test_convertConfigurationForSimulator(t *testing.T) {
 							},
 						}
 					}
-					if cfg.Profiles[0].PluginConfig[i].Name == "DefaultPreemptionWrapped" {
-						cfg.Profiles[0].PluginConfig[i] = config.PluginConfig{
-							Name: "DefaultPreemptionWrapped",
-							Args: &config.DefaultPreemptionArgs{
-								MinCandidateNodesPercentage: minCandidateNodesPercentage,
-								MinCandidateNodesAbsolute:   minCandidateNodesAbsolute,
-							},
-						}
-					}
 				}
 
 				for i := range profile2.PluginConfig {
@@ -330,9 +321,6 @@ func configGeneratedFromDefault() config.KubeSchedulerConfiguration {
 		{Name: "PodTopologySpreadWrapped"},
 		{Name: "InterPodAffinityWrapped"},
 	}
-	cfg.Profiles[0].Plugins.PostFilter.Enabled = []v1beta2config.Plugin{
-		{Name: "DefaultPreemptionWrapped"},
-	}
 	cfg.Profiles[0].Plugins.Score.Enabled = []v1beta2config.Plugin{
 		{Name: "NodeResourcesBalancedAllocationWrapped", Weight: &weight1},
 		{Name: "ImageLocalityWrapped", Weight: &weight1},
@@ -372,10 +360,6 @@ func configGeneratedFromDefault() config.KubeSchedulerConfiguration {
 		Name: "VolumeBindingWrapped",
 		Args: pcMap["VolumeBinding"],
 	})
-	newpc = append(newpc, v1beta2config.PluginConfig{
-		Name: "DefaultPreemptionWrapped",
-		Args: pcMap["DefaultPreemption"],
-	})
 
 	cfg.Profiles[0].PluginConfig = append(cfg.Profiles[0].PluginConfig, newpc...)